为什么 cron 没有运行我的脚本?

为什么 cron 没有运行我的脚本?

现在我想使用备份每当gem 自动备份我的数据库。当我以添加的用户身份通过​​ ssh 连接服务器时运行备份执行-t my_backup,它运行良好。但是 cron 文件:

0 22 * * * /bin/bash -l -c 'backup perform -t my_backup'

无法在 22:00 运行。当我使用猫/等/crontab检查cron的配置文件,它是:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

/bin/bash/bin/sh不一样。是什么原因?怎么办?

答案1

我遇到的 cron 无法运行某些东西的最常见情况是,如果没有设置 MAILTO,如果命令产生输出,cron 将立即停止它。或者它可能尝试写入 stdout 并遇到 SIGPIPE。不确定确切的机制。

添加MAILTO=<your email address>并尝试一下。或者,通过附加>>/var/log/backup 2>&1到您已有的 cron 行,将 stdout 和 stderr 都写入日志文件。

答案2

crontab 是一个配置文件。为什么不编辑它并将 sh 改为 bash?

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

相关内容