使用单个命令生成多个进程

使用单个命令生成多个进程

有没有办法使用单个命令创建一个进程的 10 个实例(例如是)?

$instantiate 10 yes

答案1

像下面这样的东西可以吗?这假设 bash(用于大括号扩展)和 GNU 并行。

parallel -N0 -j0 -u yes ::: {1..10}

-j0设置是为了确保启动与参数一样多的进程,并且-u(ungroup) 在那里,以便每个进程的输出在可用时立即打印(这对于 的情况很重要yes,因为它的输出是无限的) 。-N0防止将参数插入到命令行中。

答案2

@dhag 当然有一个一行答案,但语法让我眼睛受伤。 :)

由于您要求单个命令,并且 shell 认为 for-do-done 是单个(复合)命令,因此我觉得这个更具可读性的版本是合理的:

for i in {1..10}; do yes &; done

请注意,某些 shell 会自动执行nice(2)后台作业,因此如果这是一个问题,那么这不是最佳解决方案。

相关内容