Préface (sauter pour le vrai problème): J'ai une application qui écoute le port 843. Ce processus est exécuté en tant que root. Parfois, tuer le processus (avec ^ C) le laisse en suspens pendant longtemps (pour toujours?). Étant impatient, je le tue avec kill -9
. Le problème est que le port 843 est toujours à l’écoute, même s’il n’ya pas d’application.
Regarder lsof -i
ne me montre aucun processus écoutant 843, même lorsqu'il est exécuté en tant que root. Regarder netstat -a
montre cependant qu’il est à l’écoute et même que certaines connexions n’avaient pas été détruites correctement:
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp6 0 0 localhost.843 localhost.60927 CLOSE_WAIT
tcp6 386 0 localhost.843 localhost.60926 CLOSE_WAIT
tcp6 0 0 localhost.843 localhost.60925 CLOSE_WAIT
tcp6 386 0 localhost.843 localhost.60924 CLOSE_WAIT
tcp46 0 0 *.843 *.* LISTEN
tcp4 0 0 *.843 *.* LISTEN
Une question similaire recommande que je ne me mette pas dans cette situation en premier lieu. C'est un conseil judicieux, mais un peu difficile, car ce n'est pas mon application. De plus, ce serait bien d’en sortir quand même.
Est-ce que je peux sortir de ce pétrin sans avoir à redémarrer? Est-ce que le fait que je l'utilise en tant que root est important? (Je n'ai besoin que de root pour écouter les ports dont le nombre est faible, pour lequel je n'ai pas trouvé de solution sans installer un logiciel comme authbind).
netstat -lntp|grep 843
-lntp
signifie probablement autre chose que ce que vous voulez. Plus précisément,-p
prend un argument (protocole). Quelle serait la sortie?-p
sous OSX: \