Bash

cron 沒有執行 bash 命令

  • May 14, 2020

我正在使用whenever gem生成 cron 命令。我可以用 . 檢查這些命令crontab -l。生成的命令是

24 15 * * * /bin/bash -l -c 'cd /Users/Chris/Sites/covid_tracker && RAILS_ENV=development bundle exec rake countries:temp --silent >> log/cron.log 2>&1'

24 15 * * * /bin/bash -l -c 'echo '\''should see this in the log'\'' >> log/cron.log 2>&1'

第一個命令(bundle exec rake)執行,我可以在 cron.log 中看到輸出。但是,我在 cron.log 中看不到第二個命令 (echo) 的輸出。

我希望 echo 命令(以及我想使用的其他 bash 命令)在與bundle exec rake命令相同的目錄中執行,並且權限與我從該目錄發出命令一樣。我該怎麼做呢?

您可以為命令添加與第一個命令相同的前綴cd /Users/Chris/Sites/covid_tracker &&。這會在執行命令之前將工作目錄更改為該目錄。另一種選擇是在該目錄中創建一個 shell 腳本並執行它。例如:

24 15 * * * cd /Users/Chris/Sites/covid_tracker && ./runCron.sh >> log/cron.log 2>&1

runCron.sh:

#!/bin/bash -l

cd /Users/Chris/Sites/covid_tracker
RAILS_ENV=development bundle exec rake countries:temp --silent
echo "should see this in the log"

(我不確定你為什麼用 -l 參數指定了一個登錄 shell,rake 需要這個嗎?)

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