参见英文答案 >
Why is my crontab not working,and how can I troubleshoot it?5个
我正在尝试让我的crontab为rails应用程序运行一些rake任务,但似乎总是退出状态为127,在我的syslog中它看起来像这样:
我正在尝试让我的crontab为rails应用程序运行一些rake任务,但似乎总是退出状态为127,在我的syslog中它看起来像这样:
Jun 7 05:10:01 ip-10-170-122-226 CRON[15664]: (deploy) CMD (cd /home/deploy/apps/dashboard/current && bundle exec rake some:task Jun 7 05:10:01 ip-10-170-122-226 CRON[15662]: (CRON) error (grandchild #15664 Failed with exit status 127)
似乎127就像“命令未找到错误”之类的东西,所以我已经使用了完整路径到bin,即使像bundle是/usr/local / bin / bundle,任务在cron之外运行正常运行它在壳中.
我的crontab很简单:
*/10 * * * * cd /home/deploy/apps/dashboard/current && bundle exec rake some:task
也许我的crontab需要#!/usr/bin或顶部的东西?
更新
要测试它,它似乎运行这很好:
*/1 * * * * /usr/bin/touch /home/deploy/cron-test.txt
所以这让我认为它就像一个PATH可变的东西,但我不知道如何在那里获得正确的路径变量,任何想法?
当bash找不到命令时,退出状态127由bash设置(见
Advanced Bash Scripting).
为了使调试更容易,您应该将所有内容放在脚本中.确保脚本是可执行的,并以解释器名称和路径开头:
为了使调试更容易,您应该将所有内容放在脚本中.确保脚本是可执行的,并以解释器名称和路径开头:
#! /bin/bash cd /.../ && next_command
您应该将crontab行类似于:
*/10 * * * * cd /home/deploy/apps/dashboard/current && /PATH_TO/bundle exec rake some:task
或者在crontab中设置PATH变量:
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/PATH_TO_bundle */10 * * * * cd /home/deploy/apps/dashboard/current && /PATH_TO/bundle exec rake some:task