你的日志在哪里?
您将输出文件放在最高目录级别:
$ 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 上吗?
如果您没有在 syslog 中看到输出,而您使用的是 Mac,则可能需要阅读有关 Mac OSXcron
从launchd
.
请参阅 cron plist (/System/Library/LaunchDaemons/com.vix.cron.plist) 并使用 stdout/stderr 路径来调试 cron 本身。我不记得launchctl卸载和launchctl加载plist是否足够,或者如果你必须完全重新启动它是一个系统守护进程。(查看lion 中的 cron 日志文件在哪里)
如何相对于 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
例子:
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