сервер Mac OS 10.6: crontab не запускает скрипт wget - PullRequest
0 голосов
/ 02 июня 2011

Я полностью сбит с толку поведением cron под Mac OS 10.6 Server. Я пытаюсь запустить два скрипта в cronjob, как это:

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

Хотя «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 пишет где-нибудь файл журнала?

(я тестировал команду wget самостоятельно в оболочке, где она отлично работает.)

Ответы [ 3 ]

2 голосов
/ 02 июня 2011

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.)

Или вы можете установить PATH в вашем crontab:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
00 16 * * * /Users/myusername/script.sh
04 16 * * * /Users/myusername/crontest.sh
0 голосов
/ 02 июня 2011

Также рассмотрите возможность перехода к launchd. Как давний юник Unix, я сначала счел, что launchd раздражающе сложен, но теперь, когда я его использую, я считаю, что богатый набор функций превосходит верный ole cron.

0 голосов
/ 02 июня 2011

Извините за вопрос очевидного: флаг выполнения и разрешения установлены одинаково для обоих сценариев?

...