linux 打開文件句柄數nofile設置不當,引起root用戶登錄“permission denied”錯誤


一、將/etc/security/limits.conf文件添加

*                -       nofile         6525000

后,造成root用戶登錄“permission denied”錯誤

二. 問題定位

由於正常登錄被拒絕了,因此准備通過單用戶模式去查看系統日志。在這之前,通過詢問開發人員最近幾次的操作,發現開發人員修改過nofile參數,並且修改為unlimited了。

啟動linux時出現啟動菜單時,按"e"鍵,然后修改第16行將"ro"修改為"rw init=/sysroot/bin/sh",按ctrl+x啟動 進入單用戶模式,並chroot /sysroot,查看/etc/security/limits.conf文件,果然nofilenproc被修改了,將nofile設置刪除,保存,重啟機器正常

三. 知識擴展

ulimit命令是用來設置shell啟動進程所占用的資源限制的,而nofile是一個有限的值,並不是unlimited的。設置該值的時候不能超出nr_open定義的范圍(在2.6.25內核之前nr_open定義為1024*1024)。 
nr_open是一個進程最多同時打開的文件句柄數量,默認nr_open的值為1048576,可以通過cat /proc/sys/fs/nr_open查看。

如果我們想要增大nofile的值,比如300萬,則首先需要修改nr_open的值,通過直接sysctl -w fs.nr_open=或者直接寫入sysctl.conf文件來修改nr_open的值,之后在增大nofile的值。

 


免責聲明!

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



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