dil: (Default)
dil ([personal profile] dil) wrote2012-11-29 11:03 am

Задачка для системных администраторов

Есть некая программа на перле (хотя это в данном случае не существенно), которая должна время от времени запускаться по крону. Вывод её надо отправить по почте и на всякий случай сохранить на диске. Для чего программа обёрнута в простенький скрипт:

#!/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 в любой форме и любом объёме.

alexkuklin: (Default)

[personal profile] alexkuklin 2012-11-29 11:59 am (UTC)(link)
программа проверяет, терминал у нее на выхоле или файл?

Hint

[identity profile] poige.ya.ru 2012-11-29 12:30 pm (UTC)(link)
ls /nosuch > /dev/null 2>&1
vs
ls /nosuch 2>&1 > /dev/null

P. S. В LJ OpenID поломали, похоже…

> Теперь второй вопрос: а почему так?

[identity profile] poige.ya.ru 2012-11-29 12:42 pm (UTC)(link)
Ну это боянесть же разница — дублировать дескриптор до перенаправления, или после…
zuzzer: (Default)

Re: > Теперь второй вопрос: а почему так?

[personal profile] zuzzer 2012-11-29 06:58 pm (UTC)(link)
2 отдалось в 1, который улетел к родителю, оттуда, если не задано дополнительное перенаправление в задании, в крон. В его логах (письмах) и искать то, что в stderr перлового скрипта вывалилось, как-то так должно быть.

[personal profile] mak1 2012-11-29 04:56 pm (UTC)(link)
предпочитаю в кроне писать MAILTO.

[personal profile] mak1 2012-12-01 03:42 pm (UTC)(link)
а что, почтовый ящик это не метод хранения на диске?:)

[identity profile] coolcold.livejournal.com 2012-11-29 08:54 pm (UTC)(link)
(не смотря в комменты)
дело в порядке ">" в
2>&1 > blabla.log
?