我在 CentOS 6.3 系统上遇到了一个问题,其中 crond 进程试图一遍又一遍地发送邮件(至少我认为这是它所做的),直到操作系统最终生成“打开的文件太多”错误。此计算机未连接到网络。
运行一夜后,当用户尝试登录时,系统会产生“文件打开过多”错误。
如果我在运行几个小时后检查进程列表,我会看到这三个进程多次列出(随着时间的推移,次数或重复次数继续增加):
CROND
/usr/sbin/sendmail -FCronDaemon -i -odi -oem -i -t ...
/usr/sbin/postdrop -r
Run Code Online (Sandbox Code Playgroud)
我修改了/etc/crontaband /etc/anacrontab,并改变了这一行:
MAILTO=root
Run Code Online (Sandbox Code Playgroud)
到
MAILTO=""
Run Code Online (Sandbox Code Playgroud)这些尝试修复都没有解决问题。看起来它实际上postdrop是挂起的进程。如果我杀死它,其他两个进程也会死亡。除了一些更优雅的解决方案,我的下一个攻击计划是postdrop用一个什么都不做并退出的 bash 脚本替换,以防止这些进程累积。任何建议表示赞赏!
我猜有问题的 cron 条目不在/etc/crontab. MAILTO=""应该可以工作,但它必须与 cron 条目(/etc/cron.d/0hourly等)在同一个文件中。
另外,我很惊讶这是一个问题,我认为默认情况下,如果您没有为 root ( /etc/aliases)指定电子邮件地址,邮件应该在本地发送。
或者/另外,修改每个 cron 条目以将输出重定向到/dev/null:
* * * * * /some/script.sh >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24207 次 |
| 最近记录: |