Cron

通過 crontab 觸發時,Mailx 或 mail 命令不包括正文

  • April 17, 2020

我創建了一個腳本來檢查 apache 伺服器的程序並在程序關閉時發送電子郵件。

apache_down=`service httpd status | grep "inactive (dead)"`
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” abc@gmail.com

該腳本在手動執行時工作正常 - 它發送帶有正確主題和正文“$apache_down”的郵件。

但是,當我將它放在 crontab 下時,它只發送帶有主題而不是正文的郵件。

*5 * * * * script.sh >/dev/null 2>&1

正文是空的,只有 "" 。我使用了 mail -s 和相同的結果。這是我的腳本或 crontab 或 mailx 設置的問題嗎?

檢查**$PATH變數是否正確設置為執行命令,如果沒有,則在腳本中設置它或通常用於 cron。如果 $PATH 沒有為二進制正確設置,則服務命令將不會執行,或者您必須手動添加它將其作為/usr/sbin/service執行**

還嘗試添加檢查變數是否在腳本中有一些輸出…

if [[ -n "$apache_down" ]]
then
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” abc@gmail.com
else
echo "apache running fine" | mailx -s “APACHE_Running_`hostname`” abc@gmail.com
fi

引用自:https://unix.stackexchange.com/questions/580070