Lorsque je lance mon serveur TCP à partir de mon script bash, je dois tuer l’instance précédente (qui peut encore écouter le même port) juste avant que l’instance en cours ne commence à écouter.
Je pourrais utiliser quelque chose comme pkill
. Si je le comprends bien, cela envoie simplement SIGTERM
au pid cible. Lorsque pkill
revient, le processus cible peut toujours être actif. Y a-t-il un moyen de laisser pkill
attendre la sortie?
Non, vous pouvez é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 wait