杀连接已经超时了的进程的脚本 (1)
- 今天碰到下面这个问题,在朋友们的帮助下终于成功了,在此表示感谢,同时把 脚本贴出来 希望对大家有帮助,也希望朋友们可以优化这个脚本。 公司是做软件开发的,程序员们的程序都要连接数据库进行调试。可是他们的程 序死了以后 数据库还是连接的,这样一来系统的资源(内存)就会被占用被耗尽,于是我就 要经常去杀死已经死了的进程,可是这样很麻烦,我想编一个shell脚本,可不知 道如何下
今天碰到下面这个问题,在朋友们的帮助下终于成功了,在此表示感谢,同时把
脚本贴出来
希望对大家有帮助,也希望朋友们可以优化这个脚本。
公司是做软件开发的,程序员们的程序都要连接数据库进行调试。可是他们的程
序死了以后
数据库还是连接的,这样一来系统的资源(内存)就会被占用被耗尽,于是我就
要经常去杀死已经死了的进程,可是这样很麻烦,我想编一个shell脚本,可不知
道如何下手,就请大虾们帮帮忙了-)
例如下面这些323325。。。。。。。。。335337这些进程不能被杀,主要是
要杀后面有(LOCAL=NO)的进程。我因该怎么做呀?
oracle145271010:22:39?0:01oraclextecs90(LOCAL=NO)
oracle168651011:01:46?0:06oraclextecs90(LOCAL=NO)
oracle243461000:00:52?0:01oraclextecs90(LOCAL=NO)
oracle248021013:19:32?0:03oraclextecs90(LOCAL=NO)
oracle32310Apr12?0:01ora_pmon_xtecs90
oracle32510Apr12?1:35ora_dbw0_xtecs90
oracle32710Apr12?2:45ora_lgwr_xtecs90
oracle32910Apr12?2:45ora_ckpt_xtecs90
oracle33110Apr12?1:54ora_smon_xtecs90
oracle33310Apr12?0:00ora_reco_xtecs90
oracle33510Apr12?0:00ora_s000_xtecs90
oracle33710Apr12?0:00ora_d000_xtecs90
oracle142291010:17:29?0:00oraclextecs90(LOCAL=NO)
oracle230791022:58:31?0:00oraclextecs90(LOCAL=NO)
oracle11171014:45:31?0:47oraclextecs90(LOCAL=NO)
问题的补充要杀连接已经超时了的进程(时间大于30分钟),而不是要杀死所
有的LOCAL=NO进程。
终于成功了!!!!!!!!!!!!!!!!!!
脚本如下
ps-e-opid-oetime-oargs|grepLOCAL=NO%26gt;/tmp/tmpfile
cat/tmp/tmpfile|whilereadLINE
do
TIME=`echo$LINE|awk'{print$2}'`
TIME=`echo$TIME|awk-F:'{print$1}'`
if[$TIME-gt30]
then
echo$LINE%26gt;%26gt;/tmp/tmpflie2
fi
done
cut-c1-5/tmp/tmpfile2|xargs-t-n1kill-9
rm-f/tmp/tmpfile
rm-f/tmp/tmpfile2
然后把这个脚本写进crontab,让系统每30分钟运行一次。
具体过程在
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=11%26amp;topic=207%26amp;show=0
感谢cpss三少爷kiss007阿骁跳舞牛仔
脚本贴出来
希望对大家有帮助,也希望朋友们可以优化这个脚本。
公司是做软件开发的,程序员们的程序都要连接数据库进行调试。可是他们的程
序死了以后
数据库还是连接的,这样一来系统的资源(内存)就会被占用被耗尽,于是我就
要经常去杀死已经死了的进程,可是这样很麻烦,我想编一个shell脚本,可不知
道如何下手,就请大虾们帮帮忙了-)
例如下面这些323325。。。。。。。。。335337这些进程不能被杀,主要是
要杀后面有(LOCAL=NO)的进程。我因该怎么做呀?
oracle145271010:22:39?0:01oraclextecs90(LOCAL=NO)
oracle168651011:01:46?0:06oraclextecs90(LOCAL=NO)
oracle243461000:00:52?0:01oraclextecs90(LOCAL=NO)
oracle248021013:19:32?0:03oraclextecs90(LOCAL=NO)
oracle32310Apr12?0:01ora_pmon_xtecs90
oracle32510Apr12?1:35ora_dbw0_xtecs90
oracle32710Apr12?2:45ora_lgwr_xtecs90
oracle32910Apr12?2:45ora_ckpt_xtecs90
oracle33110Apr12?1:54ora_smon_xtecs90
oracle33310Apr12?0:00ora_reco_xtecs90
oracle33510Apr12?0:00ora_s000_xtecs90
oracle33710Apr12?0:00ora_d000_xtecs90
oracle142291010:17:29?0:00oraclextecs90(LOCAL=NO)
oracle230791022:58:31?0:00oraclextecs90(LOCAL=NO)
oracle11171014:45:31?0:47oraclextecs90(LOCAL=NO)
问题的补充要杀连接已经超时了的进程(时间大于30分钟),而不是要杀死所
有的LOCAL=NO进程。
终于成功了!!!!!!!!!!!!!!!!!!
脚本如下
ps-e-opid-oetime-oargs|grepLOCAL=NO%26gt;/tmp/tmpfile
cat/tmp/tmpfile|whilereadLINE
do
TIME=`echo$LINE|awk'{print$2}'`
TIME=`echo$TIME|awk-F:'{print$1}'`
if[$TIME-gt30]
then
echo$LINE%26gt;%26gt;/tmp/tmpflie2
fi
done
cut-c1-5/tmp/tmpfile2|xargs-t-n1kill-9
rm-f/tmp/tmpfile
rm-f/tmp/tmpfile2
然后把这个脚本写进crontab,让系统每30分钟运行一次。
具体过程在
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=11%26amp;topic=207%26amp;show=0
感谢cpss三少爷kiss007阿骁跳舞牛仔





