linux中檔案描述符

2022-06-29 18:27:12 字數 1098 閱讀 2875

在linux系統中,所有東西都可以看成是檔案,檔案又可以分為普通檔案,目錄檔案,鏈結檔案和裝置檔案。檔案描述符是核心為了高效管理已被開啟的檔案所建立的索引,是乙個非負整數用於指代被開啟的檔案,所有執行i/o操作的系統呼叫都是通過檔案描述符。

程式剛剛啟動的時候,0是標準輸入,1是標準輸出,2是錯誤輸出,如果此時開啟乙個新的檔案,他的檔案描述是3。

在執行如es程式時,開啟的檔案太多就會提示「too many open files」 ,出現這個提示的原因是程式開啟的檔案連線數量超過系統設定值。因為檔案描述符是乙個系統重要資源。

sysctl -a | grep fs.file-max

於此同時,核心為了不讓某乙個程序消耗所有的檔案資源,他也會對單個程序最大開啟檔案數做預設值處理(稱為使用者級別限制),預設值1024。

ulimit -n

在/etc/security/limits.conf檔案裡新增如下內容:

* soft noproc 11000 #限制單個程序最大檔案控制代碼數(到達此限制時系統報警)

* hard noproc 11000 #限制單個程序最大檔案控制代碼數(到達此限制時系統報錯)

* soft nofile 65535

* hard nofile 65535

注意:soft的數值應該是小於或等於hard值,soft的限制不能比hard限制高。

修改系統限制可以吧fs.file-max=419430 新增到/etc/sysctl.conf中,使用sysctl -p 即不需要重啟系統也可以生效。

echo

"fs.file-max=419430

" >> /etc/sysctl.conf

sysctl -p

另外,ulimit -n命令不能真正看到檔案的最大檔案開啟數,用如下指令碼檢視:

#!/bin/bash

for pid in `ps aux | grep nginx | grep -v grep | awk''

`docat /proc/$/limits | grep

'max open files

'done

linux檔案描述符

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

linux檔案描述符

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

Linux 檔案描述符

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