crontab-/bin/sh:wget:未找到命令

crontab-/bin/sh:wget:未找到命令

我想在运行 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

相关内容