[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-team] lsof!!! (was:Port XXX already in use)



On Wed, Sep 29, 1999 at 03:15:03PM +0200, Frédéric Detienne wrote:
> Exact.
> Un bon truc est de faire un
> netstat -a
> et de voir si le port est toujours utilise. Si oui, il dit LISTEN a la fin de la ligne => tu dois tuer le process qui reste avec un bon kill bien senti.
> Si le port n'est plus utilise, il dit WAIT ou autre chose => dans ce cas, le service n'a pas libere le port proprement et il faut attendre que le kernel time out et libere le port. Ca prend quelques minutes.
> A noter que "netstat -a" montre les ports utilises et utilise le _NOM_ du service si le port est defini dans /etc/services. Sinon, il utilise le _NUMERO_ du port.
> Tu peux utiliser "netstat -n -a" pour avoir tout en numerique.

Note que netstat -a ne t'avance pas nécessairement puisqu'il ne te donne pas le nom du processus (ni le pid)
qui utilise ce port. Pour ça, il y a lsof (LiSt Open Files), qui marche aussi pour les sockets TCP/IP:
lsof -i[protocol][@hostname|hostaddr][:service|port]

un exemple: la liste de tous les processus qui utilisent le port 80:

pab:~> sudo lsof -i:80      
COMMAND    PID USER   FD   TYPE DEVICE SIZE NODE NAME
httpd      234 root   16u  inet    367       TCP *:www (LISTEN)
httpd     1735 root   16u  inet    367       TCP *:www (LISTEN)
httpd     7794 root   16u  inet    367       TCP *:www (LISTEN)
httpd    19728 root   16u  inet    367       TCP *:www (LISTEN)
httpd    19730 root   16u  inet    367       TCP *:www (LISTEN)
httpd    19731 root   16u  inet    367       TCP *:www (LISTEN)
httpd    19732 root   16u  inet    367       TCP *:www (LISTEN)
httpd    19823 root   16u  inet    367       TCP *:www (LISTEN)
httpd    19824 root   16u  inet    367       TCP *:www (LISTEN)
httpd    19825 root   16u  inet    367       TCP *:www (LISTEN)

(je suis passé par sudo pour éxécuter la commande en tant que root, pour voir tout le monde - sinon, un user
normal ne voit que ses processus à lui).

> voila.
et voilà encore nettement mieux ;-)))

> Piette François wrote:
> > >En relançant un service sur un port, j'ai parfois le
> > >message "Port XXX already in use"
> > >Comment débloquer cela sans "rebooter la machine" ?
> > C'est un message qui provient du stack TCP/IP et qui signifie que le service
> > que tu lance essaye d'utiliser un port qui est déjà utilisé par autre chose.
> > Es-tu certain que le service que tu relance a été arrêté correctement ? Le
> > principe pour en sortir consite à tuer le service (programme) qui utilise le
> > port en question.

-- 
  -o) / Pascal Bleser          ATOS Payment Systems|
  /\\ \ C++/UNIX Development        Aachen, Germany|
 _\_v  \<guru@linuxbe.org> <pbleser@atos-group.com>|
---------------------------------------------------|
/earth is 98% full... please delete anyone you can.:
---------------------------------------------------'

---------
Visit the Linux Supertore Online: http://www.redcorp.com !
If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.