標籤:linux linux線程數 linux進程 -bash: fork: retry
linux下查看線程數的方法及超過系統線程最大值的報錯
- 通過/proc偽檔案系統
說明:
Linux系統上的/proc目錄是一種檔案系統,即proc檔案系統。與其它常見的檔案系統不同的是,/proc是一種偽檔案系統(也即虛擬檔案系統),儲存的是當前核心運行狀態的一系列特殊檔案,使用者可以通過這些檔案查看有關係統硬體及當前正在運行進程的資訊,甚至可以通過更改其中某些檔案來改變核心的運行狀態。
基於/proc檔案系統如上所述的特殊性,其內的檔案也常被稱作虛擬檔案,並具有一些獨特的特點。例如,其中有些檔案雖然使用查看命令查看時會返回大量資訊,但檔案本身的大小卻會顯示為0位元組。此外,這些特殊檔案中大多數檔案的時間及日期屬性通常為當前系統時間和日期,這跟它們隨時會被重新整理(儲存於RAM中)有關。
為了查看及使用上的方便,這些檔案通常會按照相關性進行分類儲存於不同的目錄甚至子目錄中,如/proc/scsi目錄中儲存的就是當前系統上所有SCSI裝置的相關資訊,/proc/N中儲存的則是系統當前正在啟動並執行進程的相關資訊,其中N為正在啟動並執行進程(可以想象得到,在某進程結束後其相關目錄則會消失)。
大多數虛擬檔案可以使用檔案查看命令如cat、more或者less進行查看,有些檔案資訊表述的內容可以一目瞭然,但也有檔案的資訊卻不怎麼具有可讀性。不過,這些可讀性較差的檔案在使用一些命令如apm、free、lspci或top查看時卻可以有著不錯的表現。##查看線程數的方法cat /proc/{pid}/status其中Threads後面跟的就是線程數。或者:ls /proc/{pid}/task | wc -l##舉例如下cat /proc/27587/statusThreads: 3或:ls /proc/27587/task |wc -l3
- 使用top命令
##top命令後面跟-H,會列印出所有線程列表top -Htop -H -p {pid}##舉例如下top -H -p 27587Tasks: 3 total, 0 running, 3 sleeping, 0 stopped, 0 zombiePID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND27587 siterec 20 0 1007m 79m 4772 S 1.7 0.2 203:34.71 python2753 siterec 20 0 1007m 79m 4772 S 0.0 0.2 2:19.32 python27590 siterec 20 0 1007m 79m 4772 S 0.0 0.2 0:00.00 python
- 使用ps命令
##ps 後面加上H,能列印某個進程的所有線程ps hH p {pid} | wc -l##舉例如下PID TTY STAT TIME COMMAND17721 pts/1 Sl 0:00 /usr/java/jdk1.8.0_60/bin/java -Djava.util.logging.config.file=/mnt/deploy/apache-tomcat-8.0.35/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoader17721 pts/1 Sl 0:00 /usr/java/jdk1.8.0_60/bin/java -Djava.util.logging.config.file=/mnt/deploy/apache-tomcat-8.0.35/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoader17721 pts/1 Sl 0:00 /usr/java/jdk1.8.0_60/bin/java -Djava.util.logging.config.file=/mnt/deploy/apache-tomcat-8.0.35/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoader
使用ps命令來查看進程的時候,進程狀態分別對應的含義如下:
D 不可中斷睡眠 (通常是在IO操作) 收到訊號不喚醒和不可運行, 進程必須等待直到有中斷髮生
R 正在運行或可運行(在運行隊列排隊中)
S 可中斷睡眠 (休眠中, 受阻, 在等待某個條件的形成或接受到訊號)
T 已停止的 進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU訊號後停止運行
W 正在換頁(2.6.核心之前有效)
X 死進程 (未開啟)
Z 殭屍進程 進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放BSD風格的
< 高優先順序(not nice to other users)
N 低優先順序(nice to other users)
L 頁面鎖定在記憶體(即時和定製的IO)
s 一個資訊頭
l 多線程(使用 CLONE_THREAD,像NPTL的pthreads的那樣)
+ 在前台進程組
- 使用pstree命令
##列印所有進程及其線程pstree -p ##列印某個進程的線程數pstree -p {pid} | wc -l
- 超過系統最大線程數
##報錯資訊:-bash: fork: retry: 沒有子進程 -bash: fork: retry: 資源暫時不可用##解決方案:cat /etc/security/limits.d/20-nproc.conf或:cat /etc/security/limits.d/90-nproc.conf\* soft nproc 1024 // 將此處修改成unlimited或者其他數值root soft nproc unlimited
linux下查看線程數的方法及超過系統線程最大值的報錯