修改cronjob的主题行

修改cronjob的主题行

我设置了以下单行cron命令,在备份完成后,它在电子邮件正文中给出了一条简单的消息(感谢@steeldriver)。

tar -cpzf /home/user/backups/backup_files.tar.gz /home/user/public_html;
case $? in 0) echo "Files successfully backed up at $(date)" ;; *) echo "Backup failed" ;; esac

问题是整个命令行都输出到我的电子邮件的主题行中。这并不理想,因为它提供了跨电子邮件备份的完整路径。我希望主题只说一些简单的内容,例如“备份用户”

有没有办法在不扰乱现有命令的情况下执行此操作?谢谢。

答案1

您不需要使用默认的cron邮件子系统;你可以声明你自己的。创建一个包含此内容的单行cron条目(为了提高可读性,我将其分为三行)。

if tar czf /home/user/backups/backup_files.tar.gz -C / home/user/public_html;
then echo "Files successfully backed up at $(date)";
else echo 'Backup failed'; fi | mail -s 'Backup user' root

一些笔记

  • 我已经删除了该-p标志,tar因为当您创建存档时它会被忽略
  • 我添加了-C标志来更改目录,以便备份源是相对文件(这反过来会停止tar: Removing leading `/' from member names警告消息)
  • 我已经提供了root获取您用户帐户的本地电子邮件的功能,但如果您的系统设置为处理网络电子邮件,您可以将其替换为任何可到达的地址
  • 就我个人而言,我会将其放入脚本中并从 调用该脚本cron。这使您的脚本布局更易读,并且您可以根据需要添加必要的复杂性(复杂性!),而不会达到cron行限制和其他意外。

相关内容