(轉載)linux 查看某進程 并殺死進程 ps grep kill

linux 中使用top 或 ps 查看進程使用kill殺死進程

1.使用top查看進程:
1、參數詳解

$ top -help
  procps-ng version 3.3.9
Usage:
  top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]

-b:打印所有程序
-c:以命令行的形式顯示程序名
-d:設置刷新間隔時間
-h:顯示幫助
-H:線程切換
-i:不顯示空閑進程
-n:設置刷新幀數,刷新n幀后退出
-p:指定進程號PID,可以指定多個,最多20個,-pN1 -pN2 …或-pN1,N2 [,…]
-s:安全模式,不能使用交互命令
-u:監控用戶,匹配有效ID或用戶名,如監控root用戶,top -uroot;
-U:監控用戶,匹配真實、有效、保存、文件所屬ID或用戶名
-v:打印版本號
2、交互命令

常用命令說明:
Enter:按回車會刷新屏幕;
h:顯示交互命令幫助信息

交互式命令的幫助
Help for Interactive Commands - procps-ng version 3.3.9
窗口1:Def:累計模式關閉。系統:延遲3.0秒;安全模式。
Window 1:Def: Cumulative mode Off.  System: Delay 3.0 secs; Secure mode Off.

  Z,B,E,e   Global: 'Z' colors; 'B' bold; 'E'/'e' summary/task memory scale
  l,t,m     Toggle Summary: 'l' load avg; 't' task/cpu stats; 'm' memory info
  0,1,2,3,I Toggle: '0' zeros; '1/2/3' cpus or numa node views; 'I' Irix mode
  f,F,X     Fields: 'f'/'F' add/remove/order/sort; 'X' increase fixed-width

  L,&,<,> . Locate: 'L'/'&' find/again; Move sort column: '<'/'>' left/right
  R,H,V,J . Toggle: 'R' Sort; 'H' Threads; 'V' Forest view; 'J' Num justify
  c,i,S,j . Toggle: 'c' Cmd name/line; 'i' Idle; 'S' Time; 'j' Str justify
  x,y     . Toggle highlights: 'x' sort field; 'y' running tasks
  z,b     . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
  u,U,o,O . Filter by: 'u'/'U' effective/any user; 'o'/'O' other criteria
  n,#,^O  . Set: 'n'/'#' max tasks displayed; Show: Ctrl+'O' other filter(s)
  C,...   . Toggle scroll coordinates msg for: up,down,left,right,home,end

  k,r       Manipulate tasks: 'k' kill; 'r' renice
  d or s    Set update interval
  W,Y       Write configuration file 'W'; Inspect other output 'Y'
  q         Quit
          ( commands shown with '.' require a visible task display window ) 
Press 'h' or '?' for help with Windows,
Type 'q' or <Esc> to continue 

#Z:設置顏色,進入設置顏色窗口后,a和w用來切換顏色設置,Enter提出

Help for color mapping - procps-ng version 3.3.9
current window: 1:Def

   color - 04:25:44 up 8 days, 50 min,  7 users,  load average:
   Tasks:  64 total,   2 running,  62 sleeping,   0 stopped,
   %Cpu(s):  76.5 user,  11.2 system,   0.0 nice,  12.3 idle
    Nasty Message!   -or-  Input Prompt
     PID TTY     PR  NI %CPU    TIME+   VIRT SWAP S COMMAND    
   17284 pts/2    8   0  0.0   0:00.75  1380    0 S /bin/bash   
    8601 pts/1    7 -10  0.4   0:00.03   916    0 R color -b -z
   11005 ?        9   0  0.0   0:02.50  2852 1008 S amor -sessi
   available toggles: B =disable bold globally (Off),
       z =color/mono (On), b =tasks "bold"/reverse (On)

1) Select a target as an upper case letter, current target is  T :
   S = Summary Data,  M = Messages/Prompts,
   H = Column Heads,  T = Task Information
2) Select a color as a number, current color is  1 :
   0 = black,  1 = red,      2 = green,  3 = yellow,
   4 = blue,   5 = magenta,  6 = cyan,   7 = white

3) Then use these keys when finished:
   'q' to abort changes to window '1:Def'
   'a' or 'w' to commit & change another, <Enter> to commit and end

