linux進程數量
『壹』 linux正常進程數是多少.
不同發行版是不同的,而且同一發行版的不同安裝(工作站、伺服器、自定義等)默認啟動的進程數也是不同的。
linux 系統中單個進程的最大線程數有其最大的限制 PTHREAD_THREADS_MAX
這個限制可以在 /usr/include/bits/local_lim.h 中查看
對 linuxthreads 這個值一般是 1024,對於 nptl 則沒有硬性的限制,僅僅受限於系統的資源。
這個系統的資源主要就是線程的 stack 所佔用的內存,用 ulimit -s 可以查看默認的線程棧大小,一般情況下,這個值是 8M。
可以寫一段簡單的代碼驗證最多可以創建多少個線程。
試驗顯示,在 linuxthreads 上最多可以創建 381 個線程,之後就會返回 EAGAIN
在 nptl 上最多可以創建 382 個線程,之後就會返回 ENOMEM
這個值和理論完全相符,因為 32 位 linux 下的進程用戶空間是 3G 的大小,也就是 3072M,用 3072M 除以 8M 得 384,但是實際上代碼段和數據段等還要佔用一些空間,這個值應該向下取整到 383,再減去主線程,得到 382。
那為什麼 linuxthreads 上還要少一個線程呢?這可太對了,因為 linuxthreads 還需要一個管理線程。
為了突破內存的限制,可以有兩種方法:
1) 用 ulimit -s 1024 減小默認的棧大小
2) 調用 pthread_create 的時候用 pthread_attr_getstacksize 設置一個較小的棧大小
要注意的是,即使這樣的也無法突破 1024 個線程的硬限制,除非重新編譯 C 庫<=此處值得討論,我在ubuntu 7.04+3G內存上用ulimit -s 1024,則可以得到3054個線程。
『貳』 linux中如何查看進程總數
方法一:
pstree -p 14686(PID),可獲取到nginx的四個子進程(或 ps -ef |grep nginx)
方法二:ps -eL -o pid,%cpu,lwp|grep -i pid
『叄』 linux中一個進程的最大線程數量是多少
linux 系統中單個進程的最大線程數有其最大的限制 PTHREAD_THREADS_MAX
這個限制可以在 /usr/include/bits/local_lim.h 中查看關於Linux命令的介紹,看看《linux就該這么學》,具體關於這一章地址3w(dot)linuxprobe/chapter-02(dot)html
對 linuxthreads 這個值一般是 1024,對於 nptl 則沒有硬性的限制,僅僅受限於系統的資源
這個系統的資源主要就是線程的 stack 所佔用的內存,用 ulimit -s 可以查看默認的線程棧大小,一般情況下,這個值是 8M
『肆』 如何統計Linux的進程數
統計有多少行用wc命令的-l參數,wc命令可以統計出多少字、行、字元數,它的-l參數表示僅僅統計出行數。這個命令一般是和管道符結合使用,比如想知道一個文件有多少行可以這樣用:
cat /etc/passwd |wc -l
而查看Linux當前的所有進程用ps aux命令,結果中一行是一個進程,所以,統計Linux系統的進程總數的命令應該是:
ps aux | wc -l