歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

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

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

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

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