Linux下查找進程id並強制停止進程的腳本

  Linux下的tomcat的停止腳本shutdown.sh經常失敗,造成tomcat進程沒關閉。所以只能手動查找進程id,然後用kill命令來強制停止。每次都要這樣查一下,然後再殺進程。感覺有點麻煩,所以就把這個動作寫在了腳本里面。    

一、思路

     這個腳本其實就2步,先獲取進程id,然後 kill 掉這個進程。

(1)獲取進程id的方法

    這個可以用 awk命令來獲取

ps -ef | grep 你的進程 | grep -v grep | awk '{print $2}'

1

1

 

1

ps -ef | grep 你的進程 | grep -v grep | awk '{print $2}'

        這裏要把這個grep這個用 -v 來過濾掉,然後用awk命令,提取第2個參數就是進程id了

(2)殺進程方法

     這個就直接kill -9 進程id 就ok了

kill -9 你的進程id

1

1

 

1

kill -9 你的進程id

二、腳本代碼

    代碼如下(/root/tomcat-instance/shutdown_sp.sh):


 
  1. sp_pid=`ps -ef | grep sp-tomcat | grep -v grep | awk '{print $2}'`

  2. if [ -z "$sp_pid" ];

  3. then

  4. echo "[ not find sp-tomcat pid ]"

  5. else

  6. echo "find result: $sp_pid "

  7. kill -9 $sp_pid

  8. fi

8

 

1

sp_pid=`ps -ef | grep sp-tomcat | grep -v grep | awk '{print $2}'`

2

if [ -z "$sp_pid" ];

3

then

4

 echo "[ not find sp-tomcat pid ]"

5

else

6

 echo "find result: $sp_pid "

7

 kill -9 $sp_pid

8

fi

        注意:使用時,需要把第一行的 sp-tomcat 替換換成你希望殺的進程

        說明:可能有人會說查找進程出現多個進程id時,腳本會報錯的。其實是不會的,出現多個進程id時,他們之間是有空格隔開來了的。剛好kill命令一次殺多個進程時,進程id需要用空格。所以不需要用for循環來殺進程

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章