Убейте процесс и дождитесь завершения процесса.

Когда я запускаю свой tcp-сервер из моего bash script, мне нужно убить предыдущий экземпляр (который все еще может прослушивать тот же самый порт) прямо перед началом текущего экземпляра.

Я мог бы использовать что-то вроде pkill <previous_pid>. Если я правильно понимаю, это просто отправляет SIGTERM в целевой pid. Когда pkill возвращается, целевой процесс все еще может быть в живых. Есть ли способ позволить pkill подождать, пока он не выйдет?

Ответ 2

Используйте wait (bash builtin), чтобы дождаться завершения процесса:

 pkill <previous_pid>
 wait <previous_pid>