我更改了存储在/proc/sys/kernel/pid_max
.我需要重新启动才能使这个新值生效吗?
答案1
如果你增加了/proc/sys/kernel/pid_max
(通过做cat 100000 > /proc/sys/kernel/pid_max
例子),这个值立即生效,无需重新启动。但我从未尝试减少它(*)。
您可以通过以下方式进行测试(这有点难看,不要在生产机器上完成):
i=0 ; while [ $i -lt 10000] ; do (echo $i > /dev/null); ((i++)); done; ps ax | grep AnythingUnlikelyToBeUsedAlready
(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
但是,如果您在完成此操作后重新启动,您将看到它/proc/sys/kernel/pid_max
已恢复为默认值(通常为 32768)。
为了使您的设置在重新启动后保持不变,您必须进行相应的编辑/etc/sysctl.conf
和设置kernel.pid_max
。
例如:
kernel.pid_max = 100000
警告:pid_max
有界限这取决于您的系统。您定义的值应该在这些限制之内。
(*) 但@彼得做到了,而且效果明显,看评论。