linux檔案描述符fd windows下的控制代碼

2021-09-08 22:56:15 字數 1827 閱讀 6132

在linux系統中一切皆可以看成是檔案,檔案又可分為:普通檔案、目錄檔案、鏈結檔案和裝置檔案

fd:file descriptor

檔案描述符0,1,2分別給了標準輸入、標準輸出和錯誤輸出。

ls -l /proc/pid/fd可以檢視某個程序所使用的fd

用lsof可以檢視

比如:lsof -i :22 的顯示結果中有一列是fd,這個就是監聽在22號埠的程序開啟的檔案描述符。比如fd這一列顯示的是3。再使用lsof -d 3就可以檢視到,檔案描述符3所開啟的檔案。

1.    系統最大開啟檔案描述符數:/proc/sys/fs/file-max

設定a.    臨時性

# echo 1000000 > /proc/sys/fs/file-max

b.    永久性:在/etc/sysctl.conf中設定

fs.file-max = 1000000

2.    程序最大開啟檔案描述符數:user limit中nofile的soft limit

a.    檢視

$ ulimit -n

2. 設定

a.    臨時性:通過ulimit -sn設定最大開啟檔案描述符數的soft limit,注意soft limit不能大於hard limit(ulimit -hn可檢視hard limit),另外ulimit -n預設檢視的是soft limit,但是ulimit -n 1800000則是同時設定soft limit和hard limit。對於非root使用者只能設定比原來小的hard limit。

檢視hard limit:

$ ulimit -hn

設定soft limit,必須小於hard limit:

$ ulimit -sn 1600000

2.    永久性:上面的方法只是臨時性的,登出重新登入就失效了,而且不能增大hard limit,只能在hard limit範圍內修改soft limit。若要使修改永久有效,則需要在/etc/security/limits.conf中進行設定(需要root許可權),可新增如下兩行,表示使用者chanon最大開啟檔案描述符數的soft limit為1800000,hard limit為2000000。以下設定需要登出之後重新登入才能生效:

chanon           soft    nofile          1800000

chanon           hard   nofile          2000000

設定nofile的hard limit還有一點要注意的就是hard limit不能大於/proc/sys/fs/nr_open,假如hard limit大於nr_open,登出後無法正常登入。可以修改nr_open的值:

# echo 2000000 > /proc/sys/fs/nr_open

3.    檢視當前系統使用的開啟檔案描述符數

[root@localhost bin]# cat /proc/sys/fs/file-nr

5664        0        186405

其中第乙個數表示當前系統已分配使用的開啟檔案描述符數,第二個數為分配後已釋放的(目前已不再使用),第三個數等於file-max。

4.    總結:

a.    所有程序開啟的檔案描述符數不能超過/proc/sys/fs/file-max

b.    單個程序開啟的檔案描述符數不能超過user limit中nofile的soft limit

c.    nofile的soft limit不能超過其hard limit

d.    nofile的hard limit不能超過/proc/sys/fs/nr_open

參考:

linux檔案描述符

本文介紹了檔案描述符,1 首先說什麼是檔案描述符,它有什麼作用?檔案描述符是乙個簡單的整數,用以標明每乙個被程序所開啟的檔案和socket。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案,並指定訪問該檔案的方式,呼叫成功後返回乙個檔案描述符。creat 開啟乙個檔案,如果該檔案不存在,則建立它...

linux檔案描述符

當某個程式開啟檔案時,作業系統返回相應的檔案描述符,程式為了處理該檔案必須引用此描述符。所謂的檔案描述符是乙個低階的正整數。最前面的三個檔案描述符 0,1,2 分別與標準輸入 stdin 標準輸出 stdout 和標準錯誤 stderr 對應。因此,函式 scanf 使用 stdin,而函式 pri...

Linux 檔案描述符

我們之前就知道在linux作業系統下 一切皆檔案 所以在這個條件下,所有研究的物件都變相的相當於研究檔案,那麼對檔案系統的研究也應該是必須的。我們的核心利用檔案描述符來訪問檔案,每個檔案描述符都是非負整數,開啟現存的檔案或者是新建檔案時,核心會返回乙個檔案描述符,讀寫檔案也需要使用檔案描述符來指定待...