Я создал скрипт, который проверяет процесс сервера Apache и отправляет электронное письмо, если процесс не работает.
apache_down=`service httpd status | grep "inactive (dead)"`
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” [email protected]
Скрипт отлично работает при ручном запуске — он отправляет письмо с правильной темой и текстом «$apache_down».
Однако когда я помещаю его в crontab, он отправляет почту только с темой, а не с телом.
*5 * * * * script.sh >/dev/null 2>&1
Тело пустое, только "". Я использовал mail -s и тот же результат. Это проблема с моим скриптом или crontab или настройками mailx.
решение1
Проверить$ПУТЬпеременная, если она правильно установлена для выполнения команд, если нет, то установите ее в своем скрипте или вообще для cron. Если $PATH неправильно установлена для двоичного файла, то,услугакоманда не будет запущена или вам придется добавить ее вручную, выполнив ее как/usr/sbin/сервис
Также попробуйте добавить проверку, имеет ли переменная какой-либо вывод внутри скрипта...
if [[ -n "$apache_down" ]]
then
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” [email protected]
else
echo "apache running fine" | mailx -s “APACHE_Running_`hostname`” [email protected]
fi