【问题标题】:conditionally sending cron job emails有条件地发送 cron 作业电子邮件
【发布时间】:2014-06-27 19:05:29
【问题描述】:

我什至不确定我想要的是否可行,但我想运行一个仅在特定条件下发送电子邮件的 Cron 作业。我知道您可以通过在 crontab 文件中将 MAILTO 设置为空字符串来完全阻止发送邮件,但是我已经以几种不同的方式进行了搜索,但找不到任何关于有条件地发送电子邮件的信息。我的最终目标是运行一个定期检查网络服务器是否正在运行的 Cron 作业,如果没有,请重新启动它。如果必须重新启动网络服务器,我只想要一封电子邮件。我正在用 Perl 编写我的 Cron 作业。是否有我可以在作业脚本中使用的 Perl 命令在某些情况下禁用电子邮件?感谢您能给我的任何帮助。

【问题讨论】:

    标签: perl email cron


    【解决方案1】:

    如果您正在运行的命令生成输出,Cronjobs 将发送电子邮件。如果您编写脚本仅在需要电子邮件时将输出发送到 STDERR/STDOUT,那应该可以实现您的目标。

    【讨论】:

      【解决方案2】:

      从 cron 作业发送邮件有 2 种可能性:

      1. 来自已由 cron 守护进程启动的程序,

      2. 根据 UNIX/Linux 机制,可以发送邮件,如果已作为 cron 作业启动的程序已将某些内容写入 STDOUT 或 STDERR。

      我不建议使用第二种可能性。它是不灵活的。您不能将邮件发送给不同的收件人,具体取决于发生的警报。 第二种方式的使用是一个糟糕的设计。 Cron 作业应将其所有 stdout 和 stderr 重定向到每个 cron 作业日志文件的个人,以进行可能的故障排除。

      Perl 拥有发送邮件的完美可能性,例如使用 MIME::Lite 模块。 这个模块不是核心模块,所以如果它不可用,你可能应该请求系统管理员安装这个模块。 如果您将使用第一种方式,那么使用 Perl 逻辑很容易解决您的问题:只需在该程序重新启动 Web 服务器后从您的 Perl 程序发送所需的邮件。

      【讨论】:

      • 感谢 Mart 和 njackson 的回答。我选择 Mart's 作为答案,因为它更彻底。
      猜你喜欢
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多