如何将 cronjob 的输出发送到多个电子邮件地址?

Boa*_*oaz 64 email cron

在 crontab 文件的开头,您可以使用MAILTO指令来指示您希望将输出作为电子邮件发送到电子邮件地址。我想将输出发送到多个地址。是否可以(以及如何)指定多个地址?

Tha*_*Guy 86

它可能因您使用的 cron 守护程序包而有所不同,但这是来自 Ubuntu Hardy 上 Vixie Cron 的联机帮助页:

如果 MAILTO 已定义(且非空),则邮件将发送给如此命名的用户。MAILTO 还可用于通过用逗号分隔收件人用户来将邮件定向到多个收件人。如果 MAILTO 已定义但为空 (MAILTO=""),则不会发送邮件。否则邮件将发送给 crontab 的所有者。

如果您没有使用 Vixie Cron,或者不确定,请尝试使用 crontab 文件的手册页: man 5 crontab

例子

MAILTO="user.one@domain.one,user.two@domain.two"
Run Code Online (Sandbox Code Playgroud)

  • 需要注意的一件事——在地址之间使用_just_逗号。*也不要使用空格*,否则 cron 会将地址(可能在 /var/log/cron 或 /var/log/daemon 中)记录为“不安全”,并拒绝发送到该地址列表。 (16认同)
  • 当用空格 _ 而不是逗号分隔地址时,我发现 `cron` 将邮件发送到第一个地址 _only_(并且 `crontab` 在保存更改时没有抱怨,这是一种耻辱)。syslog 中有错误(`(CRON) error (bad mailto)`),但是没有人注意到...... (2认同)

dto*_*lis 11

作为上述答案的替代方法,您可以将电子邮件发送到作为邮件组或通讯组列表的单个地址。如果您管理多个服务器,这尤其有效,因为在您的邮件服务器上管理地址比在每台机器的 crontab 中管理地址更容易。


Mat*_*ons 5

一种解决方案可能是.forward该用户帐户上的一个文件,该文件将邮件发送到适当的地址。