如何创建一个 for 循环来启动很多进程?

如何创建一个 for 循环来启动很多进程?

我想测试一些错误,为此我需要有 PID 大于 99999 的情况。我正在考虑一个 bash 脚本,一个 for 循环。有任何想法吗?

答案1

您可以执行类似的操作来启动具有所需 PID 的进程。

while true; do bash -c '[[ "$$" == 99999 ]] && echo PID is 99999'; done

您可以等到获得所需的 PID,然后可能将语句替换echo为您实际需要测试的内容。

参考

被杀后还会使用同一个pid吗?

编辑

为什么PID号会增长?是因为您一遍又一遍地运行不同的 bash 实例吗?

我相信你所说的就是正在发生的事情。这可以简单地测试如下。

while true; do bash -c 'echo $$' ; done

我们可以看到 PID 不断增加,从 的手册页中bash我看到,

-c string 如果存在 -c 选项,则从字符串读取命令。如果字符串后面有参数,它们将被分配给位置参数,从 $0 开始。

因此,根据我的理解,echo上述测试中的每个语句都作为一个单独的进程执行,这就是为什么我们可以看到 PID 正在递增。

答案2

无论你想做什么,很可能都有更好的方法,但如果你决心像

while [[ 1 == 1 ]]; do sleep 10000& done

将启动许多sleeps,但可能需要一段时间才能启动所有。当你有足够的进程时,只需点击Ctrl-C退出while循环即可。

相关内容