我的 cron 任务报告命令未找到

我的 cron 任务报告命令未找到

这是我的 crontab 文件的内容:

0 0,6,12,18 * * * cd /var/www/app/current && backup perform --trigger db_backup --config_file config/backup.rb --data-path db --log-path log --tmp-path tmp >> /var/www/app/current/log/cron.log 2>&1

0 3 * * * cd /var/www/app/current && RAILS_ENV=production bundle exec rake runs:populate --silent >> /var/www/app/current/log/cron.log 2>&1

59 23 * * * cd /var/www/app/current && RAILS_ENV=production bundle exec rake runs:log --silent >> /var/www/app/current/log/cron.log 2>&1

如果我以 crontab 所有者的身份手动运行其中任何一个,它们都可以正常工作,但该cron.log文件仅包含:

/bin/sh: bundle: not found
/bin/sh: backup: not found
/bin/sh: bundle: not found

我尝试将每一个包装在下面(默认情况下每当宝石我用它来管理我的 cron 文件),bash -l -c '...'但除了 bash 之外,我得到了与上面相同的结果bash: bundle: command not found

答案1

CRON 作业的默认 PATH 通常是/usr/bin:/bin。您的命令bundlebackup可能不在默认路径中。一种解决方案是更改您的 crontab 并包含这些命令的完整路径。

0 0,6,12,18 * * * cd /var/www/app/current && /path/to/backup ...

等等。一般来说,在 crontab 中使用完整路径是个好主意。如果您愿意,也可以在 crontab 中指定 PTH

PATH=/bin:/usr/bin:/path/to/your/program

0 0,6,12,18 * * * cd /var/www/app/current && backup ...

答案2

是的,您可以在实际的 crontab 记录之前设置路径,例如:

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:
0 3 * * * run-cron-job

相关内容