쉘스크립트에서...
글쓴이: 시로아마다 / 작성시간: 금, 2004/11/26 - 10:31오전
리눅스서버에서 특정한 프로세스가 살아있는지 검색후..
만약 죽어있다면 해당프로세스를
다시 실행시키는 쉘스크립트를 짰는데요...
#!/bin/sh
temp1=$(ps -ef | grep 해당프로세스| awk '{print $8}' | sed /grep/d | sed -n /해당프로세스/p
temp2=해당프로세스
if ["$temp1"!="$temp2"];then
해당프로세스
fi
이런식으로 했는데 잘안되서 그러는데...
어디부분이 잘못됐는지 다른방법은 있는지 알고싶습니다...
즐거운하루되시길...^^
Forums:
음...
우선 올려주신 프로그램으로 실행 할경우 되는것으로 알고 있습니다.
저도 그러한 방법으로 process를 monitoring 하고 있습니다.
저도 다른 방법이 잇는지 궁금하네요
꼭 ps -ef를 사용하여 process를 체크하는지
다른 방법이 없는지 궁금하네요..
woojhs님 저 스크립트를 실행하면 해당process가 살아있어도
woojhs님
저 스크립트를 실행하면 해당process가 살아있어도
실행하던데요...
즉 ps -ef | grep 해당프로세스 했을경우 2개의 해당프로세스가 떠있었습니다...
그럴경우 crontab에서 5분단위로 체크시 계속해서 같은 process가 계속 뜨게되는 현상이 발생합니다...
ps로 프로세스를 검색하는것 보다는 pidof로 프로세스를 검색하
ps로 프로세스를 검색하는것 보다는
pidof로 프로세스를 검색하는게 좀 더 깔끔하지 않을까
라는 개인적인 생각입니다~~ ^^;
아마도..
아마도 $temp1과 $temp2가 일치 하지않을 것 같다는 생각이 드는군요
방금 제가 확인한 결과 잘 되는데요..
한번 echo 를 찍어서 확인해 보는 방법이 좋을 듯 싶습니다.
그리고 psdof가 무엇인지 설명좀 해주세요.
sh에서 그러한 command 가 있나요?
if [ "조건" ] 이부분에서 [ 과 "조건", ] 과 "조건"사이를
if [ "조건" ] 이부분에서 [ 과 "조건", ] 과 "조건"사이를 한칸씩 띄우니깐 잘되더군요...
if [ -z "조건" ]으로 대체시에도 잘되구요...
무지했던 절 용서해주세요...^^;;
hdsong님 pidof가 무엇인지 설명좀해주세요...^^
그리고 쉘 프로그래밍관련 책 추천바랍니다...
암튼 답변해주신분들 감사드립니다...
행복한 주말되세요~~~^^
[code:1]/sbin/pidof 프로세스이름[/code:1]
해당 프로세스가 살아있으면 pid를 리턴, 그렇지 않으면 (null)입니다. 대개 이용자의 $PATH에 /sbin이 포함되어 있지 않을 것이므로 저렇게 전체 경로를 다 쓰는게 건강에 좋습니다. 자세한 건 매뉴얼을 참고하세요 :)
댓글 달기