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?