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 功能将日志输出写入专用日志文件或管道/重定向输出到文件...
归档时间: |
|
查看次数: |
49563 次 |
最近记录: |