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

All*_*mas 3 wget cron osx-lion macos

我想在运行 Lion 的 Macbook Pro 上设置一个 crontab。我照常运行,crontab -e并提供一个快速的工作,看看是否一切正常---

*/10 * * * * wget -O - -q -t 1 http://site.local/cron.php
Run Code Online (Sandbox Code Playgroud)

10 分钟后,我看到系统收到了一些“邮件”,内容为 ---

/bin/sh: wget: command not found
Run Code Online (Sandbox Code Playgroud)

我确实安装了 wget,因为我可以从命令行运行程序

我该如何解决这个错误?我的 crontab 还是.bash_profile需要 shebang?

小智 10

当它作为 cron 作业运行时,这可能与您的环境不同有关(即PATH环境变量与您从 bash 终端使用的环境变量不同)。

在您的 bash 终端中,使用which来确定wget正在使用哪个:

laptop [ ~ ]: which wget
/opt/local/bin/wget
Run Code Online (Sandbox Code Playgroud)

然后在 cron 作业中使用完整路径:

*/10 * * * * /opt/local/bin/wget -O - -q -t 1 http://site.local/cron.php
Run Code Online (Sandbox Code Playgroud)

对于 cron 作业,我通常让它运行 bash 脚本,而不是直接在 crontab 中指定命令。调试起来更容易一些,并使 crontab 更干净一些。