Linux修改用户进程数有两种方式,以CentOS6.8为例:
1、修改/etc/security/limits.d/90-nproc.conf
[root@salt-master ~]# cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 1024
root soft nproc unlimited
默认最大进程数为1024,如果用户进程数大于1024,会导致ssh登录普通用户失败。登录root用户没有问题,但是su - 普通用户会报“su: cannot set user id: Resource temporarily unavailable”错误信息。
另外注意,*表示系统用户未做限制,但根据经验来看,此处针对root用户。
2、修改/etc/security/limits.conf
[root@salt-master ~]# tail -5 /etc/security/limits.conf
# End of file
app soft nofile 20480
app hard nofile 65535
root soft nproc 20480
root hard nproc 65535
修改/etc/security/limits.conf也可以达到目的,但是需要注意两个问题:
1.在配置文件中需要指明用户,如不指明,会有可能导致配置不生效(当两个配置文件都在生效时)。
2.书写有格式要求,* soft nproc 20480中间需要至少2个空格隔开。
注意:如果两个配置文件中都做了限制,以/etc/security/limits.d/90-nproc.conf中最小值为准。
查看指定用户app线程数,测试发现普通用户app线程数大于1024,也会导致app用户变成不可登录状态。
[root@salt-master ~]# ps -u app -L |wc -l
1024
lsof查看打开文件句柄数,有些博客中认为lsof用来查看进程数,其实两者不同,但是有些关系。
因为ps -ef查看的是命令行进程数,如果lsof查看到的数值较大,ps -ef 查看的数值也会比较大。
如有问题,欢迎指正。