如何在Ubuntu服务器Crontab邮件主题中添加当日日期?
在Crontab中为任务邮件主题添加当日日期的解决方案
你遇到的问题核心在于Crontab默认使用/bin/sh执行任务命令,直接写$(date)时,命令替换不会被正确解析——crontab的解析逻辑会先处理整行内容,再把命令传给shell,导致$(...)原样保留,没被执行。
不用额外编写带邮件功能的脚本,完全可以通过在crontab里显式调用Bash来实现需求,具体写法如下:
59 2 * * * bash -c ': "$(date +%Y%m%d) Backup Settings"; ~/backup_settings.sh'
如果想要可读性更好,也可以先把日期存成变量再拼接:
59 2 * * * bash -c 'DATE=$(date +%Y%m%d); : "$DATE Backup Settings"; ~/backup_settings.sh'
为什么这样能生效?
- 用
bash -c强制指定Bash来执行后续命令串,替代默认的sh,Bash会正确解析$(date +%Y%m%d)生成当日日期字符串。 :命令(空操作占位符)依然承担传递主题文本的作用,拼接好的日期+主题会被Crontab识别为任务标识,最终体现在邮件主题里。- 所有逻辑都在crontab行内完成,不需要额外脚本文件。
设置完成后,你收到的备份邮件主题就会变成类似20240520 Backup Settings的格式,完全符合预期。
内容的提问来源于stack exchange,提问作者Spinor8
相关产品推荐
相关产品推荐

