cron 不运行 bash 命令

cron 不运行 bash 命令

我正在使用whenever 宝石生成 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,并且权限与我从该目录发出命令时相同。我该怎么做?

答案1

您可以在命令前加上与第一个命令相同的前缀cd /Users/Chris/Sites/covid_tracker &&。这会在运行命令之前将工作目录更改为该目录。另一种选择是在该目录中创建一个 shell 脚本并运行它。例如:

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

运行Cron.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 所必需的?)

相关内容