在执行命令时,出现命令行反应慢,等很长时间才打印命令结果,甚至出现卡死现象。
[场景一] 所有用户执行命令慢
[可能原因]:
--------------------------------
1. /var/目录下小文件过多,inode耗尽,导致定时任务进程大量挂死。
[检查方法]:执行df -i 查看inode占用情况; ps -efl 查看进程。
执行df -i 命令发现/var占用100%, 进一步排查发现是/var/spool/postfix/maildrop目录下存在大量小文件导致的。
[原因分析]:由于linux在执行cron时,cron执行产生的output和warning信息,会以邮件形式发送给cron所有者,如果服务器关闭postfix服务,导致邮件发送不成功,就会全部以小文件存放在maildrop目录下。 如果sendmail或postfix正常运行,则会在/var/mail目录下也存放大量邮件 。
[解决方法]:1 . 检查/var/是否满,是否已经导致进程堆积。
执行下面命令检查是否有大量进程存在:
ps -efl | grep cron
ps -elf | grep mail
ps -efl | grep post
ps -elf | grep send
使用如下命令kill掉这些进程
ps -elf | grep cron | grep -v grep | awk ‘{print $4}’ | xargs kill -9
ps -elf | grep sendmail | grep -v grep | awk ‘{print $4}’ | xargs kill -9
ps -elf | grep postdrop | grep -v grep | awk ‘{print $4}’ | xargs kill -9
注意:在kill postdrop进程时,由于进程处于D状态,需等待一会儿此进程才会退出。
2. 删除文件
cd /var/spool/postfix/maildrop
pwd # 确保已经进入/var/spool/postfix/maildrop目录
ls | xargs rm -n 10 -rf
3. 修改mailto配置
使用vi 命令编辑文件 /etc/crontab和/var/spool/cron/tabs目录下的所有用户的cron配置文件(该目录下是所有用户 的定时任务,文件名就是用户名)。
将MAILTO=root替换成MAILTO=””,如果没有MAILTO=root,在配置文件的第一行增加MAILTO=””
4. 重启定时任务
rccron restart #不同的操作系统可能重启命令不一样,此处是suse,其他系统百度下
--------------------------------
2./etc/resolv.conf中存在异常域名解析服务器
[检查方法]:cat /etc/resolv.conf | grep -v “#”
检查nameserver配置是否为空
[解决方法]:如果不为空,可以将/etc/resolv.conf中的内容注释后再次重试。
--------------------------------
3. 命令资源不足
[检查方法]:执行top命令观察cpu、内在的使用情况
[解决方法]:如果找到大量占用资源的进程,就执行kill -9 PID将其杀死;
如果资源耗尽无法解决,建议尽快触发kdump重启板子。
[场景二] 单个用户执行命令慢
[检查方法]:cd到家目录下,执行ls -al检查.history文件大小
[解决方法]:如果文件过大,执行echo”” > .history
来清空文件
也可以做个定时任务,定期清理下这个文件。
[场景三] 用户执行某个命令时慢
mount_point。