Crontab电子邮件主题中的日期

时间:2018-05-19 09:23:57

标签: bash cron noop

我有一个ubuntu服务器,我在其中安排crontab进程,如下所示。

59 2 * * * : Backup Settings; ~/backup_settings.sh

在流程结束时,我会收到一封主题行"备份设置..."的电子邮件。本质上,noop函数(:)对单词" Backup Settings"没有任何作用。我想将今天的日期添加到电子邮件主题中。当然,我试过

59 2 * * * : $(date +%Y%m%d) Backup Settings; ~/backup_settings.sh

但这并不会产生所需的电子邮件主题,即" 20180519备份设置"。 $(...)代码没有评估。我不想运行另一个带有电子邮件功能的脚本,然后调用backup_settings.sh。有没有办法在crontab中使用Bash命令来完成它?

1 个答案:

答案 0 :(得分:2)

字符%在crontab中是特殊的,必须以\%转义:

59 2 * * * : $(date +\%Y\%m\%d) Backup Settings; "$HOME/backup_settings.sh"

来自Ubuntu系统上的man 5 crontab

  

该行的整个命令部分,直到换行符或%字符,将由执行          /bin/sh或crontab文件的SHELL变量中指定的shell。除非使用反斜杠(%)进行转义,否则命令中的百分号(\)将更改为          换行符,第一个%之后的所有数据将作为标准输入发送到命令。

但请注意,cron会将cronjob的verbatim命令作为主题发送到它发送的任何电子邮件中,而不是扩展的命令行。

要发送包含您自己标题的电子邮件,请明确使用mail

59 2 * * * "$HOME/backup_settings.sh" | mail -s "$(date +\%Y\%m\%d) Backup Settings" myname

(其中myname是您要将电子邮件发送到的地址。)