你的日志在哪里?
您将输出文件放在最高目录级别:
$ cd /log
要查看文件是否存在以及其中是否有数据:
$ ls -la cron_log.log
如果需要创建日志文件:
$ touch cron_log.log
为您自己的本地调试开放权限(请勿在生产中执行此操作!)
$ chmod +rw cron_log.log
你的命令正在运行吗?
要手动运行该命令以查明它是否按您的预期工作:
$ /bin/bash -l -c 'echo "hello" >> /log/cron_log.log 2>&1'
为了提高安全性并保护您的路径,请使用完整路径:
wrong: command 'echo "hello"'
right: command '/bin/echo "hello"'
要查找命令完整路径:
$ which echo
要验证 cron 是否按预期运行:
$ sudo grep CRON /var/log/syslog
grep 结果应该包含类似这样的行:
Jan 1 12:00:00 example.com CRON[123]: (root) CMD (... your command here ...)
你用的是 Mac 吗?
如果您没有在系统日志中看到输出,并且您使用的是 Mac,您可能需要阅读有关 Mac OSX 从cron
to launchd
.
请参阅 cron plist (/System/Library/LaunchDaemons/com.vix.cron.plist) 并使用 stdout/stderr 路径来调试 cron 本身。我不记得 launchctl 卸载和 launchctl 加载 plist 是否足够,或者因为它是系统守护进程(如果您必须完全重新启动)。 (看lion的cron日志文件在哪里 https://apple.stackexchange.com/questions/38861/where-is-the-cron-log-file-in-lion)
如何相对于 Rails 进行日志记录?
要将日志置于与 Rails 应用程序相关的位置,请省略前导斜杠(通常将其称为 cron.log)
set :output, "log/cron.log"
要将日志放入特定的完全限定目录中:
set :output, '/abc/def/ghi/log/cron.log'
每当 wiki 有一些关于重定向输出的好例子:
https://github.com/javan/whenever/wiki/Output-redirection-aka-logging-your-cron-jobs https://github.com/javan/whenever/wiki/Output-redirection-aka-logging-your-cron-jobs
例子:
every 3.hours do
runner "MyModel.some_process", :output => 'cron.log'
rake "my:rake:task", :output => {:error => 'error.log', :standard => 'cron.log'}
command "/usr/bin/cmd"
end