Linux环境下Cronjob定时发送邮箱统计邮件的故障排查与优化求助
Linux环境下Cronjob定时发送邮箱统计邮件的故障排查与优化求助
我最近在折腾一个脚本,目的是扫描Linux服务器上的一批邮箱目录,找出里面邮件数量超过250的邮箱,然后自动发邮件把这些邮箱的名称和对应的邮件数通知给我。
先说说我目前的实现:
初始的邮箱统计脚本(mailboxcounter.sh)
一开始我写了这个脚本,逻辑是遍历邮箱目录,统计每个邮箱的邮件数,筛选出超过250的:
ls /path to mailboxes/ -lR | grep rw | awk '{count[$3]++} END {for (word in count) if (count[word] > 250) print word, count[word]}'
Cron定时任务配置
为了定期执行这个脚本并发送结果,我设置了一个cron任务,先测试每5分钟跑一次:
*/5 * * * * /usr/sbin/sendmail name@email.com < <( bash /path/mailboxcounter.sh ) >/dev/null 2>&1
遇到的问题
现在我碰到了两个棘手的问题:
- Cron只执行一次就停了:第一次运行cron的时候,邮件正常收到了,但之后每5分钟的定时任务完全没反应,再也没收到过邮件。
- 修改脚本添加描述文本后完全无法发邮件:我想让邮件内容更清晰,给脚本加了点格式化的文本,改成了下面这样:
ls /path to mailboxes/ -lR | grep rw | awk '{count[$3]++} END {for (word in count) if (count[word] > 25) print "Name: " word",", "emails in mailbox: " count[word]}'
结果修改后,cron连一次邮件都发不出来了。
另外我试过用mail命令,也确认服务器上装了mailx,但不管怎么试都没用,所以只能一直用sendmail。
我感觉离成功不远了,但试了好多次都没解决,有没有大佬能帮我看看哪里出问题了?怎么才能让cron定时正常发邮件,同时还能保留那些清晰的描述文本?
备注:内容来源于stack exchange,提问作者DeeJay
相关产品推荐
相关产品推荐

