cron으로 실행할 때 스크립트가 해야 할 일을 수행하지 않습니다.

cron으로 실행할 때 스크립트가 해야 할 일을 수행하지 않습니다.

문제가 생겼어요. 스크립트 실행이 예약되어 있지만 시간이 되면 아무 일도 일어나지 않습니다.

 #!/bin/sh
 TIME=`date +"%d-%m-%Y"`
 cd /var/www/flyer/data/www/
 mysqldump -u root -ppasswd --databases db_name --create-options --default- character-set=utf8 --result-file=dump.sql
 FILENAME="backup_$TIME.tar.gz"
 tar -cpzf ../backups/$FILENAME somefolder dump.sql  
 rm dump.sql
 chown flyer:flyer ../backups/$FILENAME
 chmod 666 ../backups/$FILENAME

ssh에서 /root/backup.sh로 직접 스크립트를 실행하면 모든 것이 예상대로 작동합니다. 그러나 cron으로 실행하면 아무 일도 일어나지 않습니다. grep CRON /var/log/syslog실행되었음을 보여줍니다(Dec 19 01:21:01 vps-8463 /USR/SBIN/CRON[1299]: (root) CMD (sh /root/backup.sh >/dev/null 2>&1) ). 아카이브가 생성됩니다. Cron 작업: 21 1 * * * sh /root/backup.sh >/dev/null 2>&1
왜 이런 일이 발생하는지 아시나요?

답변1

내 첫 번째 추측은 스크립트가 cron에 의해 실행될 때 mysqldump 명령이 경로에 없다는 것입니다. 노력하다:

which mysqldump

해당 출력을 가져와 전체 경로를 명령 이름으로 대체합니다. 예: /usr/bin/mysqldump대신에mysqldump

또는 로컬 PATH 변수에 무언가를 추가하세요. 예: PATH=$PATH:/usr/bin

, 또는 기타 명령이 기본 경로에 없는 경우 tar에도 문제가 해결됩니다 .chown

관련 정보