现在我想使用备份和每当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