Задачка для системных администраторов
Есть некая программа на перле (хотя это в данном случае не существенно), которая должна время от времени запускаться по крону. Вывод её надо отправить по почте и на всякий случай сохранить на диске. Для чего программа обёрнута в простенький скрипт:
#!/bin/sh
OUTLOG=/var/log/program.log
/usr/local/bin/program.pl 2>&1 > $OUTLOG
cat $OUTLOG | /bin/mail -s 'Program Log' foo@example.com bar@example.com
Казалось бы, проще некуда. Но.. В один прекрасный день обнаружилось, что часть выводимой информации теряется. В частности, сообщения о проблемах с базой данных, с которой общается эта программа, в письмах отсутствуют. И в логе тоже. Вот если запустить программу вручную из консоли, то видны все сообщения, а когда по крону — почему-то часть информации теряется.
Вопрос: почему? И как починить?
Подсказка: починить в данном случае легче, чем объяснить, почему оно работает неправильно ;)
Оригинал этой записи в личном блоге.
Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме.
no subject
no subject
Hint
vs
ls /nosuch 2>&1 > /dev/null
P. S. В LJ OpenID поломали, похоже…
Re: Hint
Теперь второй вопрос: а почему так?
P.S. похоже на то. Уроды криворукие.
> Теперь второй вопрос: а почему так?
это боянесть же разница — дублировать дескриптор до перенаправления, или после…Re: > Теперь второй вопрос: а почему так?
И куда, кстати, девались те сообщения, которые не попали в лог?
Re: > Теперь второй вопрос: а почему так?
Re: > Теперь второй вопрос: а почему так?
no subject
no subject
Вывод её надо отправить по почте и на всякий случай сохранить на диске
no subject
no subject
no subject
дело в порядке ">" в
2>&1 > blabla.log
?
no subject