I am running a bash script as a background job. The bash script calls a time-consuming executable. If I am not wrong, the running of the bash script is the parent process and the running of the executable is the child process.
(1) when I look at the output of top, it only shows the child process which is the running of the executable, not shows the parent process which is the running of the script. Just wonder why not show both? And how to show both?
(2) I now want to stop the whole running by killing the parent process which is the background job
kill -9 $(jobs -p)
The terminal shows that the running of the bash script is killed. But the running of the executable still hangs on the output of top. I just wonder how to kill both parent and child process?
Thanks and regards!
Use a negative PID to kill a process group. Try to avoid
-9
unless absolutely necessary.The bash process should still show up in the process list, except that since it usually wouldn't be doing anything in this situation, it would probably be at the very bottom of the "top" list. Try ps or better yet pstree to analyze your situation.