Kill a process and wait for the process to exit

bash, kill-process, linux, process, unix

Solution

No. What you can do is write a loop with `kill -0 $PID`. If this call fails (`$? -ne 0`), the process has terminated (after your normal `kill`):

while kill -0 $PID; do 
    sleep 1
done

(kudos to qbolec for the code)

Related:

- What does `kill -0 $pid` in a shell script do?

Problem

When I start my tcp server from my bash script, I need to kill the previous instance (which may still be listening to the same port) right before the current instance starts listening. I could use something like `pkill <previous_pid>`. If I understand it correctly, this just sends `SIGTERM` to the target pid. When `pkill` returns, the target process may still be alive. Is there a way to let `pkill` wait until it exits?

Original source

Related problems