콘솔에서 실행하면 잘 되는데 crontab에 등록하여 실행하면 안되는데 뭐가 문제인가요?

pherold의 이미지

다음과 같이 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="*"
-----------------------------------------------------------------------------------

bigeye의 이미지

crontab의 경우 path 문제일 가능성이 큽니다.

커맨드는 fullpath로 적어주셔보시고(/usr/bin/...)

어떤 계정으로 실행되고있는가도 테스트해보셔서(whoami) 그 계정에서 명령 실행시 정상적으로 작동하는가도 체크해주시면 좋습니다.

또한 이것저것 안된다면 HOME 환경변수가 다르게 먹어서 그럴 가능성도 있는데요

crontab에서,

HOME=/home/username /usr/bin/...

라는 명령으로 시도해보세요.

홈 설정하는 방법이

이게 최선의방법인지는 확실친 않네요..

pherold의 이미지

환경 변수들을 추가해 보다가 다 필요없고 다음과 같이 하면 되는군요.

sip-daemon 파일에서

#!/bin/bash

source ~root/.bashrc

를 추가해 주면 됩니다.

bigeye 님 감사합니다.