linux中的最大进程数

kde*_*ter 56 linux operating-system process

linux系统中可能的进程数量的最大限制是多少?我们怎么能找到它?

小智 47

您的内核应该将此信息导出到procfs:

cat /proc/sys/kernel/pid_max
Run Code Online (Sandbox Code Playgroud)

这是系统可以支持的唯一进程标识符的最大数量.

由于它是一个文件,/proc/sys/kernel/pid_max可以从任何有能力的编程语言进行检查.

  • 这可能是真的,但在大多数好的发行版中,这受到/etc/security/limits.conf的限制,它可以基于用户/组/域过滤最大进程数. (2认同)

Les*_*ung 20

sysctl kernel.pid_max

要么

cat/proc/sys/kernel/pid_max

正如Ninefingers所建议的那样.

为了完整起见,您可以通过写入/ proc/syskernel/pid_max或通过添加以下内容永久地更改它:

kernel.pid_max = 4194303

到/etc/sysctl.conf.4194303是x86_64的最大限制,x86是32767.

  • 刚试过`sysctl kernel.pid_max = 4194304`并且它成功了(Linux 3.10.25) (3认同)

Ank*_*hal 16

简短回答你的问题:linux系统中可能的进程数是无限的.

但是每个用户的进程数量有限制(除了没有限制的root用户).

您可以使用以下命令检查用户限制(适用于"最大用户进程").

$ 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) 256447
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 128000
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) 500000
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
Run Code Online (Sandbox Code Playgroud)

如果您想增加特定用户的进程数限制(例如:hadoop),您需要在/etc/security/limits.conf中输入以下内容

hadoop - nproc 500000
Run Code Online (Sandbox Code Playgroud)


小智 5

kernel.pid_max是一个限制因素,但至少同样重要kernel.threads-max.值得注意的是,每个用户的默认nproc ulimit kernel.threads-max除以2,并且每个线程都计入用户的nproc限制.因此,ps -u $USER可能会使用户看起来没有用尽他们的nproc限制,但ps -L -u $USER可能会说出一个非常不同的故事.