Есть некая программа на перле (хотя это в данном случае не существенно), которая должна время от времени запускаться по крону. Вывод её надо отправить по почте и на всякий случай сохранить на диске. Для чего программа обёрнута в простенький скрипт:
#!/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 в любой форме и любом объёме.