ubuntu下執行ulimit返回“不允許的操作”,問題解決思路


在ubuntu下執行ulimit,希望修改允許的最大打開文件數,但返回“不允許的操作”。

使用ulimit -a查看當前配置

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 127837
max locked memory       (kbytes, -l) 16384
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 127837
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited  

 一通搜索后,先使用如下解決辦法,修改/etc下的文件,通過修改/etc/security/limits.conf這個配置文件來改變系統的默認限制。在文件的末尾追加一下內容:

* soft nofile 81920
* hard nofile 81920

 *代表除root以外的所有用戶,也可以設置為特定用戶的名稱,soft表示軟限制,nofile表示文件描述符,81920是新的默認值。

如果需要修改root,需要專門指定 root soft nofile xxx

重啟系統后,root已經生效,而普通用戶的終端依然沒有生效,查找資料,系統的相關修改,修改辦法如下:

系統級別的限制

上面說到修改只對與某一個用戶有效,Linux還有系統級別的文件描述符的限制,用戶級別的設置是不能超過系統級別的。修改系統級的限制可以通 過sysctl命令修改:

1
sysctl -w fs.file-max=1000000 

 

 

file-max代表系統內核最多可以打開的文件描述符數量,如果要設置某個進程可以打開的文件描述符數量,可以通過修改nr_open:

1
 sysctl -w fs.nr_open=1000000 

 

 

使用sysctl命令所做的修改也是臨時的,要永久修改系統的限制可以通過修改/proc/sys/fs/下的文件:

1
2 
echo '1000000' > /proc/sys/fs/file-max echo '1000000' > /proc/sys/fs/nr_open 

 

 

關於/proc/sys/fs/目錄下各個文件的詳細解釋,可以閱讀這篇文章fs.txt

 然而是不相關的啊

最終看到有這么一句提到

PS: ,有時候更改完后使用ulimit -SHn時仍然會報錯,這是需要在/etc/pam.d/common-session中加入session required pam_limits.so 再次PS ,有時候經過上面的更改后使用ulimit -n會看到默認值並沒有改變,我在ubuntu中遇到這種情況,解決辦法是先使用su username登錄當前用戶,然后 就可以使用ulimit命令了。原因可能是gnome terminal默認是none-login的,所以我們在配置文件中的修改並沒有影響到當前的terminal。

在ubuntu的終端su username,輸入密碼后,看到默認值已經修改成正確的了。

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 127837
max locked memory       (kbytes, -l) 16384
max memory size         (kbytes, -m) unlimited
open files                      (-n) 81920
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 127837
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 

…………………………………………完

 


免責聲明!

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



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