쉘 스크립트 문제입니다
글쓴이: yurina / 작성시간: 수, 2004/12/15 - 10:52오전
#! /bin/bash ulimit -n 65534 ulimit -c unlimited set a = 1 while($a) do status3=`/bin/ps -ef | /bin/grep Wait_Room | grep -v grep | /usr/bin/wc -l` status4=`/bin/ps -ef | /bin/grep NewChat | grep -v grep | /usr/bin/wc -l` if [ $status3 == 0 ]; then echo ''`date`' 대기실[Wait_Room] 서버가 죽어있다...다시살린다.' >> pmanager.txt /home/redoit/chat/bin/a.sh fi if [ $status4 == 0 ]; then echo ''`date`' 채팅[NewChat] 서버가 죽어있다...다시살린다.' >> pmanager.txt /home/redoit/chat/bin/a.sh fi sleep 10 done
이렇게 했는데요..예전에 이거와 똑같은 방식으로 프로세스를 살렸거든요..죽었을경우에
그런데 그냥 터미널에서 손으루 띄우면 잘뜨는데
이 스크립으를 nohup으로 띄워서 하면 수행이 안되요
thread의 signal을 받는부분에서 시그널을 받지 못합니다..
문제는 기존의 소스도 같은 구조라서...갑자기 안된이후로
기존의 스크립트로 제대로 되지 않더라구요...
무엇이 문제인지 알려주세요~
Forums:
위 스크립트를 데몬처럼 돌리고 싶다는 얘기죠?#nohup bash
위 스크립트를 데몬처럼 돌리고 싶다는 얘기죠?
#nohup bash 모니터스크립트
아뇨
데몬처럼 돌렸는데...스크립트에서 살리는 프로세스가 제대로 뜨지를 않습니다.
프로그램내에서 처음 스레드를 정해진 수만 큼 띄우는데요
for문을 돌면서 하나씩 띄우는데 signal_wait에서 signal을
받지 못하여 계속 대기하고 다음으로 넘어가지않아요
분명 signal을 보내는데
그런데 더 신기한거 스크립트에서는 프로세스가 제대로 뜨지 않는데 직접 터미널에서 실행명령을 하면 제대로 올라간다는...;;;
몇가지 이해가 안되는 부분이 있습니다.
"status3=`/bin/ps -ef | /bin/grep Wait_Room | grep -v grep | /usr/bin/wc -l`" 이부분은 status3 에 입력되는 값이 " 0" 이런식으로 입력된다. 즉 "0" 이 아닙니다.
그리고 위와 같은 경우에는
"$status3=`/bin/ps -ef | /bin/grep -c [W]ait_Room`" 과 같은 방식을 사용하시는 것이 좋습니다.
[ $status3 == 0 ] 에 대해서도 약간의 생각이 있지만 선호의 문제이기 때문에 생략하겠습니다.
Early Exit 을 만들어서,cron 으로 돌리는건 어떨까요?
Early Exit 을 만들어서,
cron 으로 돌리는건 어떨까요?
삽질의 대마왕...
댓글 달기