如何修改 Cronjob 电子邮件主题

jus*_*inl 57 email cron

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

电子邮件采用以下格式:

来自: Cron 守护进程
主题: Cron /ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash

这样做的问题是电子邮件的主题使得很难阅读电子邮件与哪个 cronjob 相关。

有没有办法修改 cronjob 电子邮件的主题,使其更易于阅读?

例如:

来自: Cron 守护进程
主题:优化 MySQL 数据库

小智 63

或者使用 sh noop 命令 (:)

0 9-17 * * 1-5    : Queue Summary; PATH=/usr/sbin qshape
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,冒号后的空格很重要。 (9认同)
  • 现在这是一个黑客!(我喜欢。) (6认同)
  • 仅供参考,电子邮件的主题将是“队列摘要”;PATH=/usr/sbin qshape` (3认同)

Mar*_*son 25

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

mycmd 2>&1 | mail -s "mycmd output" myname
Run Code Online (Sandbox Code Playgroud)

  • 我正在这样做,但在脚本 cron 调用内部,因为我希望主题反映正在运行的脚本的成功或失败。 (2认同)

Ale*_*ley 14

通过管道输出和 stderr 到“mailx -E”中,接管 crond 发送命令输出的责任(如果没有,则不发送)。例如:

0 * * * * your-command 2>&1 | mailx -E -s "Descriptive Subject" $LOGNAME
Run Code Online (Sandbox Code Playgroud)

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

  • 这里的 $LOGNAME 变量是什么? (2认同)
  • @PratikKhadloya,来自 crontab(5):`几个环境变量由 cron(8) 守护进程自动设置。SHELL 设置为 /bin/sh,LOGNAME 和 HOME 是从 crontab 所有者的 /etc/passwd 行设置的。PATH 设置为“/usr/bin:/bin”。HOME、SHELL 和 PATH 可能会被 crontab 中的设置覆盖;LOGNAME 是运行作业的用户,不得更改。` (2认同)
  • 有多个 `mailx` 实现;只有其中一些提供此`-E` 选项。在 Ubuntu 上,你需要 `bsd-mailx` 或 `heirloom-mailx` 包;`mailutils` 包包含一个带有不同 `-E` 的 Gnu `mailx` 命令。 (2认同)

小智 12

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

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

mail -s 'your subject' adress@where < textfile
Run Code Online (Sandbox Code Playgroud)

你以你想要的方式接收它。