Crontab에 등록된 shell 을 통한 데몬 실행이 되질 않습니다...도와주세요..
일단 목적부터 기술하자면 한 프로세스가 꽤나 자주 뻗어버리는 현상이 있는관계로
프로세스의 상태를 체크해서 문제가 있다면 종료하고 다시 시작하는 shell을 작성했습니다.
분명 쉘만 독립적으로 실행해보면 문제없이 잘 동작하고 실행됩니다. 하지만..크론에 올려서 하면 실행이 안되네여..
프로세스를 새로 뛰우는 과정에 뭔가 제가 모르는 방법이 있을거같은데...
cron root에 등록했으며, 구문은 별거 없는 평범한 구문이고
* * * * * /home/batch/script/common/exec_sqlrelay_check.sh mysql 10 > /home/log/sqlrelay_check.log 2>&1
shell에서 문제가 발생하는 구문만을 발췌한 부분은 다음과 같습니다.
nForkedListener=`$sSqlrBinPath/sqlr-status -id mysql3 | grep 'Forked Listeners:' | gawk '{print \$3}'`
if [ -z $nForkedListener ]; then
`nohup /usr/local/firstworks/bin/sqlr-start -id mysql3 > /dev/null 2>&1 &`
fi
문제가 된 부분은
nohup /usr/local/firstworks/bin/sqlr-start -id mysql3 > /dev/null 2>&1 &
이 부분에서 실행이 된거같으면서도 일단 쉘이 끝남과 동시에 종료되버리는거같습니다. 아니면 쉘이 끝나기 전이던지..
쉽게말해서 그냥 실행이 되질 않습니다...
혹시 고수님들의 도움을 받을 수 있을까요..
쉘 안에서 새로운 데몬 프로세스를 띄운다던가 하는 별도의 방법이 있나요..?..
상관은 없지만 nohup 구문을 백틱으로 감싼는건
상관은 없지만 nohup 구문을 백틱으로 감싼는건 하지 않아도 됩니다.
커맨드라인과 cron에서의 환경변수의 차이를 살펴보세요.
---
http://coolengineer.com
답변감사드립니다.
알고는 있지만 혹시나 싶어서 앞뒤로 다 써보고..
nohup만 써보고
&만 써보고 별 수를 다 해봤는데 안되서 답답해서 저렇게 써놨었네요...
결국 해결하진 못했습니다...미제가 남아서 씁쓸하네요..
환경변수는...일단 실행자체가 안된게 아니다보니...ㅠㅠ
답변감사드립니다.
환경변수가 언급된건.. 1)
환경변수가 언급된건..
1) sqlr-status
2) /usr/local/firstworks/bin/sqlr-start
3) nohup
4) 혹은 그 안에서 실행되는 무언가
때문입니다.
1번의 경우에는 경로가 없으니 생략하고 2번의 경우 커맨드라인에는 /usr/local/firstworks/bin 가 환경변수에 존재하고, crond 에는 없을수도 있고요.
3번은 가능성은 낮지만 절대경로가 필요할 수도 있고요
그리고
"
nohup /usr/local/firstworks/bin/sqlr-start -id mysql3 > /dev/null 2>&1 &
이 부분에서 실행이 된거같으면서도 일단 쉘이 끝남과 동시에 종료되버리는거같습니다.
"
확실히 실행되었는지 안되었는지 체크되는게 좋아보이네요.
PS
sqlr 관련 커맨드를 /usr/bin/ 으로 옮겨서 테스트 해보시는것도 의미 있을듯. (가능성이 높아보이네요)
소곤소곤
댓글 달기