一、將/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
的值。