linux 中常用的進程控制類命令

一  查看進程命令 ps && top

原文鏈接:https://blog.csdn.net/timchen525/article/details/76364706

ps 和 top 命令常用來查看Linux系統進程相關信

ps命令:可以查看進程的瞬間信息

top命令:可以持續的監視進程的信息

場景一:如何查看Linux系統中存在mysql、nginx、tomcat進程?

方法一:輸入命令:ps -ef|grep 相應的進程名稱

方法二:輸入命令:ps aux | grep 相應的進程名稱


場景二:如何去動態跟蹤指定進程的資源使用情況呢?

動態跟蹤的命令有很多,這裏用top命令。

輸入命令:top -p 進程id,則可以一秒一次跟蹤cpu的使用情況。

補充知識點:

(1)top -d 1 -n 1000  這一行命令表示延遲1秒爲週期,打印1000次。

(2)在top命令下,輸入u,然後輸入相應的用戶名,則可以查看相應的用戶進程,這個命令還是比較好用,比如,我們想看下mysql用戶的動態進程信息。
(3)top 然後輸入1,查看各個cpu的使用情況

二 關閉進程的方法 kill && killall

原文鏈接:https://blog.csdn.net/dghggij/article/details/87621517

1) kill -9

kill  -s  9  15572

其中,-s 9 制定了傳遞給進程的信號是9,即強制、儘快終止進程。 15572則是上面ps查到的火狐(firefox)的PID。

用法詳解:

kill -9, 這個強大和危險的命令迫使進程在運行時突然終止進程在結束後不能自我清理。危害是導致系統資源無法正常釋放,一般不推薦使用,除非其他辦法都無效。 
當使用此命令時,一定要通過ps -ef確認沒有剩下任何殭屍進程。只能通過終止父進程來消除殭屍進程。如果殭屍進程被init收養,問題就比較嚴重了。殺死init進程意味着關閉系統。 
如果系統中有殭屍進程,並且其父進程是init,而且殭屍進程佔用了大量的系統資源,那麼就需要在某個時候重啓機器以清除進程表了。 


2.1) 改進 1 —— grep

把ps的查詢結果通過管道傳給grep,查找包含特定字符串的進程。管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作爲管道符右邊命令的輸入。

例如: homer@ubuntu:~$ ps -aux | grep firefox

homer    15572  1.7  5.0 808644 103260 ?       Sl   23:45   0:07 /usr/lib/firefox/firefox
homer    15735  0.0  0.0  13584   920 pts/0    S+   23:52   0:00 grep --color=auto firefox

直接找到firefox進程PID, 輸入: kill  -s  9  15572

2.2) 改進 2 —— pgrep

pgrep的p表明了這個命令是專門用於進程查詢的grep

例如: homer@ubuntu:~$ pgrep firefox
15572

2.3) 改進 3 —— pidof

pidof命令,表示 pid of xx,字面翻譯過來就是 xx的PID

例如: homer@ubuntu:~$ pidof firefox
15572

2.4) 改進4 —— grep + awk

grep firefox 列出firefox進程信息,並awk取第二個field,即PID

例如: homer@ubuntu:~$ ps -ef | grep firefox | grep -v grep | awk '{print $2}' 
15572

2.5) 改進 5 —— kill + xargs

殺死進程的方式有以下幾種:

a) ps -ef | grep firefox | grep -v grep | awk '{print $2}' | xargs kill -s 9

b) pgrep firefox | xargs kill -s 9

c) pidof firefox | xargs kill -s 9

d) kill -s 9 `ps -ef | grep firefox | grep -v grep | awk '{print $2}'`

e) kill -s 9 `pgrep firefox`

f) kill -s 9 `pidof firefox`

2.6) 改進 6 —— pkill

pkill 類似於 pgrep, pkill 表示 pgrep+kill

例如: pkill firefox

3) killall

killall命令, 殺死同一進程組內的所有進程,其允許指定要終止的進程的名稱,而非PID

killall和pkill是相似的,不過如果給出的進程名不完整,killall會報錯。pkill或者pgrep只要給出進程名的一部分就可以終止進程。

homer@ubuntu:~$ killall firefo
firefo: no process found
homer@ubuntu:~$ killall firefox
homer@ubuntu:~$ killall -9 firefox

4) kill

殺死進程最安全的方法是單純使用kill命令,不加修飾符,不帶標誌。
例如: # kill -pid  
註釋: 標準的kill命令,默認採用信號(signal)號是15,通常都能達到目的,終止有問題的進程,並把進程的資源釋放給系統。然而,如果進程啓動了子進程,只殺死父進程,子進程仍在運行,因此仍消耗資源。爲了防止這些所謂的“殭屍進程”,應確保在殺死父進程之前,先殺死其所有的子進程。  

5) kill -l

例如: kill -l PID 

-l 選項, 告訴kill命令用好像啓動進程的用戶已註銷的方式結束進程。當使用該選項時,kill命令也試圖殺死所留下的子進程。但這個命令也不是總能成功--或許仍然需要先手工殺死子進程,然後再殺死父進程。 

6) kill -HUP

有時候只想簡單的停止和重啓進程。
例如: # kill -HUP PID 
該命令讓Linux和緩的執行進程關閉,然後立即重啓。在配置應用程序的時候,這個命令很方便,在對配置文件修改後需要重啓進程時就可以執行此命令。  

三  nice及renice命令使用

參看鏈接:https://blog.csdn.net/XD_hebuters/article/details/79619213

     linux內核是一個了不起的馬戲表演者,它在進程和系統資源之間小心地玩着雜耍,並保持系統的正常運轉。同時,內核也很公平,它將資源公平地分配給各個進程。但是,如果用戶需要給一個重要進程提高優先級、或是降低優先級,該怎麼辦呢?答案是需要由用戶來爲內核制定進程的優先級。這裏對nice及renice命令做一個基本的介紹。

1.1、基本介紹

  nice命令可以修改進程的優先級,進而調整進程調度。nice值的範圍是[-20, 19], -20表示進程的最高優先級,19表示進程的最低優先級。Linux進程的默認nice值爲0。使用nice可調整進程的優先級,這樣調度器就會依據進程優先級,爲其分配CPU資源。

1)、sleep 200&後,ps -el | grep sleep抓取,無nice命令,優先級數值爲0

2)、nice sleep 200&後,ps -el | grep sleep抓取,優先級NI數值爲10

3)、nice -N sleep 200&,即在默認值0基礎上加N,ps -el | grep sleep抓取

4)、nice –N sleep 200&,僅管理員可在默認值0基礎上加 -N,ps -el | grep sleep抓取

1.2、使用場景
  在實際應用中,如果要運行一個CPU密集型程序,最好通過nice命令來啓動它,這樣可以保證其他進程獲得更高的優先級,即使服務器或臺式機在負載很重的情況下, 也可以快速響應

二、renice命令
2.1、基本介紹

  renice命令是與nice關聯的一個命令,由re兩個字母就知道可以重新調整進程執行的優先級,可以指定羣組或者用戶名調整優先級等級,並修改隸屬於該羣組或者用戶的所有程序優先級。等級範圍爲[-20,19]。同樣僅系統管理員可以拉高優先級。nice在進程拉起時調整,renice在進程執行時調整。

2.2、使用場景
  一個緊急進程,需要更多CPU資源時,可以拉低之前運行進程的優先級。

      renice -N pid  

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