Bash
cron 沒有執行 bash 命令
我正在使用
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 需要這個嗎?)