導航:首頁 > 操作系統 > linux查看文件句柄數

linux查看文件句柄數

發布時間:2022-09-24 08:07:05

1. linux怎麼查看默認的句柄數

您好!很高興能為您解答。
修改文件句柄數在Linux下,我們使用ulimit -n
命令可以看到單個進程能夠打開的最大文件句柄數量(socket連接也算在裡面)。系統默認值1024。

對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有
點捉襟見肘了。如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到「too many files
open」的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:

1.lsof -n |awk '{print $2}'|sort|uniq -c |sort
-nr|more

在系統訪問高峰時間以root用戶執行上面的腳本,可能出現的結果如下:

1.# lsof -n|awk '{print $2}'|sort|uniq -c |sort
-nr|more
2. 131 24204
3. 57 24244
4. 57 24231

5. 56 24264

其中第一行是打開的文件句柄數量,第二行是進程號。得到進程號後,我們可以通過ps命令得到進程的詳細內容。

1.ps -aef|grep 24204
2.mysql 24204 24162
99 16:15 ? 00:24:25 /usr/sbin/mysqld

哦,原來是mysql進程打開最多文件句柄數量。但是他目前只打開了131個文件句柄數量,遠遠底於系統默認值1024。

但是如果系統並發特別大,尤其是squid伺服器,很有可能會超過1024。這時候就必須要調整系統參數,以適應應用變化。Linux有硬性限制和軟性限制。可以通過ulimit來設定這兩個參數。方法如下,以root用戶運行以下命令:

1.ulimit -HSn 4096

以 上命令中,H指定了硬性大小,S指定了軟性大小,n表示設定單個進程最大的打開文件句柄數量。個人覺得最好不要超過4096,畢竟打開的文件句柄數越多響
應時間肯定會越慢。設定句柄數量後,系統重啟後,又會恢復默認值。如果想永久保存下來,,可以修改 /etc/profile
把上面命令加到最後。(findsun提出的辦法比較合理)

/////////////////////////////////////////////////////////////////////////////

在 Linux下面部署應用的時候,有時候會遇上Socket/File: Can't open so many
files的問題,其實Linux是有文件句柄限制的(就像WinXP?),而且默認不是很高,一般都是1024,作為一台生產伺服器,其實很容易就達到
這個數量,因此我們需要把這個值改大一些。

大概知道ulimit這個命令是相關的,上Google搜索了一下,大多數說的很含糊,也沒有統一說一下,經過兩個小時看了不少文章終於弄清楚ulimit相關的一些配置問題。

我們可以用ulimit -a來查看所有限制值,我只關心文件句柄數量的問題

open files (-n) 1024

這個就是限制數量

這里,有很多ulimit的文章都說的很含糊,究竟這個1024是系統的限制,還是用戶的限制呢。其實,這個是用戶限制來的,完整的說法,應該是當前用戶准備要運行的程序的限制。

1、這個限制是針對單個程序的限制

2、這個限制不會改變之前已經運行了的程序的限制

3、對這個值的修改,退出了當前的shell就會消失

比如說,我先運行了一個程序A,然後通過ulimit修改了限制為2048,然後運行B,然後退出了shell再登錄,然後運行C。那就只有B可以打開2048個句柄。

如果我們需要改變整體的限制值,或者我們運行的程序是系統啟動的,應該怎麼處理呢

其中一個方法,是想ulimit修改命令放入/etc/profile裡面,但是這個做法並不好

正確的做法,應該是修改/etc/security/limits.conf

裡面有很詳細的注釋,比如

* soft nofile 2048

* hard nofile 32768

就可以將文件句柄限制統一改成軟2048,硬32768

這里涉及另外一個問題,什麼是軟限制,什麼是硬限制

硬限制是實際的限制,而軟限制,是warnning限制,只會做出warning

其實ulimit命令本身就有分軟硬設置,加-H就是硬,加-S就是軟

默認顯示的是軟限制,如果修改的時候沒有加上的話,就是兩個一起改

配置文件最前面的一位是domain,設置為星號代表全局,另外你也可以針對不同的用戶做出不同的限制

