#功能:自动杀除僵死进程脚本
#作者:唐智
#说明:
#TIPTOP是通过远程Telnet登录到服务器来操作的。由于网络的原因,有些进程会突然僵死,导致消耗系统大量的资源,直接影响机器的正常运行。这个脚本会实时地、自动地杀死这些僵死的进程。
#使用方法:
#用 crontab -e 增加一个 cron 作业:0,30 8,9,10,11,12,13,14,15,16,17 * * * /u1/usr/tiptop/autokill ,让系统在上班时间每隔半小时执行一次autokill。
#!/bin/bash
ps -ef | awk '{ print $1,$2,$7,$8 }' | \
#用命令 ps -ef 查看进程状态,通过管道传送给 AWK 进行处理,获取进程的用户标识(UID)、进程号(PID)、进程占用CPU时间(Time)、进程执行命令(CMD)四个字段的值。
awk '/[0-9][0-9]:[3-9][0-9]:[0-9][0-9]/ { print $1,$2,$3,$4 }' | \
#通过模式匹配,选取所有匹配模式的行。使用[0-9][0-9]:[3-9][0-9]:[0-9][0-9]来匹配 Time 时间字段值,查找占用 CPU 时间超半小时的进程。
awk '!/root/ { print $1,$2,$3,$4 }' | \
#用 "!/root/"过滤掉由 root用户生成的进程。
awk '!/tiptop/ { print "kill -9 " $2}' > k_kill
#用 "!/tiptop/"过滤掉由 tiptop用户生成的进程,并将最终结果定向到文件 k_kill。
chmod 777 k_kill
#修改 k_kill 为可执行。
./k_kill
#执行 k_kill 杀死僵死进程。
rm k_kill
#删除 k_kill 临时文件