使用 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或其他命令不在默认路径中,这也可以解决问题。

相关内容