修改了,重新登錄用ulimit一開就立刻生效了,不過之前啟動過的程序要重新啟動才能使用新的值。我用的是CentOS,似乎有些系統需要重啟才能生效。

ulimit其實就是對單一程序的限制

那系統總限制呢

其實是在這里,/proc/sys/fs/file-max

可以通過cat查看目前的值,echo來立刻修改

另外還有一個,/proc/sys/fs/file-nr

只讀,可以看到整個系統目前使用的文件句柄數量

查找文件句柄問題的時候,還有一個很實用的程序lsof

可以很方便看到某個進程開了那些句柄

也可以看到某個文件/目錄被什麼進程佔用了。

2. linux 怎麼查句柄泄露問題

首先確定此java程序的PID,pidof java 然後去到/proc/`pidof java`/fd目錄,wc -l看看打開的文件句柄數。

3. linux如何獲取磁碟的繁忙程度和打開的文件句柄數

磁碟繁忙程度一般用iostat看

可以從 /proc/sys/fs/file-nr,看到整個系統目前使用的文件句柄數量

查找文件句柄問題的時候,還有一個很實用的程序lsof.可以很方便看到某個進程開了那些句柄.也可以看到某個文件/目錄被什麼進程佔用了

4. 文件句柄數是什麼東東怎樣才能把Linux的文件句柄數給消耗完(不修改文件)或者說有什麼工具模擬消耗

文件句柄那是windows的東西吧, linux下一般叫做文件描述符(File Descriptor), 使用ulimit -n可查看這個最大打開文件數限制. 只要你多次調用fopen,並且不調用fclose,很快就可以把它消耗完.不過這是對單個程序的限制.

5. linux下面怎麼查詢某個進程正在使用的socket句柄數量

可以通過指令查詢當前進程打開了多少句柄,Linux下有exec函數族可以執行指令,把指令寫進去就行了。
-查看當前進程打開了多少句柄數
# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
-根據ID號來查看進程名。
# ps aef|grep ID號
滿意請採納。

6. linux 句柄數代表打開文件數嗎

修改文件句柄數在Linux下,我們使用ulimit -n命令可以看到單個進程能夠打開的最大文件句柄數量(socket連接也算在裡面)。系統默認值1024。
對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有點捉襟見肘了。如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到「too many filesopen」的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
在系統訪問高峰時間以root用戶執行上面的腳本,可能出現的結果如下:
# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
13124204
5724244
5724231
5624264
其中第一行是打開的文件句柄數量,第二行是進程號。得到進程號後,我們可以通過ps命令得到進程的詳細內容。
ps -aef|grep 24204
mysql 2420424162 99 16:15? 00:24:25/usr/sbin/mysqld

7. Linux系統中如何查看真實的可支持的最大文件打開數

在Linux下,我們使用ulimit -n 命令可以看到單個進程能夠打開的最大文件句柄數量(socket連接也算在裡面)。系統默認值1024。
對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有 點捉襟見肘了。如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到「too many files open」的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
在系統訪問高峰時間以root用戶執行上面的腳本,可能出現的結果如下:
# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
131 24204
57 24244
57 24231
56 24264
其中第一行是打開的文件句柄數量,第二行是進程號。得到進程號後,我們可以通過ps命令得到進程的詳細內容。
ps -aef |grep 24204
mysql 24204 24162 99 16:15 ? 00:24:25 /usr/sbin/mysqld
哦,原來是mysql進程打開最多文件句柄數量。但是他目前只打開了131個文件句柄數量,遠遠底於系統默認值1024。
但是如果系統並發特別大,尤其是squid伺服器,很有可能會超過1024。這時候就必須要調整系統參數,以適應應用變化。Linux有硬性限制和軟性限制。可以通過ulimit來設定這兩個參數。方法如下,以root用戶運行以下命令:
ulimit -HSn 4096
以上命令中,H指定了硬性大小,S指定了軟性大小,n表示設定單個進程最大的打開文件句柄數量。個人覺得最好不要超過4096,畢竟打開的文件句柄 數越多響應時間肯定會越慢。設定句柄數量後,系統重啟後,又會恢復默認值。如果想永久保存下來,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最後。

