为什么我的 crontab 没有运行

Mat*_*iby 14 cron permissions ubuntu ubuntu-12.04

我有这个 cron

38 * * * * /bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\'''
Run Code Online (Sandbox Code Playgroud)

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

sudo su deploy
crontab -e
Run Code Online (Sandbox Code Playgroud)

然后我看到我的 cron 然后我在 root 用户下跟踪日志

tail -n300 -f /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

我看到我的 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)
Run Code Online (Sandbox Code Playgroud)

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

这是 Ubuntu 12.04 LTS

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

moo*_*eep 21

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)
Run Code Online (Sandbox Code Playgroud)

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

aptitude install postfix
Run Code Online (Sandbox Code Playgroud)

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

此后,您可以使用 CRON 找到运行的应用程序的输出

tail -f /var/mail/<your_username>
Run Code Online (Sandbox Code Playgroud)

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