Mailx oder Mail-Befehle schließen den Text nicht ein, wenn sie über Crontab ausgelöst werden

Mailx oder Mail-Befehle schließen den Text nicht ein, wenn sie über Crontab ausgelöst werden

Ich habe ein Skript erstellt, das den Prozess des Apache-Servers überprüft und eine E-Mail sendet, wenn der Prozess ausgefallen ist.

apache_down=`service httpd status | grep "inactive (dead)"`
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” [email protected]

Das Skript funktioniert einwandfrei, wenn es manuell ausgeführt wird – es sendet die E-Mail mit dem richtigen Betreff und Text „$apache_down“.

Wenn ich es jedoch unter Crontab platziere, wird die E-Mail nur mit dem Betreff und nicht mit dem Text gesendet.

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

Der Text ist leer und enthält nur "" . Ich habe mail -s verwendet und das gleiche Ergebnis. Ist das ein Problem mit meinem Skript oder der Crontab- oder Mailx-Einrichtung?

Antwort1

Überprüf den$PATHVariable, wenn sie für die Ausführung von Befehlen richtig eingestellt ist, wenn nicht, dann legen Sie sie in Ihrem Skript oder allgemein für Cron fest. Wenn $PATH für Binärdateien nicht richtig eingestellt ist, dannServiceBefehl wird nicht ausgeführt oder Sie müssen ihn manuell hinzufügen, indem Sie ihn als/usr/sbin/dienst

Versuchen Sie auch, die Prüfung hinzuzufügen, ob die Variable eine Ausgabe im Skript hat …

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

verwandte Informationen