一、將/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文件,果然nofile和nproc被修改了,將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的值。
