使用 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或其他命令不在預設路徑中,這也將解決問題。

相關內容