#E、e:分別切換摘要和任務列表中內存的的單位(KiB、MiB、GiB、TiB、PiB、EiB);
#l:顯示或隱藏摘要中的平均負載;
#t:顯示或隱藏摘要中的cpu統計數據
#m:顯示或隱藏摘要中的內存統計數據
#F、f:窗口字段管理,上下鍵移動、方向鍵中右鍵選中后可以移動該字段(左鍵撤銷)、空格或d選擇是否顯示

Fields Management for window 1:Def, whose current sort field is %CPU
  Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
  'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!

* PID     = Process Id             DATA    = Data+Stack (KiB)    
* USER    = Effective User Name    nMaj    = Major Page Faults   
* PR      = Priority               nMin    = Minor Page Faults   
* NI      = Nice Value             nDRT    = Dirty Pages Count   
* VIRT    = Virtual Image (KiB)    WCHAN   = Sleeping in Function
* RES     = Resident Size (KiB)    Flags   = Task Flags <sched.h>
* SHR     = Shared Memory (KiB)    CGROUPS = Control Groups      
* S       = Process Status         SUPGIDS = Supp Groups IDs     
* %CPU    = CPU Usage              SUPGRPS = Supp Groups Names   
* %MEM    = Memory Usage (RES)     TGID    = Thread Group Id     
* TIME+   = CPU Time, hundredths   ENVIRON = Environment vars    
* COMMAND = Command Name/Line      vMj     = Major Faults delta  
 PPID    = Parent Process pid     vMn     = Minor Faults delta  
 UID     = Effective User Id      USED    = Res+Swap Size (KiB) 
 RUID    = Real User Id           nsIPC   = IPC namespace Inode 
 RUSER   = Real User Name         nsMNT   = MNT namespace Inode 
 SUID    = Saved User Id          nsNET   = NET namespace Inode 
 SUSER   = Saved User Name        nsPID   = PID namespace Inode 
 GID     = Group Id               nsUSER  = USER namespace Inode
 GROUP   = Group Name             nsUTS   = UTS namespace Inode 
 PGRP    = Process Group Id    
 TTY     = Controlling Tty     
 TPGID   = Tty Process Grp Id  
 SID     = Session Id          
 nTH     = Number of Threads   
 P       = Last Used Cpu (SMP) 
 TIME    = CPU Time            
 SWAP    = Swapped Size (KiB)  
 CODE    = Code Size (KiB)     
#X:設置任務列表之間的寬度
#L:搜索字段;
#&:搜索下一個字段;
#<、>:顯示上一頁、下一頁
#R:升序或降序顯示任務列表;
#H:進程和線程切換;
#V:樹形顯示,(顯示內容沒看懂)
#J:字段左對齊或右對齊切換;
#c:程序名和命令行格式切換;
#i:空閑程序顯示或隱藏的切換;
#x:高亮顯示排序字段;
#y:高亮顯示正在運行的任務;
Toggle: ‘z’ color/mono; ‘b’ bold/reverse (only if ‘x’ or ‘y’)
#z:彩色顯示或單色顯示的切換;
#b:當設置了x或y,即高亮顯示時,再加上b,就會將高亮的帶背景色;
#u、U:過濾有效或任何用戶;
#n、#:設置最多顯示的任務數,0表示不限制;
#C:顯示坐標;
#k:殺死指定PID的進程;
#r:調整優先級;
#d、s:設置間隔時間;
#W:寫入配置文件;
#Y:寫入配置文件,并重新加載
#q:退出
3、顯示信息詳解

top - 15:00:44 up 6 min,  3 users,  load average: 0.21, 0.48, 0.30
Tasks: 194 total,   1 running, 193 sleeping,   0 stopped,   0 zombie
%Cpu(s): 12.8 us,  5.1 sy,  0.0 ni, 82.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   4046976 total,  1182232 used,  2864744 free,    59872 buffers
KiB Swap:  4191228 total,        0 used,  4191228 free.   462400 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                     
 2308 zet       20   0 1271772 186756  67412 S  7.6  4.6   0:29.29 compiz                                                                      
 1300 root      20   0  373560 108052  31176 S  4.3  2.7   0:08.53 Xorg                                                                        
 2738 zet       20   0  599960  34704  26408 S  4.3  0.9   0:01.74 gnome-terminal                                                              
 1937 zet       20   0  121840   3208   2836 S  0.7  0.1   0:00.96 VBoxClient                                                                  
   97 root      20   0       0      0      0 S  0.3  0.0   0:00.16 kworker/u2:4                                                                
 1960 zet       20   0   40196   3512   2164 S  0.3  0.1   0:00.67 dbus-daemon                                                                 
 2835 zet       20   0   30604   3448   2912 R  0.3  0.1   0:00.05 top                                                                         
    1 root      20   0   33792   4312   2684 S  0.0  0.1   0:01.78 init      

