如何修改Cronjob电子邮件主题


49

我从Hostmonster.com的托管处运行了六个不同的Cron作业。执行cronjob后,我会收到一封包含脚本输出的电子邮件。

该电子邮件的格式为:

来自:Cron Daemon
主题:Cron / ramdisk / bin / php5 -c /home5/username/scheduled/optimize_mysql.bash

这样做的问题是,电子邮件的主题使您很难阅读电子邮件所属的cronjob。

有没有一种方法可以修改cronjob电子邮件的主题,以便于阅读?

例如:

来自:Cron Daemon
主题:优化MySQL数据库

Answers:


11

在我的系统(大多数为Debian)上,来自称为crontab条目的脚本/程序的所有输出均通过电子邮件发送给account@localhost发起cron的人员。这些电子邮件的主题与您一样。

如果要接收电子邮件,请编写自己没有输出的脚本。而是将所有输出都放在文本文件中。

mail -s 'your subject' adress@where < textfile

您会以自己想要的方式收到它。


谢谢米歇尔。我希望使用Hostmonster的自动电子邮件系统,但看起来这将是我的解决方案。与其接收由托管服务器控制的自动Cron电子邮件,不如发送自己的电子邮件。
justinl

53

或使用sh noop命令(:)

0 9-17 * * 1-5    : Queue Summary; PATH=/usr/sbin qshape

该主题看起来仍然很笨拙,但至少是描述性的,不需要多余的脚本。


4
现在是骇客!(我喜欢。)
Maxy-B

8
请注意,冒号后面的空格很重要。
帕特里克·忘记

1
标题将是“队列摘要”吗?在这种情况下,命令是“ qshape”吗?
Pratik Khadloya 2014年

看起来qshape是一个后缀命令。我的Unix机器使用“邮件”命令。但是,qshape命令在这里有用吗?
Pratik Khadloya 2014年

1
仅供参考,电子邮件的主题为Queue Summary; PATH=/usr/sbin qshape
Akom,2018年

20

将您的cron作业输出通过管道直接发送到邮件,然后可以填写主题行。的2>&1语法发送任何错误输出,否则将消失。

mycmd 2>&1 | mail -s "mycmd output" myname

2
我正在执行此操作,但是在脚本cron调用内部,因为我希望主题反映正在运行的脚本的成功或失败。
汤姆·巴伦

13

通过将输出和stderr传递到'mailx -E'中来接管crond发送命令输出的责任(如果没有,则不执行)。例如:

0 * * * * your-command 2>&1 | mailx -E -s "Descriptive Subject" $LOGNAME

Mailx的'-E'选项很好,因为与crond本身一样,如果没有任何要发送的输出,它将不发送邮件。


1
这里的$ LOGNAME变量是什么?
Pratik Khadloya 2014年

仅当命令的退出代码不为零时,才可以通过电子邮件发送电子邮件吗?
Pratik Khadloya 2014年

1
@PratikKhadloya,来自crontab(5): Several environment variables are set up automatically by the cron(8) daemon. SHELL is set to /bin/sh, and LOGNAME and HOME are set from the /etc/passwd line of the crontab's owner. PATH is set to "/usr/bin:/bin". HOME, SHELL, and PATH may be overridden by settings in the crontab; LOGNAME is the user that the job is running from, and may not be changed.
lingfish

2
有多种mailx实现方式。只有其中一些提供此-E选项。在Ubuntu上,您需要bsd-mailxor heirloom-mailx软件包;该mailutils软件包包含一个mailx与Gnu 命令不同的命令-E
Smylers,2015年

2

另一个解决方案是编写一个包含所需主题行的Shell脚本,以调用正确的命令。在您的示例中,这将是:

#Optimize_MySQL_Database.sh

/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash

您可以通过在crontab文件中进行设置将bin目录包括在路径中。


0

请尝试-在命令行中执行以下代码-

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • 这只是指导您的参考
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.