Linux用户进程占满,无法切换用户,修改最大进程数

这篇博客讲述了Linux系统中关于用户进程的查看与限制。内容包括:1) `ulimit`命令用于查看用户进程限制;2) 当用户进程达到上限时,无法切换用户;3) 使用`ps`命令检查进程数量,并通过编辑`/etc/security/limits.d/20-nproc.conf`文件来修改用户进程数;4) 最终,用户进程限制受`kernel.pid_max`参数制约,可通过修改该参数来调整系统总限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Linux用户进程查看

[bdpcloud@host167 ~]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) 1
pending signals                 (-i) 379573
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 655350
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) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

root 账号: ulimit -u 出现到 max user processes 的值 默认是  # cat /proc/sys/kernel/threads-max 的值 / 2,即系统线程数的一半
普通账号 : ulimit -u 出现的 max user processes 的值 默认是 /etc/security/limits.d/20-nproc.conf (centos6 是 90-nproc.conf) 文件中的

2.Linux用户(bdpcloud)进程占满,无法切换用户

[nmportal@host167 da]$ su - bdpcloud
密码:
su: cannot set user id: Resource temporarily unavailable

3.当前用户(bdpcloud)无法登陆,切换root用户查看进程

查看当前用户(bdpcloud)所有进程情况
[root @host167da]$ ps -u bdpcloud -L
   PID    LWP TTY          TIME CMD
 24234  24234 ?        00:00:00 java
 24234  24284 ?        00:00:11 java
 24234  24285 ?        00:01:13 java
     ...                               ...

查看当前用户(bdpcloud)进程数量
[root @host167 da]$ ps -u bdpcloud -L | wc -l
6353

修改Linux用户进程数
[root@host167 da]$ vim /etc/security/limits.d/20-nproc.conf

# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     4096
root       soft    nproc     unlimited

:*代码其他所有的普通用户

4.系统总限制和修改

       其实上面的系统进程即使修改为最大值max user processes 65535 的值也只是表象,普通用户最大进程数无法达到 65535 ,因为用户的 max user processes 的值,最后是受全局的 kernel.pid_max 的值限制的。也就是说 kernel.pid_max=1024,那么你用户的 max user processes 的值是127426,用户能打开的最大进程数还是1024

查看系统进程限制
[bdpcloud@host167 ~]$ cat /proc/sys/kernel/pid_max
458752
或者用下面方法查看
[bdpcloud@host167 ~]$ sysctl kernel.pid_max
kernel.pid_max = 458752
root用户临时修改,重启机器失效
[root@host167 ~]$ echo 65535 > /proc/sys/kernel/pid_max
root用户永久修改,编辑添下面参数,重启机器生效

[root@host167 ~]$ vim /etc/sysctl.conf
kernel.pid_max = 65535

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值