콘솔에서 실행하면 잘 되는데 crontab에 등록하여 실행하면 안되는데 뭐가 문제인가요?
다음과 같이 crontab에 5분 단위로 cron-hourly 아래의 파일인 sip-daemon이 실행되도록 함.
콘솔에서 직접 sip-daemon 파일을 실행하면 sipd가 잘 실행됩니다.
그런데 cron으로 실행하려면 sipd가 실행되지 안는데 왜 그런것인가요?
--------------------------------------------------------------------------------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
*/05 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
--------------------------------------------------------------------------------
아래 sip-daemon 파일은 /etc/cron.hourly 아래 있음
----------------------------------------------------------------------------------
#!/bin/bash
proc=`ps ax | grep -v grep | grep -v defunct | grep sipd | awk '{print $1}'`
if [ "$proc" = "" ] ; then
echo "start sip daemon"
/usr/local/cqms/startSIP 9990 9990 125.61.89.2 5060 >/dev/null &
fi
-----------------------------------------------------------------------------------
startSIP 쉘 파일
-----------------------------------------------------------------------------------
#!/bin/bash
/usr/local/bin/sipd \
--log-level=4 \
--app-log-level=1 \
--log-file=/tmp/sip.log \
--registrar=sip:192.168.8.10:$4 \
--id=sip:$1@proxy.com:$4 \
--username=$1 \
--password=$2 \
--realm="*"
-----------------------------------------------------------------------------------
crontab의 경우 path 문제일 가능성이
crontab의 경우 path 문제일 가능성이 큽니다.
커맨드는 fullpath로 적어주셔보시고(/usr/bin/...)
어떤 계정으로 실행되고있는가도 테스트해보셔서(whoami) 그 계정에서 명령 실행시 정상적으로 작동하는가도 체크해주시면 좋습니다.
또한 이것저것 안된다면 HOME 환경변수가 다르게 먹어서 그럴 가능성도 있는데요
crontab에서,
HOME=/home/username /usr/bin/...
라는 명령으로 시도해보세요.
홈 설정하는 방법이
이게 최선의방법인지는 확실친 않네요..
[완료] 여기저기 찾아보다가 ....
환경 변수들을 추가해 보다가 다 필요없고 다음과 같이 하면 되는군요.
sip-daemon 파일에서
#!/bin/bash
source ~root/.bashrc
를 추가해 주면 됩니다.
bigeye 님 감사합니다.
댓글 달기