如何设置Cron发送电子邮件?
我在NAS设备上每天运行一次以下cron job命令:
find /nfs/rpiggott/complete -mtime +45 -exec rm {} \;
我想知道是否有办法管道列表,这将导致cron向我发送电子邮件,显示它删除的文件和/或遇到的任何错误。
为此,您的系统应该能够发送电子邮件。 所以你可以安装和配置postfix
:
sudo apt install postfix
-
对于常规类型的邮件配置选择“ Internet站点” ,如果要进行更详细的配置,请使用以下命令:
sudo dpkg-reconfigure postfix
在这个阶段,Cron将开始发送电子邮件。 通常将输出到STDOUT的所有内容(如果您在命令行中执行命令),包括所有错误消息,将被发送到运行Cronjob的用户的本地邮箱。
本地用户邮箱的默认位置是/var/mail/
。 您可以通过命令行以方便的方式安装命令行电子邮件客户端mutt
来读取用户的电子邮箱:
sudo apt install mutt
- 注意
mutt
安装过程将涉及postfix
安装和配置,如果之前没有完成的话。
您可以通过在Cronjob定义之前更改crontab
envvar MAILTO
的值来更改默认目标邮箱 。
请注意:除非您在发送邮件配置中未启用SSL / TLS证书,否则大多数公共邮件服务器将以某种方式忽略您的电子邮件。 例如, mail.google.com
会将它们放入垃圾邮件中。 如果这是一个服务器实例,并且您已经拥有主域的SSL / TLS证书,请按照这个不错的手册将其附加到Postfix。
一旦您的系统能够发送电子邮件,您必须使您的Cronjob更详细 (例如,添加-r到rm
命令)并且必须设置正确的MAILTO
值。 所以你的crontab
看起来像这样:
MAILTO="example.email@gmail.com" * * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v {} \;
另一种方法是创建一个脚本(将通过crontab
执行),其中包含您的命令并使用mail
, mutt
, ssmtp
或sendmail
发送电子邮件。 有关详细信息,请参阅参考文献的底部。
参考文献和进一步阅读:
-
让crontab工作的问题
-
如何在Ubuntu 16.04上安装和配置Postfix
-
Postfix TLS支持
-
如何从命令行发送邮件?
-
从Linux命令行发送电子邮件的5种方法
我使用一种非常简单的方法让cron
发送电子邮件:将Linux配置,脚本和文档备份到Gmail 。
自动发送电子邮件的最简单方法
从使用ssmtp发送电子邮件警报,我们找到了从终端或脚本自动发送电子邮件的最简单方法。 安装步骤很简单:
sudo apt install ssmtp sudo nano /etc/ssmtp/ssmtp.conf # Change "MyEmailAddress" and "MyPassword" to your own.
没有提到一步; Google会向您发送一封电子邮件,确认您要允许“安全性较低”的应用程序通过您的帐户发送邮件:
收到太多邮件会让人感到烦恼。 例如,每当您输错sudo
密码时,您都会收到一封电子邮件: 停止向我发送错误的sudo密码尝试