杀死父母和子女的过程

我正在运行一个bash脚本作为后台作业。 bash脚本调用一个耗时的可执行文件。 如果我没有错,bash脚本的运行是父进程,可执行文件的运行是subprocess。

(1)当我查看top的输出时,只显示了可执行文件正在运行的subprocess,而不是显示正在运行的父进程。 只是想知道为什么不显示两个? 以及如何显示两者?

(2)现在我想通过杀死作为后台工作的父进程来停止整个运行

kill -9 $(jobs -p) 

terminal显示bash脚本的运行被终止。 但可执行文件的运行仍然挂在顶部的输出。 我只是想知道如何杀死父母和孩子的过程?

感谢致敬!

使用负PID来杀死进程组。 尽量避免-9除非绝对必要。

bash过程应该仍然显示在进程列表中,除了在这种情况下它通常不会做任何事情,它可能会在“顶部”列表的最底部。 尝试ps或更好的pstree来分析你的情况。