我正在运行一个 bash 脚本作为后台作业。bash 脚本调用一个耗时的可执行文件。如果我没记错的话,bash 脚本的运行是父进程,而可执行文件的运行是子进程。
(1) 当我查看 top 的输出时,它仅显示正在运行的可执行文件的子进程,而不显示正在运行的脚本的父进程。我只是想知道为什么不同时显示两者?以及如何同时显示两者?
(2)我现在想通过终止父进程(即后台作业)来停止整个运行
kill -9 $(jobs -p)
终端显示 bash 脚本的运行已被终止。但可执行文件的运行仍然挂在 top 的输出上。我只是想知道如何同时终止父进程和子进程?
感谢致敬!
答案1
使用负 PID 来终止进程组。-9
除非绝对必要,否则尽量避免使用。
答案2
bash 进程仍应显示在进程列表中,但由于它在这种情况下通常不会执行任何操作,因此它可能位于“顶部”列表的最底部。尝试使用 ps 或更好的 pstree 来分析您的情况。