3

./script & >> log.txt

Я получаю хороший лог-файл, но если у меня та же команда, выполняемая cron, допустим, что crontab выглядит так:

* * * * * '/home/user/script &>> /home/user/log.txt'

log.txt будет просто пустым, я пробовал «и» и «и без галочек, чтобы заключить команду, есть идеи, почему потоки не будут записаны в файл?

2 ответа2

6

Скорее всего, оболочка, которую использует cron, не поддерживает оператор перенаправления сокращений &>> который поддерживает Bash.

Вы должны использовать переносимую форму, которая поддерживается в оболочке Bourne и других:

* * * * * /home/user/script >> /home/user/log.txt 2>&1

Это говорит «добавить стандартный вывод (дескриптор файла 1) к файлу и отправить стандартную ошибку (дескриптор файла 2) в то же место».

И вам не нужны кавычки.

1
  1. Не включайте кавычки для команды в crontab.

  2. Подумайте о запуске сценария настройки среды, который выполняет свое собственное перенаправление, вместо того чтобы полагаться на cron.

По моему опыту, чем меньше в файле crontab, тем лучше. Мои файлы crontab состоят из элементов управления временем, а также простого абсолютного имени команды (ksh) и команды, которую нужно выполнить:

#   @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $
#   Crontab file for Home Directory for Jonathan Leffler (JL)
#-----------------------------------------------------------------------------
#Min     Hour    Day     Month   Weekday Command
#-----------------------------------------------------------------------------
0        *       *       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/hourly
1        1       *       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/daily
23       1       *       *       1-5     /usr/bin/ksh /work1/jleffler/bin/Cron/weekday
2        3       *       *       0       /usr/bin/ksh /work1/jleffler/bin/Cron/weekly
21       3       1       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/monthly

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .