歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> solaris下殺連接已經超時了的進程的腳本

solaris下殺連接已經超時了的進程的腳本

日期:2017/3/6 14:29:30   编辑:關於Unix
今天遇到下面這個問題,在朋友們的幫助下終於成功了,在此表示感謝,同時把 腳本貼出來 希望對大家有幫助,也希望朋友們可以優化這個腳本。 公司是做軟件 開發 的, 程序員 們的程序都要連接數據庫進行調試。可是他們的程 序死了以後 數據庫還是連接的,這樣

今天遇到下面這個問題,在朋友們的幫助下終於成功了,在此表示感謝,同時把
腳本貼出來
希望對大家有幫助,也希望朋友們可以優化這個腳本。

公司是做軟件開發的,程序員們的程序都要連接數據庫進行調試。可是他們的程
序死了以後
數據庫還是連接的,這樣一來系統的資源(內存)就會被占用被耗盡,於是我就
要經常去殺死已經死了的進程,可是這樣很麻煩,我想編一個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分鐘運行一次。

Copyright © Linux教程網 All Rights Reserved