2013-08-21 3 views
4

Я поставил работу в crontab для запуска каждые 2 часа, также я хочу, чтобы файл журнала моего вывода bash находился в отдельном файле.Как использовать команду tee в crontab

Вход:

0 0-23/2 * * * /tmp/sample.sh | tee /tmp/logfile_extract_$(date '+%Y-%m-%d-%H').txt 

Выход:

/bin/sh: -c: line 0: unexpected EOF while looking for matching `'' 
/bin/sh: -c: line 1: syntax error: unexpected end of file 
+3

'0-23/2' синтаксис может быть заменены на' */2', который больше стандартнога. – fedorqui

ответ

1

Почему вы используете tee в хрон. Для того, чтобы перенаправить вывод вы можете сделать:

0 */2 * * * /tmp/sample.sh > /tmp/logfile_extract_$(date '+%Y-%m-%d-%H').txt 2>&1 

tee нуждается в вашей TTY для вывода на экране и нет терминала доступен с хронами.

По man tee:

The tee utility copies standard input to standard output, making a copy in zero or more files.

+0

Работа не запущена, и я снова получаю ту же ошибку в журналах cron: /bin/sh: -c: строка 0: неожиданный EOF при поиске соответствия ''' /bin/sh: -c: line 1 : синтаксическая ошибка: неожиданный конец файла –

+0

Запуск '/tmp/sample.sh>/tmp/logfile_extract _ $ (дата '+% Y-% m-% d-% H'). txt 2> & 1' в командной строке сначала – anubhava

+0

работает отлично по командной строке. –

1

Из ваших комментариев выше

/tmp/logfile_extract_$(date '+%Y-%m-%d-%H').txt 

IS проблема 1)/бен/ш на самом деле колотить? Я видел ОС, где его «нечто большее, чем нравится», и, таким образом, синтаксис bash может бросать его.

0 */2 * * * /bin/bash -c '/tmp/sample.sh > /tmp/logfile_extract_$(date "+%Y-%m-%d-%H").txt 2>&1' 

может работать в этом случае. Или вы могли бы рассмотреть обозначение или одиночного обратной кавычки сценарий оболочки вызывается из хрон, что только делает символ

/tmp/sample.sh > /tmp/logfile_extract_$(date "+%Y-%m-%d-%H").txt 2>&1 
2

Процента (%) это специальный символ в хронах. Выйдите из знака%.

0 0-23/2 * * * /tmp/sample.sh > /tmp/logfile_extract_$(date '+\%Y-\%m-\%d-\%H').txt 2>&1 
2

Прекрасно повод, чтобы хотеть этого. И вы можете полностью использовать tee, если хотите и сможете записывать вывод на MAILTO. Возьмите этот кронтаб, например

SHELL=/bin/bash 
[email protected] 
0 */2 * * * php /path/script.php | tee -a /path/log.$(date +"\%Y-\%m-\%d").txt 

Обратите внимание, что сказал Ларс и избежать этих процентов символов (%)

Смежные вопросы