我甚至不确定我的想法是否可行,但我想要在某个条件下发送电子邮件的Cron工作。我知道您可以通过将MAILTO设置为crontab文件中的空字符串来防止邮件被发送,但我已经通过几种不同的方式进行搜索,并且无法找到有条件地发送电子邮件的任何内容。我的最终目标是运行一个Cron作业,定期检查Web服务器是否正在运行,如果没有,则重新启动它。如果必须重新启动网络服务器,我只想要一封电子邮件。我在Perl写我的Cron工作。是否有可以在作业脚本中使用的Perl命令,在某些情况下会禁用电子邮件?谢谢你能给我的任何帮助。
答案 0 :(得分:3)
如果您正在运行的命令生成输出,Cronjobs将发送电子邮件。如果您编写脚本以仅在需要电子邮件时将输出发送到STDERR / STDOUT,那么这应该可以实现您的目标。
答案 1 :(得分:1)
从cron作业发送邮件有两种可能性:
来自程序,由cron守护程序启动,
从UNIX / Linux机制,可以发送邮件,如果已经作为cron作业启动的程序已经向STDOUT或STDERR写了一些东西。
我不建议使用第二种可能性。它不灵活。您无法将邮件发送给不同的收件人,具体取决于发生的警报。 使用第二种方式是一个糟糕的设计。 Cron作业应该将所有stdout和stderr重定向到每个cron作业日志文件的个别文件,以便进行可能的故障排除。
Perl拥有发送邮件的完美可能性,例如使用MIME :: Lite模块。 此模块不是核心模块,因此您可能应该请求sysadmin安装此模块(如果该模块不可用)。 如果您将使用第一种方式,那么使用Perl逻辑很容易解决您的问题:只需在此程序重新启动Web服务器后从您的Perl程序发送所需的邮件。