第一行:top - 15:00:44 up 6 min, 3 users, load average: 0.21, 0.48, 0.30
15:00:44 — 當前系統時間
up 6 min — 系統運行時間(在這期間沒有重啟過)
3 users — 當前有3個用戶登錄系統, load average: 0.21, 0.48, 0.30
load average: 0.21, 0.48, 0.30 — load average后面的三個數分別是5分鐘、10分鐘、15分鐘的負載情況。
load average數據是每隔5秒鐘檢查一次活躍的進程數,然后按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高于5的時候就表明系統在超負荷運轉了。

第二行:Tasks: 194 total, 1 running, 193 sleeping, 0 stopped, 0 zombie
Tasks — 任務(進程),系統現在共有194 個進程,其中處于運行中的有1個,193 個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵尸)的有0個。

第三行:%Cpu(s): 12.8 us, 5.1 sy, 0.0 ni, 82.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

12.8 us — 用戶空間占用CPU的百分比。
5.1 sy — 內核空間占用CPU的百分比。
0.0 ni — 改變過優先級的進程占用CPU的百分比
82.2 id id — 空閑CPU百分比
0.0 wa — IO等待占用CPU的百分比
0.0 hi — 硬中斷(Hardware IRQ)占用CPU的百分比
0.0 si — 軟中斷(Software Interrupts)占用CPU的百分比
0.0 st —超級管理進程占用CPU的百分比

第四行:KiB Mem: 4046976 total, 1182232 used, 2864744 free, 59872 buffers
內存使用情況:
4046976 total — 物理內存總量
1182232 used — 使用中的內存總量
2864744 free — 空閑內存總量
59872 buffers — 緩存的內存量

第五行:KiB Swap: 4191228 total, 0 used, 4191228 free. 462400 cached Mem
交換分區:
4191228 total — 交換區總量
0 used — 使用的交換區總量
4191228 free — 空閑交換區總量
462400 cached — 緩沖的交換區總量

第六行:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
各個進程的監控情況:
PID— 進程ID
USER— 進程所有者的實際用戶名。
PR— 進程的調度優先級。這個字段的一些值是’rt’。這意味這這些進程運行在實時態。
NI— 進程的nice值(優先級)。越小的值意味著越高的優先級。負值表示高優先級,正值表示低優先級
VIRT— 進程使用的虛擬內存。進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES— 駐留內存大小。駐留內存是任務使用的非交換物理內存大小。進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR— SHR是進程使用的共享內存。共享內存大小,單位kb
S— 這個是進程的狀態。它有以下不同的值:

D - 不可中斷的睡眠態。
R – 運行態
S – 睡眠態
T – 被跟蹤或已停止
Z – 僵尸態

%CPU— 自從上一次更新時到現在任務所使用的CPU時間百分比。
%MEM— 進程使用的可用物理內存百分比。
TIME+— 任務啟動后到現在所使用的全部CPU時間,精確到百分之一秒。
COMMAND— 運行進程所使用的命令。進程名稱(命令名/命令行)
--------------------- 
2.使用ps命令查看進程
$ ps -ef

……
smx       1822     1  0 11:38 ?        00:00:49 gnome-terminal
smx       1823  1822  0 11:38 ?        00:00:00 gnome-pty-helper
smx       1824  1822  0 11:38 pts/0    00:00:02 bash
smx       1827     1  4 11:38 ?        00:26:28 /usr/lib/firefox-3.6.18/firefox-bin
smx       1857  1822  0 11:38 pts/1    00:00:00 bash
smx       1880  1619  0 11:38 ?        00:00:00 update-notifier
……
smx      11946  1824  0 21:41 pts/0    00:00:00 ps -ef

或者:

$ ps -aux

……

