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


55

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

Answers:


72

根据您使用的是哪个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"

12
需要注意的一件事- 地址之间使用逗号。 也不要使用空格,否则cron会将地址(可能在/ var / log / cron或/ var / log / daemon中)记录为“ UNSAFE”,并拒绝发送到该地址列表。
大卫·加德纳

1
当用空格而不是逗号分隔地址时,我碰巧cron将邮件发送到第一个地址(并且在保存更改时没有抱怨,这很可惜)。syslog()中有错误,但没有人注意到...crontab(CRON) error (bad mailto)
Tobias 2013年

9

作为上述答案的替代方法,您可以将其发送到单个地址,即邮件组。如果您管理多个服务器,此方法特别有效,因为管理邮件服务器上的组中的地址比管理每个服务器的crontab中的地址更容易。


恕我直言,这是正确的答案。谁想要在各个crontab中维护电子邮件地址的单独列表?
Satanicpuppy 2014年

我创建了一个简单的列表:1.以root身份,/etc/aliases通过添加如下一行来添加“虚拟收件人” :cron-listeners: fred@example.com, george@example.com2.在crontab中,设置MAILTO=cron-listeners如果您没有root访问权限,则可以尝试使用该.forward方法。
joeytwiddle17年

4

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


1
+1 .forward文件是解决方法。
sleske 2010年

0

最好的答案可能是检查您发行版的当前cron / crontab版本的手册页,以查看是否可以使用MAILTO参数来完成某些工作,或者指定一个邮件地址,该邮件地址又将邮件转发给您多个地址。


0

,在每封电子邮件后添加,例如:MAILTO="some.user1@example.com,some.user2@example.com"


3
在文档中,电子邮件用逗号分隔,您在此处使用分号。您确定此语法有效吗?
物理

1
@MichaelHampton ;不起作用
030

@Alfred我很清楚这一点。评论的其他人也是如此!
迈克尔·汉普顿

1
@kasperd因为不适合更改他人帖子的含义。那仅用于海报,到目前为止,他选择不对其进行更正。错误的答案应该被否决,并予以评论。
迈克尔·汉普顿

1
更正了我的帖子。不知道它在2010年的工作情况如何。就像@ThatGraemeGuy在上面的帖子中一样。可能取决于Cron软件包。
dannyb2100 '02
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.