8. linux 句柄數是什麼

一個進程在運行中會打開很多資源,包括文件file、通訊連接socket、正在監聽的埠等,我們把這些統稱為句柄(handle)。

9. Unix如何查看用戶的最大文件句柄數及使用情況

Linux系統如何查看修改最大打開文件數,這個問題對於很多剛剛學習linux的小夥伴來說覺得有點奇怪。Linux系統和windows不同之處在於更強的多任務多線程,由於文件系統結構的不同linux針對不同進程不同用戶都可以設置最打打開文件數。(如下圖,在設置某些配置文件的時候,會出現下圖提示超過系統最大打開文件數

工具/原料

Centos
Linux文件數打開數

查看當前系統最大的文件打開數,如下圖
在linux終端中輸入ulimit -a
「open files」參數選項後面的數值就是當前系統支持的最大打開文件數

修改linux最大文件打開數
如果要修改linux最大文件打開數,可以通過如下圖參數命令 unlimit -n 後面接需要設置的文件數量。

設置好之後,再次查看 unlimit -a 你會發現已經設置為新的數量了

設置好之後,再次編輯修改重啟設置的服務,已經沒有剛剛那個1024文件數限制的報錯提示

其他修改方法
除此之外,如果針對不同的用戶。也可以通過編輯修改 /etc/rc.local文件設置環境變數,添加 unlimit -n
如下圖,重啟之後一般就自動設置好了

查看系統句柄文件數
當前系統文件句柄的最大數目,只用於查看,不能設置修改
cat /proc/sys/fs/file-max

查看進程打開文件數
如果需要查看所有進程的文件打開數,如下圖命令lsof |wc -l

特別提醒:
對於做伺服器的linux系統來說,適當調整增加文件打開數量。可以加快服務性能,並且提供服務的連接線程數量。咗嚛提醒為了伺服器性能,建議也不要設置太大哈

10. 修改linux的最大文件句柄數限制

修改linux的最大文件句柄數限制對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有點捉襟見肘了。如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到too
many
files
open的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:1lsof
-n
|awk
'{print
$2}'|sort|uniq
-c
|sort
-nr|more修改linux的最大文件句柄數限制的方法:
1)ulimit
-n
65535
在當前session有效,用戶退出或者系統重新後恢復默認值
2)修改profile文件:在profile文件中添加:ulimit
-n
65535
只對當個用戶有效
3)修改文件:/etc/security/limits.conf,在文件中添加:(立即生效-當前session中運行ulimit
-a命令無法顯示)[html]
*
soft
nofile
32768
#限制單個進程最大文件句柄數(到達此限制時系統報警)
*
hard
nofile
65536
#限制單個進程最大文件句柄數(到達此限制時系統報錯)
4)修改文件:/etc/sysctl.conf。在文件中添加:[html]
fs.file-max=655350
#限制整個系統最大文件句柄數
運行命令:/sbin/sysctl
-p
使配置生效

閱讀全文

與linux查看文件句柄數相關的資料

熱點內容
安卓系統游戲怎麼開發 瀏覽:410
抖助力app綁定的銀行卡怎麼辦 瀏覽:466
我的電腦文件夾打開方式 瀏覽:931
東莞加密u盤公司 瀏覽:137
graphvizlinux 瀏覽:438
智能手錶藍牙怎麼下載app 瀏覽:293
女程序員下班菜譜 瀏覽:260
加密貨幣買什麼比較靠譜 瀏覽:277
用圖片的地圖再編譯的地方 瀏覽:462
python監控系統進程 瀏覽:236
群暉怎麼取消照片共享文件夾 瀏覽:156
程序員那麼可愛第幾集陸璃懷孕 瀏覽:615
西門子st編程手冊 瀏覽:59
mt4編程書籍 瀏覽:21
單片機模擬實驗設置電壓 瀏覽:948
如何用電腦打開安卓手機內存 瀏覽:860
java數據訪問層 瀏覽:181
代碼優化是編譯程序的必要階段 瀏覽:623
程序員那麼可愛孩子還在嗎 瀏覽:513
以下哪些是資料庫編程技術 瀏覽:164