我想在运行 Lion 的 Macbook Pro 上设置一个 crontab。我运行常规任务crontab -e
并提供一个快速任务来查看一切是否正常 ---
*/10 * * * * wget -O - -q -t 1 http://site.local/cron.php
10 分钟后,我看到系统发来一些“邮件”,内容是 ---
/bin/sh: wget: command not found
我确实安装了 wget,因为我可以从命令行运行该程序
我该如何修复此错误?我的 crontab 是否.bash_profile
需要 shebang?
答案1
这可能与它作为 cron 作业运行时的环境不同有关(即,PATH
环境变量与您在 bash 终端中使用的环境变量不同)。
在你的 bash 终端中,使用which
来确定wget
正在使用哪个:
laptop [ ~ ]: which wget
/opt/local/bin/wget
然后在 cron 作业中使用完整路径:
*/10 * * * * /opt/local/bin/wget -O - -q -t 1 http://site.local/cron.php
对于 cron 任务,我通常让它运行 bash 脚本,而不是直接在 crontab 中指定命令。这样调试起来更容易一些,而且 crontab 也更简洁一些。
答案2
要找出某个命令的位置,请尝试:
which wget
或者
which <certain-command>
输出应提供可执行文件的路径。例如:
linux-dgr7:~ # sudo which wget
/usr/bin/wget
然后像这样更改条目:
*/10 * * * * /usr/bin/wget -O - -q -t 1 http://site.local/cron.php
如果执行完这些操作后 wget 没有出现,您应该将该位置添加到 PATH 变量中。
PATH=$PATH:/where/ever/path/is
或者
PATH=$PATH:/opt/wget