更改pid_max后是否需要重新启动LINUX服务器?

Vik*_*sal 4 linux

我更改了存储在/proc/sys/kernel/pid_max. 我是否需要重新启动才能使这个新值生效?

Shl*_*blu 6

如果您增加了/proc/sys/kernel/pid_maxcat 100000 > /proc/sys/kernel/pid_max例如通过这样做),该值立即生效,无需重新启动。我从来没有试图减少它(*)

您可以通过以下方式进行测试(这有点难看,不能在生产机器上完成):

i=0 ; while [ $i -lt 10000] ; do (echo $i > /dev/null); ((i++)); done; ps ax | grep AnythingUnlikelyToBeUsedAlready
Run Code Online (Sandbox Code Playgroud)

(echo $i > /dev/null)只是在每次迭代时创建一个新的pid。10000 在我的测试用例中很方便,但您可以调整它。在这里,它在运行 #3 时循环,因为我之前pid_max如上所述设置了我的:

shlublu:~$ i=0 ; while [ $i -lt 10000 ] ; do (echo $i > /dev/null); ((i++)); done; ps ax | grep AnuthingUnlikelyToBeUsedAlready
86880 pts/0    S+     0:00 grep --color=auto AnuthingUnlikelyToBeUsedAlready

shlublu:~$ i=0 ; while [ $i -lt 10000 ] ; do (echo $i > /dev/null); ((i++)); done; ps ax | grep AnuthingUnlikelyToBeUsedAlready
96882 pts/0    S+     0:00 grep --color=auto AnuthingUnlikelyToBeUsedAlready

shlublu:~$ i=0 ; while [ $i -lt 10000 ] ; do (echo $i > /dev/null); ((i++)); done; ps ax | grep AnuthingUnlikelyToBeUsedAlready
 7246 pts/0    S+     0:00 grep --color=auto AnuthingUnlikelyToBeUsedAlready

shlublu:~$ i=0 ; while [ $i -lt 10000 ] ; do (echo $i > /dev/null); ((i++)); done; ps ax | grep AnuthingUnlikelyToBeUsedAlready
17260 pts/0    S+     0:00 grep --color=auto AnuthingUnlikelyToBeUsedAlready

shlublu:~$ i=0 ; while [ $i -lt 10000 ] ; do (echo $i > /dev/null); ((i++)); done; ps ax | grep AnuthingUnlikelyToBeUsedAlready
27262 pts/0    S+     0:00 grep --color=auto AnuthingUnlikelyToBeUsedAlready
Run Code Online (Sandbox Code Playgroud)

但是如果您在完成此操作后重新启动,您会看到它/proc/sys/kernel/pid_max已恢复为默认值(通常为 32768)。

要使您的设置在重新启动后保持不变,您必须相应地进行编辑/etc/sysctl.conf和设置kernel.pid_max

例如:

kernel.pid_max = 100000
Run Code Online (Sandbox Code Playgroud)

警告pid_max具有取决于您的系统的边界。您定义的值应在这些限制范围内。


(*) 但@peterh做到了,而且效果很明显,请参阅评论