當前shell下更改用戶可打開進程數
修改limits.conf配置文件生效
[root@kumu ~]# ulimit -a //查看當前配置文件ulimit全局係數
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1829
max locked memory (kbytes, -l) 64
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) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@kumu ~]# vim /etc/security/limits.conf
[root@kumu ~]# grep '^*' /etc/security/limits.conf
* soft nproc 10240
* hard nproc 10240
* soft nofile 10240
* hard nofile 10240
[root@kumu ~]#
退出當前用戶,重新登錄即可讓之前修改的limits生效
[root@kumu ~]# ulimit -n
10240
[root@kumu ~]# ulimit -u //發現nproc並沒有像nofile一樣而改變
1024
[root@kumu ~]#
經google搜索獲知,RHEL6下引入了配置文件/etc/security/limits.d/90-nproc.conf
(參見了@楊德華Devin 文章redhat5和redhat6 root用戶不同的ulimits)
[root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user'sprocesses to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 1024
[root@kumu ~]#
我們修改這個文件嘗試是否因爲該文件影響,修改如下
[root@kumu ~]# vim /etc/security/limits.d/90-nproc.conf
[root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user'sprocesses to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
#* soft nproc 1024
* soft nproc 65535
[root@kumu ~]#
退出當前用戶,重新登錄即可讓之前修改的limits生效,執行如下命令發現修改成功
[root@kumu ~]# ulimit -u
10240
[root@kumu ~]# ulimit -n
10240
[root@kumu ~]#
由此可知,如果要修改配置文件limits.conf中的nproc限制上限是受文件/etc/security/limits.d/90-nproc.conf中nproc值大小制約的,但是shell終端下是不受制約的
另外筆者猜想,如果使用*號讓全局用戶生效是受文件/etc/security/limits.d/90-nproc.conf中nproc值大小制約的,而如果僅僅是針對某個用戶,那麼就不受該文件nproc值大小的影響
[root@kumu ~]# vim /etc/security/limits.d/90-nproc.conf //恢復系統默認設置
[root@kumu ~]# cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user'sprocesses to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 1024
#* soft nproc 65535
[root@kumu ~]# vim /etc/security/limits.conf //只針對某個用戶測試(這裏使用root)
[root@kumu ~]# grep '^root' /etc/security/limits.conf
root soft nproc 10240
root hard nproc 10240
[root@kumu ~]#
退出當前用戶,重新登錄即可讓之前修改的limits生效,執行如下命令發現修改成功
[root@kumu ~]# ulimit -u
10240
[root@kumu ~]# ulimit -n
10240
[root@kumu ~]#
筆者之前猜想正確,即只有當使用*號讓全局用戶生效的時候,生效的nproc的值大小是受文件/etc/security/limits.d/90-nproc.conf中nproc值大小制約的,而如果僅僅是針對某個用戶,那麼就不受該文件nproc值大小的影響。本文鏈接:關於RHEL6中ulimit的nproc限制