크론탭에 프로세스가 죽으면 재기동하는 쉘을 올려놨는데 왜 그런지 안돕니다.

smreo의 이미지

인터넷을 뒤져서 아래와 같이 했습니다.
크론탭에 등록해서 run_flask.sh가 없으면 재기동시키려 했는데 이상하게 안돌읍니다.
코멘트 처리한 test.sh는 돕니다.
특별히 권한이나 환경변수도 없는 것 같은데 왜 test는 되고 flask는 안될까요?

#!/bin/bash 
pid=`ps -ef | grep "run_flask.sh" | grep -v 'grep' | awk '{print $2}'`
# pid=`ps -ef | grep "test.sh" | grep -v 'grep' | awk '{print $2}'`  
#  list out 2nd field 
 
if [ -z $pid ]; then
#   sudo /home/hanam/test.sh
   sudo /home/hanam/run_flask.sh  
#  Photolog start 
fi 

test.sh는 아래와 같이 만들었습니다.

#!/bin/bash
echo ...
NOW=$(date +"%a %y.%m.%d %H:%M:%S.%3N")
echo $NOW "Test.sh"

run_flask.sh는 아래와 같습니다.

#Kill flask app running already
fuser -k 5000/tcp
 
#Start new flask app
cd /home/hanam/env/bin
python3 /home/hanam/photolog/runserver.py 

그런데 이건 안돕니다.
고수들의 답변을 부탁드리겠습니다.
수고하세요. 끝.

김정균의 이미지

실행 결과를 파일에 저장해 보세요. 아마 제대로 동작 하지 않았다면 에러 내용이 저장 될 겁니다.

if [ -z $pid ]; then
   sudo /home/hanam/run_flask.sh >& /tmp/run_flask.log
fi 

그리고, cronjob 을 작성 할 때는 PATH 환경 변수를 정의해 주거나 또는 명령어를 full path로 작성하는 것을 권장 합니다. 님이 쉘에서 실행하는 환경과 많이 다릅니다.

마지막으로, cronjob에서 sudo를 사용하는 이유는 user cronjob 이기 때문인가요? system cronjob 이라면 그냥 root 권한으로 동작시키면 될 것 같아서 입니다.