Ich bin mir nicht einmal sicher, ob das, was ich will, möglich ist, aber ich möchte einen Cron-Job ausführen, bei dem eine E-Mail nur unter bestimmten Bedingungen gesendet wird. Ich weiß, dass Sie verhindern können, dass keine E-Mails gesendet werden, indem Sie MAILTO in der Crontab-Datei auf einen leeren String setzen, aber ich habe auf verschiedene Weise gesucht und nichts über bedingtes Senden von E-Mails gefunden. Mein Ziel ist es, einen Cron-Job auszuführen, der regelmäßig überprüft, ob der Webserver läuft, und ihn bei Bedarf neu startet. Ich möchte nur eine E-Mail erhalten, wenn der Webserver neu gestartet werden muss. Ich schreibe meine Cron-Jobs in Perl. Gibt es einen Perl-Befehl, den ich im Job-Skript verwenden kann, um die E-Mail in bestimmten Fällen zu deaktivieren? Vielen Dank für jede Hilfe, die Sie mir geben können.
Antworten
Zu viele Anzeigen?Es gibt 2 Möglichkeiten, E-Mails von Cron-Jobs aus zu senden:
-
Von einem Programm, das vom Cron-Dämon gestartet wurde,
-
Von UNIX/Linux-Mechanismus, der E-Mails senden kann, wenn ein Programm, das als Cron-Job gestartet wurde, etwas nach STDOUT oder STDERR geschrieben hat.
Ich empfehle nicht, die 2. Möglichkeit zu verwenden. Es ist unflexibel. Sie können je nach Alarm nicht E-Mails an verschiedene Empfänger senden. Die Verwendung des 2. Weges ist eher ein schlechtes Design. Cron-Jobs sollten alle ihre stdout und stderr in eine individuelle Protokolldatei für jeden Cron-Job zur möglichen Fehlerbehebung umleiten.
Perl bietet perfekte Möglichkeiten, E-Mails zu senden, z.B. mit dem MIME::Lite-Modul. Dieses Modul ist kein Kernmodul, daher sollten Sie den Sysadmin bitten, dieses Modul zu installieren, wenn es nicht verfügbar ist. Wenn Sie den 1. Weg verwenden, ist Ihr Problem einfach mit Perl-Logik zu lösen: senden Sie einfach die erforderliche E-Mail aus Ihrem Perl-Programm, nachdem dieses Programm den Webserver neu gestartet hat.