셸 스 크 립 트 로 프로 세 스 가 존재 하지 않 으 면 시작 하 는 인 스 턴 스 가 있 는 지 모니터링 합 니 다.

셸 스 크 립 트 로 프로 세 스 가 존재 하지 않 으 면 시작 하 는 인 스 턴 스 가 있 는 지 확인 하고 코드 를 먼저 올 립 니 다.

#!/bin/sh
ps -fe|grep processString |grep -v grep
if [ $? -ne 0 ]
then
echo "start process....."
else
echo "runing....."
fi
#####
processString 은 프로 세 스 특징 문자열 을 표시 합 니 다.유일한 프로 세 스 의 특징 문자열 을 조회 할 수 있 습 니 다.
존재 하 다
$? -원 0 은 존재 하지 않 습 니 다.$?-존재
정시 실행:
crontab -e
0 04,12,21 * * * /bin/bash /home/mysh/monitorprocess.sh
매일 저녁 4 시,낮 12 시,밤 21 시 에 검 측 합 니 다.
0 4,12 * * *
시간 과 월 주 를 나누다.
*04,12***이것 은 4 시 와 12 시 에 1 분 에 한 번 씩 실행 하 는 것 을 말 합 니 다.
0 4,12**4 시 12 시 0 분 에 한번 실행
확장 지식:
셸 의 if else 문법 및 크 고 작은 논리 표현 식:
if ....; then
  ....
elif ....; then
  ....
else
  ....
fi
대부분의 경우 조건 을 테스트 하기 위해 테스트 명령 을 사용 할 수 있다.예 를 들 어 문자열 을 비교 하고 파일 이 존재 하 는 지,읽 을 수 있 는 지 등 을 판단 할 수 있 습 니 다.보통'[]'로 조건 테스트 를 표시 합 니 다.이곳 의 빈 칸 을 주의 하 는 것 이 매우 중요 하 다.네모 난 괄호 의 빈 칸 을 확보 해 야 한다.
[-f"somefile"]:파일 인지 아 닌 지 판단
[-x"/bin/ls"]:/bin/ls 가 존재 하고 실행 가능 한 권한 이 있 는 지 판단 합 니 다.
[-n"$var"]:$var 변수 에 값 이 있 는 지 판단 합 니 다.
["$a"="$b"]:$a 와$b 가 같은 지 판단 합 니 다.          -r file 사용 자 는 진짜 로 읽 을 수 있 습 니 다.
-w file 사용 자 는 진짜 로 쓸 수 있 습 니 다.
-x file 사용 자 는 진짜 로 실행 할 수 있 습 니 다.
-f file 파일 은 정규 파일 입 니 다.
-d file 파일 은 디 렉 터 리 가 진짜 입 니 다.
-c file 파일 은 문자 입 니 다.특수 파일 은 진짜 입 니 다.
-b file 파일 은 블록 특수 파일 이 진짜 입 니 다.
-s file 파일 크기 가 0 이 아 닐 때 진짜 입 니 다.
-t file 파일 설명자(기본 값 1)가 지정 한 장치 가 터미널 일 때 진짜 입 니 다.
\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\##\#\#\#\##\#\##\#\##\##\##\###\###\#조건 선택 이 포 함 된 셸 스 크 립 트
    변 수 를 포함 하지 않 는 작업 에 대해 간단 한 셸 스 크 립 트 는 일반적으로 감당 할 수 있 습 니 다.그러나 일부 의사 결정 임 무 를 수행 할 때 는 if/then 의 조건 판단 이 필요 하 다.셸 스 크 립 트 프로 그래 밍 은 비교 연산,파일 존재 여부 판단 등 을 포함 하여 이러한 연산 을 지원 합 니 다.기본 적 인 if 조건 명령 옵션 은 다음 과 같 습 니 다:-eq―두 매개 변수 가 같은 지 비교 합 니 다(예 를 들 어 if[2 Ceq 5])
-ne―두 매개 변수 가 같 지 않 은 지 비교
-lt―매개 변수 1 이 매개 변수 2 보다 작 을 지 여부
-le―매개 변수 1 이 매개 변수 2 보다 작 을 지 여부
-lt―매개 변수 1 이 매개 변수 2 보다 큰 지 여부
-ge―매개 변수 1 이 매개 변수 2 보다 큰 지 여부
-f―어떤 파일 이 존재 하 는 지 확인 합 니 다(예 를 들 어 if[-f"filename"])
-d--디 렉 터 리 가 존재 하 는 지 확인
거의 모든 판단 은 이런 비교 연산 자로 이 루어 질 수 있다.스 크 립 트 에서 자주 사용 하 는-f 명령 옵션 은 파일 을 실행 하기 전에 존재 하 는 지 확인 합 니 다.
파일 존재 여부 판단

#!/bin/sh
today=`date -d yesterday +%y%m%d`
file="apache_$today.tar.gz"
cd /home/chenshuo/shell
if [ -f "$file" ];then
echo "OK"
else
echo "error $file" >error.log
mail -s "fail backup from test" [email protected] <error.log
fi
셸 기본 명령
(1)ps aux    시스템 의 모든 프로 세 스 를 한 줄 씩 표시 합 니 다.
(2)grep"abc"는 표준 입력 에서 문자 흐름 을 읽 고 문자열"abc"를 포함 하 는 줄 을 출력 합 니 다.
(3)grep -v "acb"   표준 입력 에서 문자 흐름 을 읽 습 니 다.출력 은 문자열'abc'줄 을 포함 하지 않 습 니 다.
(4)wc -l        표준 입력 에서 문자 흐름 읽 기,출력 줄 수
예 를 들 어 프로 세 스 httpd 가 존재 하 는 지 확인 해 야 합 니 다.작업 절 차 는 다음 과 같 습 니 다.
(1)시스템 의 모든 프로 세 스 읽 기
(2)지정 한 프로 세 스 이름 을 포함 하 는 정보 가 존재 하 는 지 판단 합 니 다.
파이프 연결 을 통 해 명령 은 다음 과 같 습 니 다.
ps axu      |    grep "httpd"           |      grep -v "grep"    |      wc -l
모든 프로 세 스-->"httpd"를 포함 하 는 줄 가 져 오기-->grep 프로 세 스 정보 삭제-->출력 마지막 줄 수
명령 의 실행 결과 가 0 인지 판단 함으로써 프로 세 스 가 존재 하 는 지 알 수 있 습 니 다.
스 크 립 트 는 다음 과 같 습 니 다:

#!/bin/sh
while true;do
    count=`ps -ef|grep http|grep -v grep`
    if [ "$?" != "0" ];then
echo  ">>>>no httpd,run it"
service httpd start
else
echo ">>>>httpd is runing..."
fi
sleep 5
done

좋은 웹페이지 즐겨찾기