cron 的邮件输出

cron 的邮件输出

我有这个脚本,每月运行一次,我想将输出发送到我的电子邮件。

如果我像这样手动运行它,那么标准输出将发送到我的电子邮件。

./monthly_mail.sh | mail -s "Mail purged" [email protected]

但是当我将以下行添加到我的 时crontab,我只收到一封空白电子邮件。为什么脚本的 stdoutput 没有通过管道传输到mail

* * 2 * * /var/mail/monthly_mail.sh | /usr/bin/mail -s "Mail purged" [email protected]

答案1

有几件事值得尝试。

  1. 正确的crontab咒语

    如果您将其放入文件中,/etc/crontab则需要指定运行 cron 作业的用户。所以你的线路应该是这样的:

    * * 2 * * root /var/mail/monthly_mail.sh | /usr/bin/mail -s "Mail purged" [email protected]
    

    该命令将在哪个root用户下运行。根据需要更改它。

  2. 在 cron 之外测试邮件

    确保您可以以您打算从文件运行 cron 的用户身份运行该命令/etc/crontab,首先从 shell 独立运行,然后再将其移至 crontab。

    $ /var/mail/monthly_mail.sh | /usr/bin/mail -s“邮件已清除”[电子邮件受保护]

  3. 检查输出MAILTO

    Cron 通常有一个默认用户,可以获取 STDOUT 或 STDERR 上生成的任何输出。查看是否有任何错误消息通过电子邮件发送给该用户,这些消息可能会提示您命令未运行的原因。该电子邮件地址通常在 cron 中配置,如下所示:

    [email protected]
    

答案2

另一个网站建议2>&1在之前添加|,如下所示:

* * 2 * * root /var/mail/monthly_mail.sh 2>&1 | /usr/bin/mail -s "Mail purged" [email protected]

相关内容