linux系統異常原因總結(一)路由器系統崩潰原因總結一一未關閉配置文件句柄導致句柄數太多消耗資源設備崩潰


修復vty_close未關閉配置文件句柄導致句柄數太多,引發系統異常問題

如何判斷是配置文件句柄數太多 引發系統異常問題

 

【日志表現】 LOG中打印表現

too many open files

 

 

 

【排查進程】

先使用ps查看當前正在進行的進程,取一個個PID進行查看,判斷是哪一個句柄未釋放導致當前的系統異常問題 

正常的進程句柄釋放情況如下

 

【異常進程】

當前有較多句柄未被關閉,判斷為當前的進程異常

 

 

可以看到上面藍色的字 表示的為 句柄

****句柄小知識*****

在windows中,句柄是一個32位的整數,是內存中維護的一個對象的地址列表的整數索引,這些對象包括:窗口(window)、塊(module)、任務(task)、實例 (instance)、文件(file)、內存塊(block of memory)、菜單(menu)、控制(control)、字體(font)、資源(resource),包括圖標(icon),光標 (cursor),字符串(string)等、GDI對象(GDI object),包括位圖(bitmap),畫刷(brush),元文件(metafile),調色板(palette),畫筆(pen),區域(region),以及設備描述表(device context)。

在Linux中,每一個進程都由task_struct 數據結構來定義,即PCB,進程通過PCB中的文件描述符表找到文件描述符fd所指向的文件指針filp,內核(kernel)利用文件描述符(file descriptor)來訪問文件。文件描述符是非負整數。打開現存文件或新建文件時,內核會返回一個文件描述符。讀寫文件也需要使用文件描述符來指定待讀寫的文件。文件描述符表是一個指針數組,每一個元素都指向一個內核的打開文件對象,而fd,就是這個表的下標。當用戶打開一個文件時,內核會在內部生成一個打開文件對象,並在這個表里找到一個空項,讓這一項指向生成的打開文件對象,並返回這一項的下標作為fd,Linux中的文件描述符類似於Windows下文件句柄的概念,但區別是Windows的文件句柄是一個全局的概念,而Linux下文件句柄的作用域只在本進程空間,其中0(標准輸入)、1(標准輸出)、2(標准錯誤)是每一個進程中相同的文件描述符,由操作系統規定好,文件描述符所指向元素的文件指針為struct file結構體,在系統中是一個全局的指針。


免責聲明!

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



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