mac os 10.6服务器:crontab不会触发wget脚本

时间:2011-06-02 14:18:13

标签: macos cron wget

我对Mac OS 10.6服务器下cron的行为感到困惑。我试图在这样的cronjob中运行两个脚本:

00 16 * * * /Users/myusername/script.sh
04 16 * * * /Users/myusername/crontest.sh

while' script.sh'包含一个wget命令:

#!/bin/sh
wget -r -l3 --no-parent -nc -A ".shtml" 'http://some.url/somethingelse/'

' crontest.sh'只包含一个测试脚本:

echo "hi" >> /Users/myusername/crontest.txt

问题是,' script.sh'不会开火,但是' crontest.sh'确实。 wget脚本没有触发的原因是什么?脚本是否需要特定的编码? cron是否在某处写了一个日志文件?

(我在shell中测试了wget命令,它工作正常。)

3 个答案:

答案 0 :(得分:2)

cron在非常小的环境下运行脚本。特别是,它的PATH不包含所有常用的二进制目录,只包含/ usr / bin和/ bin,因此其他二进制目录(如wget)中的任何命令都不可用。

有几种方法可以解决这个问题。一种选择是让您的脚本提供wget的完整路径:

#!/bin/sh
/usr/local/bin/wget -r -l3 --no-parent -nc -A ".shtml" 'http://some.url/somethingelse/'

(或其实际路径 - 使用which wget查找。)

另一种方法是在脚本中显式设置PATH:

#!/bin/sh
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
wget -r -l3 --no-parent -nc -A ".shtml" 'http://some.url/somethingelse/'

(或者你通常使用的任何路径;确保它包含wget的位置。)

或者您可以在crontab中设置PATH:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
00 16 * * * /Users/myusername/script.sh
04 16 * * * /Users/myusername/crontest.sh

答案 1 :(得分:0)

很抱歉显而易见:两个脚本上的执行标志和权限设置相同吗?

答案 2 :(得分:0)

同时考虑实现这一目标。作为一个长期以来的Unix用户,我最初发现启动困难复杂,但现在我一直在使用它,我发现丰富的功能设置优于可靠的ole cron。