对一组进程进行分组,这样当一个进程死亡时,该组中的所有其他进程也会死亡

lol*_*ski 5 linux process

由于各种原因,我们的应用程序由 3 个进程组成,不能合并为一个进程。这些过程非常严格,因此将它们一起生成和杀死是有意义的。例如,如果其中任何一个死亡,整个系统将无法工作,因此杀死另外两个是有意义的。

这可以在 Linux 中完成吗?

Kam*_*ski 3

总的来说我支持G-Man的回答。我想介绍一个在某些情况下可能就足够的快速解决方案。

令三个可执行文件为foobarbaz。假设:

  • 您可以手动运行它们;
  • 您以同一用户身份运行所有这些;
  • 您在任何给定时间最多运行 1 foo、 1bar和 1 baz

而不是foo运行foo ; killall bar 2>/dev/null
而不是bar运行bar ; killall baz 2>/dev/null
而不是baz运行baz ; killall foo 2>/dev/null

如果你想在后台运行foo,正确的语法如下:

{ foo ; killall bar 2>/dev/null ; } &
Run Code Online (Sandbox Code Playgroud)

bar与类似baz。这样,如果您愿意,您可以从单个 shell 运行它们。

该解决方案可扩展到任何合理数量的进程。killall当一个进程终止时,将触发菊花链。这最终将发挥鞭打金属杀死他们所有人。

请注意,在您确定该杀伤链已完成之前,不应启动一组新的进程。