smx       1822  0.1  0.8  58484 18152 ?        Sl   11:38   0:49 gnome-terminal
smx       1823  0.0  0.0   1988   712 ?        S    11:38   0:00 gnome-pty-helper
smx       1824  0.0  0.1   6820  3776 pts/0    Ss   11:38   0:02 bash
smx       1827  4.3  5.8 398196 119568 ?       Sl   11:38  26:13 /usr/lib/firefox-3.6.18/firefox-bin
smx       1857  0.0  0.1   6688  3644 pts/1    Ss   11:38   0:00 bash
smx       1880  0.0  0.6  41536 12620 ?        S    11:38   0:00 update-notifier
……
smx      11953  0.0  0.0   2716  1064 pts/0    R+   21:42   0:00 ps -aux
3.下面演示如何殺死進程
此時如果我想殺了火狐的進程就在終端輸入:

$ kill -s 9 1827

其中-s 9 制定了傳遞給進程的信號是9,即強制、盡快終止進程。各個終止信號及其作用見附錄。

1827則是上面ps查到的火狐的PID。

簡單吧,但有個問題,進程少了則無所謂,進程多了,就會覺得痛苦了,無論是ps -ef 還是ps -aux,每次都要在一大串進程信息里面查找到要殺的進程,看的眼都花了。

進階篇:

改進1:

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

$ ps -ef | grep firefox
smx       1827     1  4 11:38 ?        00:27:33 /usr/lib/firefox-3.6.18/firefox-bin
smx      12029  1824  0 21:54 pts/0    00:00:00 grep --color=auto firefox

這次就清爽了。然后就是

$kill -s 9 1827

還是嫌打字多?

改進2——使用pgrep:

一看到pgrep首先會想到什么?沒錯,grep!pgrep的p表明了這個命令是專門用于進程查詢的grep。

$ pgrep firefox
1827

看到了什么?沒錯火狐的PID,接下來又要打字了:

$kill -s 9 1827

改進3——使用pidof:

看到pidof想到啥?沒錯pid of xx,字面翻譯過來就是 xx的PID。

$ pidof firefox-bin
1827
和pgrep相比稍顯不足的是,pidof必須給出進程的全名。然后就是老生常談:

$kill -s 9 1827

無論使用ps 然后慢慢查找進程PID 還是用grep查找包含相應字符串的進程,亦或者用pgrep直接查找包含相應字符串的進程PID,然后手動輸入給kill殺掉,都稍顯麻煩。有沒有更方便的方法?有!

改進4:

$ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9

說明:

“grep firefox”的輸出結果是,所有含有關鍵字“firefox”的進程。

“grep -v grep”是在列出的進程中去除含有關鍵字“grep”的進程。

“cut -c 9-15”是截取輸入行的第9個字符到第15個字符,而這正好是進程號PID。

“xargs kill -s 9”中的xargs命令是用來把前面命令的輸出結果(PID)作為“kill -s 9”命令的參數,并執行該命令?!発ill -s 9”會強行殺掉指定進程。

難道你不想抱怨點什么?沒錯太長了

改進5:

知道pgrep和pidof兩個命令,干嘛還要打那么長一串!

$ pgrep firefox | xargs kill -s 9

改進6:

$ ps -ef | grep firefox | awk '{print $2}' | xargs kill -9
kill: No such process

有一個比較郁悶的地方,進程已經正確找到并且終止了,但是執行完卻提示找不到進程。

其中awk '{print $2}' 的作用就是打印(print)出第二列的內容。根據常規篇,可以知道ps輸出的第二列正好是PID。就把進程相應的PID通過xargs傳遞給kill作參數,殺掉對應的進程。

改進7:

難道每次都要調用xargs把PID傳遞給kill?答案是否定的:

$kill -s 9 `ps -aux | grep firefox | awk '{print $2}'`

改進8:

沒錯,命令依然有點長,換成pgrep。

$kill -s 9 `pgrep firefox`

改進9——pkill:

看到pkill想到了什么?沒錯pgrep和kill!pkill=pgrep+kill。

$pkill -9 firefox

說明:"-9" 即發送的信號是9,pkill與kill在這點的差別是:pkill無須 “s”,終止信號等級直接跟在 “-“ 后面。之前我一直以為是 "-s 9",結果每次運行都無法終止進程。

改進10——killall:

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

$killall -9 firefox

OK,講到這里大家應該了解了吧!

原文地址1
原文地址2

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容