为什么我的 crontab 没有运行

为什么我的 crontab 没有运行

我有这个cron

38 * * * * /bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\'''

我在不同的用户下有这个 cron,所以我切换用户来部署

sudo su deploy
crontab -e

然后我看到了我的 cron 然后我在 root 用户下查看日志

tail -n300 -f /var/log/syslog

我看到了我的 cron

Jul  5 11:38:01 ip-10-70-75-234 CRON[4971]: (deploy) CMD (/bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\''')
Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

但是 cron 要么没有运行,要么存在权限问题...当我在控制台中运行任务时,它运行良好,但在 cron 中却不行...知道我错过了什么吗

这是 Ubuntu 12.04 LTS

也许我可以将更详细的列表记录到某处以查看错误

答案1

CRON 通过本地邮件传递应用程序的输出(stdout、stderr)。Ubuntu 目前显然没有默认安装 MTA(邮件传输代理)。每当传递失败时,CRON 都会将通知打印到系统日志文件中:

Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

您可以安装 MTA,例如 postfix,仅供内部(本地)使用,例如

aptitude install postfix

在安装过程中,系统会询问您使用哪种默认配置。您应该选择该Local only配置。

此后,你可以使用以下方法找到 CRON 运行的应用程序的输出

tail -f /var/mail/<your_username>

当然,您也可以将日志输出写入专用日志文件或使用内置 shell 功能将输出通过管道/重定向到文件...

相关内容