J'installe hadoop sur mon système Ubuntu. Lorsque je le démarre, il signale que le port 9000 est occupé.
J'ai utilisé:
netstat -nlp|grep 9000
pour voir si un tel port existe et j'ai obtenu ceci:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
Mais comment puis-je obtenir le PID du processus qui le détient?
Sous Linux, vous devez être root ou propriétaire du processus pour obtenir les informations souhaitées. En tant que tel, pour les processus exécutés en tant qu'un autre utilisateur, le préfixe Sudo
est le plus important dont vous avez besoin. De plus, sur les systèmes Linux modernes, ss
est un outil à utiliser pour ce faire:
$ Sudo ss -lptn 'sport = :80'
State Local Address:Port Peer Address:Port
LISTEN 127.0.0.1:80 *:* users:(("nginx",pid=125004,fd=12))
LISTEN ::1:80 :::* users:(("nginx",pid=125004,fd=11))
Vous pouvez également utiliser la même invocation que vous utilisez actuellement, mais n'oubliez pas de Sudo
:
$ Sudo netstat -nlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 125004/nginx
Vous pouvez également utiliser lsof:
$ Sudo lsof -n -i :80 | grep LISTEN
nginx 125004 nginx 3u IPv4 6645 0t0 TCP 0.0.0.0:80 (LISTEN)
Vous pouvez également utiliser l'utilitaire lsof
. Besoin d'être root.
# lsof -i :25
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
exim4 2799 Debian-exim 3u IPv4 6645 0t0 TCP localhost:smtp (LISTEN)
exim4 2799 Debian-exim 4u IPv6 6646 0t0 TCP localhost:smtp (LISTEN)
J'utilise "CentOS 7 minimal" qui n'a ni netstat
ni lsof
. Mais beaucoup de distributions linux ont la commande socket statistics (c'est-à-dire ss
).
Voici un exemple d'exécution:
# ss -tanp | grep 6379
LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=2531,fd=4))
L'exécution de la commande avec Sudo
vous donnerait PID
. Sur ma machine de développement, je reçois:
$ netstat -nlp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN -
$ Sudo netstat -nlp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 16449/Java
Et comme mentionné dans d'autres réponses, vous pouvez également utiliser les commandes ss
ou lsof
.
Vous pouvez également utiliser fuser
:
fuser -v -n tcp 22
Le résultat :
USER PID ACCESS COMMAND
22/tcp: root 598 F.... sshd