Назад | Перейти на главную страницу

Проблема при запуске задания cron и перенаправлении вывода в файл через>

Простите за расплывчатое название, сложно описать одним предложением :)

У меня есть задание cron, которое выполняется на машине FC4. Задание cron, запущенное от имени root, выполняется нормально, но одна строка в запущенном скрипте перенаправляет вывод в файл, и он не работает должным образом.

Например:

wget --user=user --password=password \
  --no-check-certificate -O output.txt \
  http://server/location/jobadmin.php?menu=16

cat output.txt | grep -o \
  '\(location\/autoprocess_test.php?autoprocesskey=true&\)\([a-Z0-9=&-]\)\{1,\}' \
  > jobs.txt

Я заметил, что когда я запускаю этот скрипт вручную как root, он работает нормально. Однако, когда он запускается в cron, он не перенаправляет вывод в указанные файлы, а просто оставляет на его месте 0-байтовый файл.

Не уверен, что это тривиально или сложно, но есть ли у кого-нибудь идеи относительно того, почему это происходит?

Спасибо!

Ян

Во-первых, как уже сказал mailq, при вызове скрипта из задания cron, которое может запускаться от имени совершенно другого пользователя, используйте абсолютные пути.

Во-вторых, запускает ли это задание cron тот же пользователь, с которым вы его тестировали?
ВСЕГДА тестируйте любые скрипты, которые вы собираетесь запускать через cron, при тех же обстоятельствах - среда при запуске через cron отличается от обычной интерактивной пользовательской оболочки!

Наконец, вы, вероятно, можете избежать двух из трех экземпляров relative-pathanme, просто передав вывод в grep:

grep -o 'complicated regex' <(your wget line) > /absolute/output/file

Это позволяет полностью избежать относительных файлов за счет использования автоматических временных файлов.