ruby-on-rails – 如何调试cron没有执行给定脚本的问题 – 或其他?

ruby-on-rails – 如何调试cron没有执行给定脚本的问题 – 或其他?,第1张

概述我有一个Rails脚本,我想每天运行.我知道有很多方法,并且有些人不赞成使用cron’d脚本/跑步者方法,但它似乎满足了我的需求. 但是,我的脚本没有按计划执行. 我的应用程序位于/ data / myapp / current,脚本位于script / myscript.rb中.我可以手动运行它而没有问题,因为root: /data/myapp/current/script/runner -e 我有一个Rails脚本,我想每天运行.我知道有很多方法,并且有些人不赞成使用cron’d脚本/跑步者方法,但它似乎满足了我的需求.

但是,我的脚本没有按计划执行.

我的应用程序位于/ data / myapp / current,脚本位于script / myscript.rb中.我可以手动运行它而没有问题,因为root:

/data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb

当我这样做时,特殊日志文件(log / myscript.log)按预期记录到:

Tue Mar 03 13:16:00 -0500 2009 Starting to execute script......Tue Mar 03 13:19:08 -0500 2009 Finished executing script in 188.075028 seconds

我每天早上凌晨4点开始用cron运行. root的crontab:

$crontab -l0 4 * * * /data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb

事实上,它看起来像今天早上一样尝试运行!

$tail -100 /var/log/cron...Mar  2 04:00:01 hostname crond[8894]: (root) CMD (/data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb)...Mar  3 04:00:01 hostname crond[22398]: (root) CMD (/data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb)...

但是,我的日志文件中没有条目,并且应该更新的数据尚未更新.日志文件权限(作为测试)甚至设置为全局可写:

$ls -lhtotal 19M...-rw-rw-rw- 1 myuser apps 7.4K Mar  3 13:19 myscript.log...

我在CentOS 5上运行.

所以我的问题是……

>我还能在哪里查找调试信息?
>这可能是SElinux问题吗?是否有可以设置或更改的安全上下文可以解决此错误?

谢谢!

更新

感谢Paul和Luke.它确实是一个环境问题,并将stderr捕获到日志文件使我能够找到错误.

$cat cron.log /usr/bin/env: ruby: No such file or directory$head /data/myapp/current/script/runner #!/usr/bin/env rubyrequire file.dirname(__file__) + '/../config/boot'require 'commands/runner'

将特定的Ruby可执行文件添加到命令中就可以了:

$crontab -l0 4 * * * /usr/local/bin/ruby /data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb >> /data/myapp/current/log/cron.log 2>&1
解决方法 默认情况下,cron将其输出邮寄给运行它的用户.你可以看看那里.

重定向cron运行的脚本输出非常有用,这样您就可以在日志文件中查看结果,而不是在服务器上查看随机用户的本地邮件.

以下是将stdout和stderr重定向到日志文件的方法:

cd /home/deploy/your_app/current; script/runner -e production ./script/my_cron_job.rb >> /home/deploy/your_app/current/log/my_file.log 2>&1

>>将stdout重定向到文件,并且2>& 1将stderr重定向到stdout,以便记录任何错误消息.

完成此 *** 作后,您将能够检查错误消息以查看实际发生的情况.

总结

以上是内存溢出为你收集整理的ruby-on-rails – 如何调试cron没有执行给定脚本的问题 – 或其他?全部内容,希望文章能够帮你解决ruby-on-rails – 如何调试cron没有执行给定脚本的问题 – 或其他?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1291532.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存