Linux下查看進(jìn)程和線程的方法
在Linux中查看線程數(shù)的三種方法
1、top -H
手冊(cè)中說(shuō):-H : Threads toggle
加上這個(gè)選項(xiàng)啟動(dòng)top,top一行顯示一個(gè)線程。否則,它一行顯示一個(gè)進(jìn)程。
2、ps xH
手冊(cè)中說(shuō):H Show threads as if they were processes
這樣可以查看所有存在的線程。
3、ps -mp <PID>
手冊(cè)中說(shuō):m Show threads after processes
這樣可以查看一個(gè)進(jìn)程起的線程數(shù)。
查看進(jìn)程
1. top 命令
top命令查看系統(tǒng)的資源狀況
load average表示在過(guò)去的一段時(shí)間內(nèi)有多少個(gè)進(jìn)程企圖獨(dú)占CPU
zombie 進(jìn)程 :不是異常情況。一個(gè)進(jìn)程從創(chuàng)建到結(jié)束在最后那一段時(shí)間遍是僵尸。留在內(nèi)存中等待父進(jìn)程取的東西便是僵尸。任何程序都有僵尸狀態(tài),它占用一點(diǎn)內(nèi)存資源,僅僅是表象而已不必害怕。如果程序有問(wèn)題有機(jī)會(huì)遇見(jiàn),解決大批量僵尸簡(jiǎn)單有效的辦法是重起。kill是無(wú)任何效果的stop模式:與sleep進(jìn)程應(yīng)區(qū)別,sleep會(huì)主動(dòng)放棄cpu,而stop是被動(dòng)放棄cpu ,例單步跟蹤,stop(暫停)的進(jìn)程是無(wú)法自己回到運(yùn)行狀態(tài)的。
cpu states:
nice:讓出百分比irq:中斷處理占用
idle:空間占用百分比 iowait:輸入輸出等待(如果它很大說(shuō)明外存有瓶頸,需要升級(jí)硬盤(SCSI))
Mem:內(nèi)存情況
設(shè)計(jì)思想:把資源省下來(lái)不用便是浪費(fèi),如添加內(nèi)存后free值會(huì)不變,buff值會(huì)增大。 判斷物理內(nèi)存夠不夠,看交換分區(qū)的使用狀態(tài)。
交互命令:
[Space]立即刷新顯示
[h]顯示幫助屏幕
[k] 終止某進(jìn)程。你會(huì)被提示輸入進(jìn)程 ID 以及要發(fā)送給它的信號(hào)。 一般的終止進(jìn)程可以使用15信號(hào);如果不能正常結(jié)束那就使用信號(hào)9強(qiáng)制結(jié)束該進(jìn)程。默認(rèn)值是信號(hào)15。在安全模式中此命令被屏蔽。
[n] 改變顯示的進(jìn)程數(shù)量。你會(huì)被提示輸入數(shù)量。
[u] 按用戶排序。
[M] 按內(nèi)存用量排序。
[o][O] 改變顯示項(xiàng)目的順序。
[P] 根據(jù)CPU使用百分比大小進(jìn)行排序。
[T] 根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)行排序。
[Ctrl+L] 擦除并且重寫屏幕。
[q] 退出程序。
[r] 重新安排一個(gè)進(jìn)程的優(yōu)先級(jí)別。系統(tǒng)提示用戶輸入需要改變的進(jìn)程PID以及需要設(shè)置的進(jìn)程優(yōu)先級(jí)值。輸入一個(gè)正值將使優(yōu)先級(jí)降低,反之則可以使該進(jìn)程擁有更高的優(yōu)先權(quán)。默認(rèn)值是10。
[S] 切換到累計(jì)模式。
[s] 改變兩次刷新之間的延遲時(shí)間。系統(tǒng)將提示用戶輸入新的時(shí)間,單位為s。如果有小數(shù),就換算成m s。輸入0值則系統(tǒng)將不斷刷新,默認(rèn)值是5 s。需要注意的是如果設(shè)置太小的時(shí)間,很可能會(huì)引起不斷刷新,從而根本來(lái)不及看清顯示的情況,而且系統(tǒng)負(fù)載也會(huì)大大增加。
縮寫含義:
PID每個(gè)進(jìn)程的ID
USER進(jìn)程所有者的用戶名
PRI每個(gè)進(jìn)程的優(yōu)先級(jí)別
NI每個(gè)優(yōu)先級(jí)的值
SIZE 進(jìn)程的代碼大小加上數(shù)據(jù)大小再加上堆??臻g大小的總數(shù),單位是KB RSS 進(jìn)程占用的物理內(nèi)存的總數(shù)量,單位是KB
SHARE進(jìn)程使用共享內(nèi)存的數(shù)量
STAT 進(jìn)程的狀態(tài)。其中S代表休眠狀態(tài);D代表不可中斷的休眠狀態(tài);R代表運(yùn)行狀態(tài);Z代表僵死狀態(tài);T代表停止或跟蹤狀態(tài)
%CPU進(jìn)程自最近一次刷新以來(lái)所占用的CPU時(shí)間和總時(shí)間的百分比
%MEM進(jìn)程占用的物理內(nèi)存占總內(nèi)存的百分比
TIME進(jìn)程自啟動(dòng)以來(lái)所占用的總CPU時(shí)間
CPU CPU標(biāo)識(shí)
COMMAND進(jìn)程的命令名稱
2. ps命令
ps查看當(dāng)前用戶的活動(dòng)進(jìn)程,如果加上參數(shù)可以顯示更多的信息,如-a,顯示所有用戶的進(jìn)程
ps ax :tty值為“?”是守護(hù)進(jìn)程,叫deamon 無(wú)終端,大多系統(tǒng)服務(wù)是此進(jìn)程,內(nèi)核態(tài)進(jìn)程是看不到的
ps axf :看進(jìn)程樹,以樹形方式現(xiàn)實(shí)進(jìn)程列表敲 ,init是1號(hào)進(jìn)程,系統(tǒng)所有進(jìn)程都是它派生的,殺不掉
ps axm :會(huì)把線程列出來(lái)。在linux下進(jìn)程和線程是統(tǒng)一的,是輕量級(jí)進(jìn)程的兩種方式。
ps axu :顯示進(jìn)程的詳細(xì)狀態(tài)。
vsz:說(shuō)此進(jìn)程一共占用了多大物理內(nèi)存。
rss:請(qǐng)求常駐內(nèi)存多少
查看線程
其實(shí)linux沒(méi)有線程,都是用進(jìn)程模仿的
1. ps -ef f
用樹形顯示進(jìn)程和線程,比如說(shuō)我想找到proftp現(xiàn)在有多少個(gè)進(jìn)程/線程,可以用
$ ps -ef f | grep proftpd
nobody 23117 1 0 Dec23 ? S 0:00 proftpd: (accepting connections)
jack 23121 23117 0 Dec23 ? S 7:57 \_ proftpd: jack - ftpsrv: IDLE
jack 28944 23117 0 Dec23 ? S 4:56 \_ proftpd: jack - ftpsrv: IDLE
這樣就可以看到proftpd這個(gè)進(jìn)程下面掛了兩個(gè)線程。
在Linux下面好像因?yàn)闆](méi)有真正的線程,是用進(jìn)程模擬的,有一個(gè)是輔助線程,所以真正程序開的線程應(yīng)該只有一個(gè)。
2. pstree -c也可以達(dá)到相同的效果
$ pstree -c | grep proftpd
|-proftpd-+-proftpd
| `-proftpd
3. cat /proc/${pid}/status
可以查看大致的情況
4. pstack
有些系統(tǒng)可以用這個(gè)東東,可以查看所有線程的堆棧
如何查看進(jìn)程中各線程的內(nèi)存占用情況?
用ps aux只能查看到進(jìn)程,如果進(jìn)程里面使用了pthread編程,用什么命令才能查詢到進(jìn)程里的線程資源占用?
ps aux | grep不就是了
相關(guān)文章

集成系統(tǒng)級(jí)Claw模式! Deepin 官宣發(fā)布 25.1 版本
deepin操作系統(tǒng)發(fā)布了最新的 25.1 版本更新,該版本基于 deepin 25 正式版積累的多輪內(nèi)測(cè)成果,在 AI 能力、內(nèi)核版本、桌面環(huán)境、文件管理器以及系統(tǒng)安全等方面進(jìn)行了更新2026-04-13
又一代老硬件退場(chǎng)! Linux 內(nèi)核正式放棄Intel 486 CPU
在過(guò)去的幾十年間,CPU 的架構(gòu)已經(jīng)經(jīng)歷了飛速發(fā)展,x86 系列就是其中之一,而 i486 則屬于該系列中的一個(gè),當(dāng)前,i486 的CPU處理器已經(jīng)夠老,從 Linux 7.1 開始將不再有對(duì)2026-04-09
趕緊收藏! 全網(wǎng)最全 Linux 命令總結(jié)
我把 Linux 中最常用、最實(shí)用、最常被問(wèn)到的命令按照實(shí)際使用場(chǎng)景分類整理,方便你快速查閱和記憶,內(nèi)容覆蓋日常運(yùn)維、開發(fā)調(diào)試、性能分析、文件處理、網(wǎng)絡(luò)、安全、系統(tǒng)管2026-04-08
一分鐘內(nèi)檢查L(zhǎng)inux服務(wù)器性能? 9個(gè)性能檢測(cè)常用的基本命令
今天我們來(lái)看看Linux系統(tǒng)中用于性能監(jiān)控的一系列命令,這些命令可以快速查看機(jī)器的負(fù)載情況,詳細(xì)請(qǐng)看下文介紹2026-03-18
從零基礎(chǔ)到精通! 適合高級(jí)用戶的15款Linux發(fā)行版推薦
Linux作為操作系統(tǒng)領(lǐng)域靈活性和可定制性的基石,提供了大量滿足不同用戶需求的發(fā)行版,今天分享適合高級(jí)用戶的15款Linux發(fā)行版2026-03-10
開箱即用? 這4個(gè)高手級(jí)Linux發(fā)行版遠(yuǎn)沒(méi)你想象的那么安全易用
如果你正在糾結(jié)用哪個(gè)發(fā)行版?零基礎(chǔ)新手別被“高端”“極客”“聲明式”這些詞沖昏頭腦,先用好用的,再慢慢進(jìn)階2026-03-10
這幾款SSH工具真的夠用了! Linux好用的ssh工具推薦
在Linux上使用SSH,您需要安裝一個(gè)SSH客戶端,今天整理找到的8 款 SSH / 終端工具,從免費(fèi)開源到企業(yè)級(jí)商用,從輕量化命令行到一站式工具箱,每款都做了介紹與對(duì)比,希望能2026-03-09
在Linux系統(tǒng)下有兩種用戶,即高級(jí)用戶root,普通用戶,高級(jí)用戶root可以在系統(tǒng)中做任何事情,普通用戶僅可在Linux系統(tǒng)中做有限的事情,下面我們就來(lái)看看切換方法2026-02-28
揭秘當(dāng)前登錄用戶的身份! Linux中使用logname命令的技巧
logname命令就是這樣一個(gè)簡(jiǎn)單但強(qiáng)大的工具,它能幫助我們輕松獲取當(dāng)前登錄用戶的用戶名,今天,我們就來(lái)深入探索一下這個(gè)命令的工作原理、使用方法和最佳實(shí)踐2026-02-26
在 Linux 系統(tǒng)中,DNS 緩存是一種將域名和 IP 地址映射關(guān)系緩存在本地的機(jī)制,可以加快域名解析速度,并減輕 DNS 服務(wù)器的負(fù)載2026-02-26



