电脑技术学习

杀连接已经超时了的进程的脚本

dn001
今天遇到下面这个问题,在朋友们的帮助下终于成功了,在此表示感谢,同时把
脚本贴出来;
希望对大家有帮助,也希望朋友们可以优化这个脚本。;

公司是做软件开发的,程序员们的程序都要连接数据库进行调试。可是他们的程
序死了以后;
数据库还是连接的,这样一来系统的资源(内存)就会被占用被耗尽,于是我就
要经常去杀死已经死了的进程,可是这样很麻烦,我想编一个shell脚本,可不知
道如何下手,就请大虾们帮帮忙了:-);
例如下面这些;323;325;。。。。。。。。。335;337;这些进程不能被杀,主要是
要杀后面有(LOCAL=NO)的进程。;;我因该怎么做呀?;
oracle;14527;;;;;1;;0;10:22:39;?0:01;oraclextecs90;(LOCAL=NO);
oracle;16865;;;;;1;;0;11:01:46;?0:06;oraclextecs90;(LOCAL=NO);
oracle;24346;;;;;1;;0;00:00:52;?0:01;oraclextecs90;(LOCAL=NO);
oracle;24802;;;;;1;;0;13:19:32;?0:03;oraclextecs90;(LOCAL=NO);
oracle;;;323;;;;;1;;0;;;Apr;12;?0:01;ora_pmon_xtecs90;
oracle;;;325;;;;;1;;0;;;Apr;12;?1:35;ora_dbw0_xtecs90;
oracle;;;327;;;;;1;;0;;;Apr;12;?2:45;ora_lgwr_xtecs90;
oracle;;;329;;;;;1;;0;;;Apr;12;?2:45;ora_ckpt_xtecs90;
oracle;;;331;;;;;1;;0;;;Apr;12;?1:54;ora_smon_xtecs90;
oracle;;;333;;;;;1;;0;;;Apr;12;?0:00;ora_reco_xtecs90;
oracle;;;335;;;;;1;;0;;;Apr;12;?0:00;ora_s000_xtecs90;
oracle;;;337;;;;;1;;0;;;Apr;12;?0:00;ora_d000_xtecs90;
oracle;14229;;;;;1;;0;10:17:29;?0:00;oraclextecs90;(LOCAL=NO);
oracle;23079;;;;;1;;0;22:58:31;?0:00;oraclextecs90;(LOCAL=NO);
oracle;;1117;;;;;1;;0;14:45:31;?0:47;oraclextecs90;(LOCAL=NO);
问题的补充:要杀连接已经超时了的进程(时间大于30分钟),而不是要杀死所
有的LOCAL=NO进程。;

终于成功了!!!!!!!!!!!!!!!!!!;
脚本如下:;
ps;-e;-o;pid;-o;etime;-o;args|grep;LOCAL=NO>/tmp/tmpfile;
cat;/tmp/tmpfile|while;read;LINE;
do;
TIME=`echo;$LINE|awk;'{print;$2}'`;
TIME=`echo;$TIME|awk;-F:;'{print;$1}'`;
if;[;$TIME;-gt;30;];
then;
echo;$LINE;>>;/tmp/tmpflie2;
fi;
done;
cut;-c;1-5;/tmp/tmpfile2;|xargs;-t;-n1;kill;-9;
rm;-f;/tmp/tmpfile;
rm;-f;/tmp/tmpfile2;
然后把这个脚本写进crontab,让系统每30分钟运行一次。;
详细过程在:;
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=11&topic=207&show=0;

感谢;cpss;;三少爷;kiss007;阿骁;跳舞牛仔

标签: