Ubuntu

我的 cron 任務報告命令未找到

  • October 5, 2011

這是我的 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 文件的任何時候 gembash -l -c '...' ) ,但是除了 bash 之外,我得到了與上面相同的內容bash: bundle: command not found

CRON 作業的預設路徑通常是/usr/bin:/bin. bundle您的命令backup可能不在預設路徑中。一種解決方案是更改您的 crontab 並包含這些命令的完整路徑。

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

等等。一般來說,在 crontabs 中使用完整路徑是個好主意。如果需要,還可以在 crontab 中指定 PTH

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

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

是的,您可以在實際 crontab 記錄之前設置路徑,例如:

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

引用自:https://serverfault.com/questions/318638