linux打開文件數
Ⅰ 怎樣查看linux進程打開的文件數
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系統打開文件數過大會產生什麼問題
在Linux下,我們使用ulimit-n命令可以看到單個進程能夠打開的最大文件句柄數量(socket連接也算在裡面)。系統默認值1024。對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有點捉襟見肘了。如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到「toomanyfilesopen」的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:lsof-n|awk'{print$2}'|sort|uniq-c|sort-nr|more在系統訪問高峰時間以root用戶執行上面的腳本,可能出現的結果如下:#lsof-n|awk'{print$2}'|sort|uniq-c|sort-nr|其中第一行是打開的文件句柄數量,第二行是進程號。得到進程號後,我們可以通過ps命令得到進程的詳細內容。ps-aef|grep24204mysql24204241629916:15?00:24:25/usr/sbin/mysqld哦,原來是mysql進程打開最多文件句柄數量。但是他目前只打開了131個文件句柄數量,遠遠底於系統默認值1024。但是如果系統並發特別大,尤其是squid伺服器,很有可能會超過1024。這時候就必須要調整系統參數,以適應應用變化。Linux有硬性限制和軟性限制。可以通過ulimit來設定這兩個參數。方法如下,以root用戶運行以下命令:ulimit-HSn4096以上命令中,H指定了硬性大小,S指定了軟性大小,n表示設定單個進程最大的打開文件句柄數量。個人覺得最好不要超過4096,畢竟打開的文件句柄數越多響應時間肯定會越慢。設定句柄數量後,系統重啟後,又會恢復默認值。如果想永久保存下來,可以修改.bash_profile文件,可以修改/etc/profile把上面命令加到最後。
Ⅲ linux 命令怎麼看文件數 find
可以使用如下方法:
1、ls -l |grep "^-"|wc -l或find ./company -type f | wc -l
查看某文件夾下文件的個數,包括子文件夾里的。
2、ls -lR|grep "^-"|wc -l
查看某文件夾下文件夾的個數,包括子文件夾里的。
3、ls -lR|grep "^d"|wc -l
說明:
ls -l長列表輸出該目錄下文件信息(注意這里的文件,不同於一般的文件,可能是目錄、鏈接、設備文件等)
grep "^-"
這里將長列表輸出信息過濾一部分,只保留一般文件,如果只保留目錄就是 ^d
wc -l
統計輸出信息的行數,因為已經過濾得只剩一般文件了,所以統計結果就是一般文件信息的行數,又由於一行信息對應一個文件,所以也就是文件的個數。可參考」Linux命令大全「了解命令