Bash Crontab电子邮件主题中的日期
我有一个ubuntu服务器,在那里我安排crontab进程,如下所示Bash Crontab电子邮件主题中的日期,bash,cron,noop,Bash,Cron,Noop,我有一个ubuntu服务器,在那里我安排crontab进程,如下所示 59 2 * * * : Backup Settings; ~/backup_settings.sh 在流程结束时,我将收到一封主题为“备份设置…”的电子邮件。从本质上讲,noop函数(:)与“备份设置”一词无关。我想在电子邮件主题中添加今天的日期。当然,我试过了 59 2 * * * : $(date +%Y%m%d) Backup Settings; ~/backup_settings.sh 但这不会产生所需的电子邮件
59 2 * * * : Backup Settings; ~/backup_settings.sh
在流程结束时,我将收到一封主题为“备份设置…”的电子邮件。从本质上讲,noop函数(:)与“备份设置”一词无关。我想在电子邮件主题中添加今天的日期。当然,我试过了
59 2 * * * : $(date +%Y%m%d) Backup Settings; ~/backup_settings.sh
但这不会产生所需的电子邮件主题,即“20180519备份设置”。$(…)代码未计算。我不想运行另一个带有电子邮件功能的脚本,然后调用backup_settings.sh。在crontab中是否有一种只使用Bash命令的方法?字符
%
在crontab中是特殊的,必须作为\%
转义:
59 2 * * * : $(date +\%Y\%m\%d) Backup Settings; "$HOME/backup_settings.sh"
从Ubuntu系统上的man 5 crontab
:
行的整个命令部分,直到换行符或%
字符,都将由
/bin/sh
或由crontab文件的shell
变量中指定的shell执行。命令中的百分号(%
)将更改为,除非用反斜杠(\
)转义
换行符和第一个%
之后的所有数据将作为标准输入发送到命令
但是请注意,cron将把cronjob的逐字逐句命令作为主题放在它发送的任何电子邮件中,而不是扩展的命令行中
要发送带有您自己标题的电子邮件,请明确使用mail
:
59 2 * * * "$HOME/backup_settings.sh" | mail -s "$(date +\%Y\%m\%d) Backup Settings" myname
(其中
myname
是您希望发送电子邮件的地址)。字符%
在crontab中是特殊的,必须转义为\%
:
59 2 * * * : $(date +\%Y\%m\%d) Backup Settings; "$HOME/backup_settings.sh"
从Ubuntu系统上的man 5 crontab
:
行的整个命令部分,直到换行符或%
字符,都将由
/bin/sh
或由crontab文件的shell
变量中指定的shell执行。命令中的百分号(%
)将更改为,除非用反斜杠(\
)转义
换行符和第一个%
之后的所有数据将作为标准输入发送到命令
但是请注意,cron将把cronjob的逐字逐句命令作为主题放在它发送的任何电子邮件中,而不是扩展的命令行中
要发送带有您自己标题的电子邮件,请明确使用mail
:
59 2 * * * "$HOME/backup_settings.sh" | mail -s "$(date +\%Y\%m\%d) Backup Settings" myname
(其中
myname
是您希望发送电子邮件的地址)。根据您的建议,我在电子邮件主题中获得以下内容:Cron:$(日期+%Y%m%d)备份设置;$HOME/backup\u settings.sh。因此命令会运行,但日期仍然不会出现在主题中。@Spinor8是的,因为cron将执行的命令放入主题中。据我所知,无法从cron作业中更改该命令。根据您的建议,我在电子邮件主题中获得以下内容:cron:$(日期+%Y%m%d)备份设置$HOME/backup_settings.sh。因此,命令会运行,但日期仍然不会出现在主题中。@Spinor8是,因为cron将执行的命令放入主题中。据我所知,没有办法从cron工作中改变这一点。