在Linux中的最大进程数

在linux系统中可能的进程数量的最大限制是多less? 我们怎么find它?

您的内核应该在procfs导出这些信息:

 cat /proc/sys/kernel/pid_max 

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

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

sysctl kernel.pid_max

要么

cat / proc / sys / kernel / pid_max

正如Ninefingers所build议的那样。

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

kernel.pid_max = 4194303

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

简短的回答你的问题:在linux系统中可能的进程数量是UNLIMITED

但是每个用户的进程数量是有限制的(除了没有限制的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 

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

 hadoop - nproc 500000 

kernel.pid_max是一个限制因素,但至less同样重要的是kernel.threads-max。 值得注意的是,每个用户的默认nproc ulimit是kernel.threads-max除以2,并且每个线程都计入用户的nproc限制。 因此,“ps -u $ USER”可能表明用户没有用尽nproc限制,但“ps -L -u $ USER”可能会告诉一个非常不同的故事。