cron
我有一项每天运行的工作,该工作是关于使用tar
;压缩文件夹。我发现每天tar
都会不断地写入标准输出~/dead.letter
。写入的内容只是压缩文件的列表,就像手动运行时在命令行上看到的一样tar
。
搜索dead.letter
显示,这与部分信件在成功发送之前被中断有关。我确实有一个作为守护进程运行的 shell 脚本,它监视机器上的某些东西并在特定条件下发送电子邮件。使用以下命令启动守护进程:
setsid ~/send_mail_on_certain_event.sh >~/sendmail.log 2>&1 < /dev/null &
这是我在机器上使用mail
(实际上使用)的唯一地方,并且它按我的预期工作(我收到了我想要的电子邮件)。ssmtp
我不知道这是否与cron
作业的输出写入dead.letter
.
答案1
当 cron 作业失败或有输出时,cron 会尝试将其邮寄给邮件作业的用户。当为他配置邮件时。
您有一个 tar 命令将信息写入标准输出,但没有人重定向标准输出。您应该将所有 crontab 作业的所有 stdout 和 stderr 重定向到 /dev/null (或者当您对输出感兴趣时一些日志文件)。
例子
10 0 * * * tar tvf /tmp/tar.tst /home/era >/dev/null 2>&1
有点愚蠢:要求 tar 使用 -v 标志进行详细说明并丢弃 tar 写入的所有内容。但这是为了当你想测试类似的东西时
10 10 * * * tar tvf /tmp/tar.tst /home/era
或者你可以测试一下
* * * * * echo "Hello and Goodbye Era"
并在您的用户帐户下查找邮件