linux 文件描述符和inode 的理解和區別

inode 或i節點是指對文件的索引。如一個系統,全部文件是放在磁盤或flash上,就要編個目錄來講明每一個文件在什麼地方,有什麼屬性,及大小等。就像書本的目錄同樣,便於查找和管理。這目錄是操做系統須要的,用來找文件或叫管理文件。許多操做系統都用到這個概念,如linux, 某些嵌入式文件系統等。固然,對某個系統來講,有許多i節點。因此對i節點自己也是要進行管理的。node

 

    在linux中,內核經過inode來找到每一個文件,但一個文件能夠被許多用戶同時打開或一個用戶同時打開屢次。這就有一個問題,如何管理文件的當前位移量,由於可能每一個用戶打開文件後進行的操做都不同,這樣文件位移量也不一樣,固然還有其餘的一些問題。因此linux又搞了一個文件描述符(file descriptor)這個東西,來分別爲每個用戶服務。每一個用戶每次打開一個文件,就產生一個文件描述符,屢次打開就產生多個文件描述符,一一對應,無論是同一個用戶,仍是多個用戶。該文件描述符就記錄了當前打開的文件的偏移量等數據。因此一個i節點能夠有0個或多個文件描述符。多個文件描述符能夠對應一個i節點。linux

 

「too manay open files」 錯誤與文件描述符有關操作系統

 

系統級限制:sysctl命令和proc文件系統中查看到的數值是同樣的,這屬於系統級限制,它是限制全部用戶打開文件描述符的總和.net

查看系統限制命令:blog

  sysctl -a | grep -i file-max --color索引

  cat /proc/sys/fs/file-maxip

用戶級限制:ulimit命令看到的是用戶級的最大文件描述符限制,也就是說每個用戶登陸後執行的程序佔用文件描述符的總數不能超過這個限制flash

查看用戶限制命令:  it

  ulimit -n登錄

用戶級修改在文件 /etc/security/limits.conf

 

文件描述符理解:

https://blog.csdn.net/cywosp/article/details/38965239

https://blog.csdn.net/kumu_linux/article/details/7877770

相關文章
相關標籤/搜索