Linux 文件句柄說明



Linux句柄

Linux中所有的事物或資源都是以文件的形式存在,比如消息、共享內存、連接等,句柄可以理解為指向這些文件的指針。

對於這些句柄,Linux是有數量限制的,單個進程默認可以打開的句柄數上限,可以用以下命令來查看:

$ ulimit -a

查看某個進程的句柄數上限,命令是:

$ ulimit -a PID

單個進程句柄數的修改(系統重啟后會恢復默認值)

$ ulimit -n 句柄數

永久修改單個進程句柄數

$ cat >> /etc/security/limits.conf << EOF * soft nofile 102400 * hard nofile 102400 EOF

說明:修改完成后,需要重新打開終端,使用 ulimit -a 查看句柄數

查詢系統中指定進程占用的句柄數

$ lsof -n | grep [PID|進程名]| wc -l

查詢系系統中進程占用的句柄數

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

文件類型有以下幾種:
DIR:表示目錄。
CHR:表示字符類型。
BLK:塊設備類型。
UNIX: UNIX 域套接字。
FIFO:先進先出 (FIFO) 隊列。
IPv4:網際協議 (IP) 套接字。

LINUX對能夠打開的文件句柄的數量做了限制。限制是分為三個層面:系統層面,用戶層面和進程層面。
如果某個進程打開的文件句柄超過限制,再打開文件就會報錯。因此,在編程時,如果進程要占用大量文件句柄的話,
就要看看是否要調整最大可打開的文件句柄數,同時也要注意close釋放掉不用的文件句柄。

系統層面

$ cat /proc/sys/fs/file-max

用戶層面

$ ulimit -n

進程層面

$ cat /proc/PID/limits

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM