進程查看命令

1仪或、進程簡介

linux上進程有5種狀態(tài)

  1. 運行(正在運行或在運行隊列中等待)
  2. 中斷(休眠中宗侦,受阻,在等待某個條件的形成或接收到信號)
  3. 不可中斷(收到信號不喚醒和不可運行嗅剖,進程必須等待直到有中斷發(fā)生)
  4. 僵死(進程已終止蛋逾,但進程描述符存在,知道父進程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
  5. 停止(進程收到SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU信號后停止運行運行)

ps工具標(biāo)識進程的5種狀態(tài)碼:

  • D 不可中斷 uninterruptible sleep (usually IO)
  • R 運行 runnable (on run queue)
  • S 中斷 sleeping
  • T 停止 traced or stopped
  • Z 僵死 a defunct (”zombie”) process

平時在查看linus進程狀態(tài)是窗悯,查看最多的三個狀態(tài)是R区匣、S、D
S 即 sleep進程蒋院,休眠進程亏钩。其又分為兩種:

  • Interruptible Sleep(可中斷睡眠,在ps命令中顯示“S”)欺旧。處在這種睡眠狀態(tài)的進程是可以通過給它發(fā)送signal來喚醒的姑丑,比如發(fā)HUP信號給nginx的master進程可以讓nginx重新加載配置文件而不需要重新啟動nginx進程;
  • Uninterruptible Sleep(不可中斷睡眠辞友,在ps命令中顯示“D”)栅哀。處在這種狀態(tài)的進程不接受外來的任何signal,這也是為什么之前我無法用kill殺掉這些處于D狀態(tài)的進程称龙,無論是“kill”, “kill -9”還是“kill -15”留拾,因為它們壓根兒就不受這些信號的支配。

D 即上面提到的Uninterruptible Sleep 鲫尊,如果從廣義上來分痴柔,D狀態(tài)算是一種特殊的S狀態(tài)進程。進程為什么會被置于D狀態(tài)呢疫向?

D狀態(tài)的進程通常是在等待IO咳蔚,比如磁盤IO,網(wǎng)絡(luò)IO搔驼,其他外設(shè)IO谈火,如果進程正在等待的IO在較長的時間內(nèi)都沒有響應(yīng),那么就很會不幸地被ps看到了舌涨,同時也就意味著很有可能有IO出了問題糯耍,可能是外設(shè)本身出了故障,也可能是比如NFS掛載的遠程文件系統(tǒng)已經(jīng)不可訪問了泼菌。

正是因為得不到IO的響應(yīng)谍肤,進程才進入了uninterruptible sleep狀態(tài)啦租,所以要想使進程從uninterruptible sleep狀態(tài)恢復(fù)哗伯,就得使進程等待的IO恢復(fù),比如如果是因為從遠程掛載的NFS卷不可訪問導(dǎo)致進程進入uninterruptible sleep狀態(tài)的篷角,那么可以通過恢復(fù)該NFS卷的連接來使進程的IO請求得到滿足焊刹,除此之外,要想干掉處在D狀態(tài)進程就只能重啟整個Linux系統(tǒng)(D進程并不能通過kill 和kill -9 殺掉) 。

2虐块、ps命令

2.1 簡介

ps命令是linux最常用的進程查看命令俩滥,它會列出系統(tǒng)中當(dāng)前運行的那些進程。ps命令列出的是當(dāng)前那些進程的快照贺奠,就是執(zhí)行ps命令的那個時刻的那些進程霜旧,如果想要動態(tài)的顯示進程信息,可以使用top命令儡率。

2.2 命令參數(shù)

  • a 顯示所有進程
  • -a 顯示同一終端下的所有程序
  • -A 顯示所有進程
  • c 顯示進程的真實名稱
  • -N 反向選擇
  • -e 等于“-A”
  • e 顯示環(huán)境變量
  • f 顯示程序間的關(guān)系
  • -H 顯示樹狀結(jié)構(gòu)
  • r 顯示當(dāng)前終端的進程
  • T 顯示當(dāng)前終端的所有程序
  • u 指定用戶的所有進程
  • -au 顯示較詳細的資訊
  • -aux 顯示所有包含其他使用者的行程挂据,顯示內(nèi)存信息
  • -C<命令> 列出指定命令的狀況
  • –lines<行數(shù)> 每頁顯示的行數(shù)
  • –width<字符數(shù)> 每頁顯示的字符數(shù)
  • –help 顯示幫助信息
  • –version 顯示版本顯示
    常用的命令參數(shù)有“-ef ”、“-u” "aux"儿普,再接和grep使用

2.3 輸出列的含義

  • F 代表這個程序的旗標(biāo) (flag)崎逃, 4 代表使用者為 super user
  • S 代表這個程序的狀態(tài) (STAT),關(guān)于各 STAT 的意義將在內(nèi)文介紹
  • UID 程序被該 UID 所擁有
  • PID 進程的ID
  • PPID 則是其上級父程序的ID
  • %CPU:該 process 使用掉的 CPU 資源百分比
  • %MEM:該 process 所占用的物理內(nèi)存百分比
  • VSZ :該 process 使用掉的虛擬內(nèi)存量 (Kbytes)
  • SZ 使用掉的內(nèi)存大小
  • RSS :該 process 占用的固定的內(nèi)存量 (Kbytes)
  • PRI這個是 Priority (優(yōu)先執(zhí)行序) 的縮寫眉孩,詳細后面介紹
  • ADDR 這個是 kernel function个绍,指出該程序在內(nèi)存的那個部分。如果是個 running的程序浪汪,一般就是 “-“
  • WCHAN 目前這個程序是否正在運作當(dāng)中巴柿,若為 - 表示正在運作
  • TTY 登入者的終端機位置
  • TIME 使用掉的 CPU 時間。
  • CMD 所下達的指令為何

3死遭、jps命令

3.1 簡介

jps命令是linux下java進程查看命令篮洁,jps僅查看當(dāng)前用戶的java進程,而不是當(dāng)前進程中的所有進程殃姓。

3.2 原理

java程序在啟動以后袁波,會在java.io.tmpdir指定的目錄下,就是臨時文件夾里蜗侈,生成一個類似于hsperfdata_User的文件夾篷牌,這個文件夾里(在Linux中為/tmp/hsperfdata_{userName}/),有幾個文件踏幻,名字就是java進程的pid枷颊,因此列出當(dāng)前運行的java進程,只是把這個目錄里的文件名列一下而已该面。 至于系統(tǒng)的參數(shù)什么夭苗,就可以解析這幾個文件獲得。

3.3 命令參數(shù)

  • -q僅輸出VM標(biāo)識符隔缀,不包括class name,jar name,arguments in main method
  • -m 輸出main method的參數(shù)
  • -l 輸出完全的包名题造,應(yīng)用主類名,jar的完全路徑名
  • -v 輸出jvm參數(shù)
  • -V 輸出通過flag文件傳遞到JVM中的參數(shù)(.hotspotrc文件或-XX:Flags=所指定的文件
  • -Joption 傳遞參數(shù)到vm,例如:-J-Xms48m

4猾瘸、top命令

4.1 簡介

top命令是Linux下最常用的性能分析工具界赔,能夠 實時 顯示系統(tǒng)中各個進程的資源占用狀況丢习,類似于Windows的任務(wù)管理器。top命令有兩種模式淮悼,一種是常見的交互式(實時)方式咐低,另一種是批處理模式,用于觀看歷史記錄(調(diào)試專用)袜腥。

4.2 命令參數(shù):

  • -b 批處理
  • -c 顯示完整的命令
  • -I 忽略失效過程
  • -s 保密模式
  • -S 累積模式
  • -d 設(shè)置更新時間见擦,默認(rèn)是每3s刷新一次系統(tǒng)性能情況
  • -i <時間> 設(shè)置間隔時間
  • -u <用戶名> 指定用戶名
  • -p<進程號> 指定進程
  • -n<次數(shù)> 循環(huán)顯示的次數(shù)

4.3 批處理模式

批處理模式是指批處理,這意味著自動處理羹令,無需人工干預(yù)锡宋。 批處理與交互相對。
在批處理模式下特恬,top產(chǎn)生的輸出對于收集到日志文件或解析更為明智(盡管top甚至在批處理模式下也不能很好地生成可解析的輸出)执俩。 輸出行數(shù)沒有限制,輸出中不包含任何格式化的轉(zhuǎn)義序列癌刽。

在交互模式下役首,top產(chǎn)生用于人類觀看的輸出。 特別是显拜,它只顯示一個屏幕數(shù)據(jù)衡奥。 輸出包含一些用于格式化的轉(zhuǎn)義序列。 Top即使將其輸出重定向到文件远荠,也以交互模式運行; 只有-b選項的存在才有意義矮固。
top-批處理模式在-SHELL下通過選項b來控制。

eg:常用的命令:top -b -n 5 > top.txt

4.4 交互模式

在交互模式下譬淳,只顯示一個屏幕的數(shù)據(jù)档址,是一個實時數(shù)據(jù)。顯示的信息如:
top顯示案例

4.4.1 統(tǒng)計信息區(qū)

統(tǒng)計信息區(qū):

前五行是當(dāng)前系統(tǒng)情況整體的統(tǒng)計信息區(qū)邻梆。下面我們看每一行信息的具體意義守伸。

第一行,任務(wù)隊列信息浦妄,同 uptime 命令的執(zhí)行結(jié)果尼摹,具體參數(shù)說明情況如下:

14:06:23 — 當(dāng)前系統(tǒng)時間

up 70 days, 16:44 — 系統(tǒng)已經(jīng)運行了70天16小時44分鐘(在這期間系統(tǒng)沒有重啟過的吆!)

2 users — 當(dāng)前有2個用戶登錄系統(tǒng)

load average: 1.15, 1.42, 1.44 — load average后面的三個數(shù)分別是1分鐘剂娄、5分鐘蠢涝、15分鐘的負(fù)載情況。

load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進程數(shù)阅懦,然后按特定算法計算出的數(shù)值和二。如果這個數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時候就表明系統(tǒng)在超負(fù)荷運轉(zhuǎn)了故黑。

第二行儿咱,Tasks — 任務(wù)(進程)庭砍,具體信息說明如下:

系統(tǒng)現(xiàn)在共有206個進程场晶,其中處于運行中的有1個混埠,205個在休眠(sleep),stoped狀態(tài)的有0個诗轻,zombie狀態(tài)(僵尸)的有0個钳宪。

第三行,cpu狀態(tài)信息扳炬,具體屬性說明如下:

5.9%us — 用戶空間占用CPU的百分比吏颖。

3.4% sy — 內(nèi)核空間占用CPU的百分比。

0.0% ni — 改變過優(yōu)先級的進程占用CPU的百分比

90.4% id — 空閑CPU百分比

0.0% wa — IO等待占用CPU的百分比

0.0% hi — 硬中斷(Hardware IRQ)占用CPU的百分比

0.2% si — 軟中斷(Software Interrupts)占用CPU的百分比

備注:在這里CPU的使用比率和windows概念不同恨樟,需要理解linux系統(tǒng)用戶空間和內(nèi)核空間的相關(guān)知識半醉!

第四行,內(nèi)存狀態(tài),具體信息如下:

32949016k total — 物理內(nèi)存總量(32GB)

14411180k used — 使用中的內(nèi)存總量(14GB)

18537836k free — 空閑內(nèi)存總量(18GB)

169884k buffers — 緩存的內(nèi)存量 (169M)

第五行劝术,swap交換分區(qū)信息缩多,具體信息說明如下:

32764556k total — 交換區(qū)總量(32GB)

0k used — 使用的交換區(qū)總量(0K)

32764556k free — 空閑交換區(qū)總量(32GB)

3612636k cached — 緩沖的交換區(qū)總量(3.6GB)

備注:

第四行中使用中的內(nèi)存總量(used)指的是現(xiàn)在系統(tǒng)內(nèi)核控制的內(nèi)存數(shù),空閑內(nèi)存總量(free)是內(nèi)核還未納入其管控范圍的數(shù)量养晋。納入內(nèi)核管理的內(nèi)存不見得都在使用中衬吆,還包括過去使用過的現(xiàn)在可以被重復(fù)利用的內(nèi)存,內(nèi)核并不把這些可被重新使用的內(nèi)存交還到free中去绳泉,因此在linux上free內(nèi)存會越來越少逊抡,但不用為此擔(dān)心。

如果出于習(xí)慣去計算可用內(nèi)存數(shù)零酪,這里有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached冒嫡,按這個公式此臺服務(wù)器的可用內(nèi)存:18537836k +169884k +3612636k = 22GB左右。

對于內(nèi)存監(jiān)控四苇,在top里我們要時刻監(jiān)控第五行swap交換分區(qū)的used灯谣,如果這個數(shù)值在不斷的變化,說明內(nèi)核在不斷進行內(nèi)存和swap的數(shù)據(jù)交換蛔琅,這是真正的內(nèi)存不夠用了胎许。

4.4.2 狀態(tài)監(jiān)控區(qū)

項目列信息說明如下:
PID — 進程id
USER— 進程所有者
PR — 進程優(yōu)先級
NI — nice值。負(fù)值表示高優(yōu)先級罗售,正值表示低優(yōu)先級
VIRT — 進程使用的虛擬內(nèi)存總量辜窑,單位kb。VIRT=SWAP+RES
RES — 進程使用的寨躁、未被換出的物理內(nèi)存大小穆碎,單位kb。RES=CODE+DATA
SHR — 共享內(nèi)存大小职恳,單位kb
S — 進程狀態(tài)所禀。D=不可中斷的睡眠狀態(tài) R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
%CPU — 上次更新到現(xiàn)在的CPU時間占用百分比
%MEM — 進程使用的物理內(nèi)存百分比
TIME+ — 進程使用的CPU時間總計方面,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)

4.5 使用技巧

1. 多U多核CPU監(jiān)控
在top基本視圖中,按鍵盤數(shù)字“1”色徘,可監(jiān)控每個邏輯CPU的狀況:

CPU監(jiān)控案例
觀察上圖恭金,服務(wù)器有16個邏輯CPU,實際上是4個物理CPU褂策。再按數(shù)字鍵1横腿,就會返回到top基本視圖界面。

2. 高亮顯示顯示當(dāng)前進程
敲擊鍵盤“b”(打開/關(guān)閉加亮效果)斤寂,top的視圖變化如下:

高亮顯示

我們發(fā)現(xiàn)進程id為2570的“top”進程被加亮了耿焊,top進程就是視圖第二行顯示的唯一的運行態(tài)(runing)的那個進程,可以通過敲擊“y”鍵關(guān)閉或打開運行態(tài)進程的加亮效果遍搞。

3.進程字段排序
默認(rèn)進入top時罗侯,各進程是按照CPU的占用量來排序的,在下圖中進程ID為28894的java進程排在第一(cpu占用142%)溪猿,進程ID為574的java進程排在第二(cpu占用16%)钩杰。

排序高亮開關(guān)
敲擊鍵盤“x”(打開/關(guān)閉排序列的加亮效果),top的視圖變化如下:
image

可以看到再愈,top默認(rèn)的排序列是“%CPU”榜苫。

4. 通過”shift + >”或”shift + <”可以向右或左改變排序列
下圖是按一次”shift + >”的效果圖,視圖現(xiàn)在已經(jīng)按照%MEM來排序。

改變默認(rèn)排序

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翎冲,一起剝皮案震驚了整個濱河市垂睬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抗悍,老刑警劉巖驹饺,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缴渊,居然都是意外死亡赏壹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門衔沼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝌借,“玉大人,你說我怎么就攤上這事指蚁∑杏樱” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵凝化,是天一觀的道長稍坯。 經(jīng)常有香客問我,道長搓劫,這世上最難降的妖魔是什么瞧哟? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任混巧,我火速辦了婚禮,結(jié)果婚禮上勤揩,老公的妹妹穿的比我還像新娘咧党。我一直安慰自己,他們只是感情好雄可,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布凿傅。 她就那樣靜靜地躺著缠犀,像睡著了一般数苫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辨液,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天虐急,我揣著相機與錄音,去河邊找鬼滔迈。 笑死止吁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的燎悍。 我是一名探鬼主播敬惦,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谈山!你這毒婦竟也來了俄删?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤奏路,失蹤者是張志新(化名)和其女友劉穎畴椰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸽粉,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡斜脂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了触机。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帚戳。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖儡首,靈堂內(nèi)的尸體忽然破棺而出片任,到底是詐尸還是另有隱情,我是刑警寧澤椒舵,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布蚂踊,位于F島的核電站,受9級特大地震影響笔宿,放射性物質(zhì)發(fā)生泄漏犁钟。R本人自食惡果不足惜棱诱,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涝动。 院中可真熱鬧迈勋,春花似錦、人聲如沸醋粟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽米愿。三九已至厦凤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間育苟,已是汗流浹背较鼓。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留违柏,地道東北人博烂。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像漱竖,于是被迫代替她去往敵國和親禽篱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容