Lorsque je démarre mon serveur tcp à partir de mon script bash, je dois tuer l'instance précédente (qui peut toujours écouter le même port) juste avant que l'instance actuelle ne commence à écouter.
Je pourrais utiliser quelque chose comme pkill <previous_pid>
. Si je comprends bien, cela envoie simplement SIGTERM
au pid cible. Lorsque pkill
revient, le processus cible peut toujours être actif. Existe-t-il un moyen de laisser pkill
attendre sa sortie?
Non. Ce que vous pouvez faire, c'est écrire une boucle avec kill -0 $PID
. Si cet appel échoue ($? -ne 0
), le processus est terminé:
while kill -0 $PID; do
sleep 1
done
(bravo à qbolec pour le code)
En relation:
Utilisez wait
(bash builtin) pour attendre la fin du processus:
pkill <previous_pid>
wait <previous_pid>