Упрощение отслеживания отработанных по крону скриптов
Пожалуй в любом более менее крупном проекте возникает необходимость выполнения заданий по крону, т. е. независимо от действий пользователей с определенной периодичностью. Совершенно определенно что результат выполнения скриптов необходимо отслеживать, что бы вовремя узнать о возникшей проблеме. Самый простой вариант, это генерация отчета о работе или ошибки в скрипте и отправке из крона на почту, как то так (из крона, а не из скрипта потому что fatal error на почту из скрипта не придет):
В итоге на почту периодически будут сваливаться отчеты вида:
Content-type: text/html
Начало: 2011-10-03 03:17.01
... сгенерированные данные о проделанной работе ...
Окончание: 2011-10-03 03:17.01
Все хорошо. Но иногда бывает что дергать такие скрипты необходимо часто (дабы избежать задержки), а вот что-то делать они будут далеко не всегда, т. е. попросту запускаться, смотреть что ничего делать не надо генерит пустой отчет и все. А вот когда этих скриптов становится много, то наступает такой момент когда только просмотреть отчеты на почте занимает неприлично много времени, потом это надоедает и отчеты просто не просматриваясь удаляются. Теряется смысл вообще всех этих отчетов.
Выход нашелся в следующем. При отсутствии действий в скрипте не генерировать пустой отчет, т. е. не выводить ничего, а по крону смотреть, что если в выхлопе только три строки:
Content-type: text/html
то на почту ничего отправлять не надо.
Делаем скрипт /usr/bin/php_cron.sh:
strtocut=3
# минимальная длина на всякий случай, может лишний перенос закрадется
minlen=10
line=1
while read INPUT; do
if [ $line -gt $strtocut ]; then
OUTPUT="${OUTPUT}\n${INPUT}"
fi
line=`expr $line + 1`
done
if [ `expr length "$OUTPUT"` -gt $minlen ]; then
echo -e $OUTPUT | mail -s"$2" $1
fi
даем ему права на выполнение
и изменяем задание в кроне следующим образом:
Теперь на почту будут приходить только сообщения о проделанной работе, а о том что делать было нефиг нас не потревожат.
P/S С удовольствием приму вариант более элегантного решения.
