J'installe hadoop sur mon système Ubuntu. Lorsque je le démarre, il indique que le port 9000 est occupé.
J'ai utilisé:
netstat -nlp|grep 9000
pour voir si un tel port existe et j'ai eu 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 contient?
netstat
Pour que cette commande fonctionne dans de nombreux systèmes d’exploitation, il vous suffit de trouver les arguments qui garantiront l’affichage des pids le long de chaque port ouvert connu.Réponses:
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 sous un autre utilisateur, le préfixe
sudo
est ce dont vous avez le plus besoin. En plus de cela, sur les systèmes Linux modernes, unss
outil à utiliser pour faire cela:Vous pouvez également utiliser la même invocation que vous utilisez actuellement, mais n'oubliez pas de
sudo
:Vous pouvez aussi utiliser lsof:
la source
-p
option concerne le protocole plutôt que le traitement. Voir cette questionFinding the PID of the process using a specific port
sudo
au sommet.lsof -ti tcp:80
Aussi, vous pouvez utiliser l'
lsof
utilitaire. Besoin d'être root.la source
established
connexions, pas seulement des processus qui le sontlistening
.lsof -i :25 -Fp
, ce qui produit une sortie commep1234
.J'utilise "CentOS 7 minimal" qui n'a ni
netstat
nilsof
. Mais beaucoup de distributions Linux ont la commande socket statistics (iess
).Voici un exemple d'exécution:
la source
ss -pntl 'sport = :6379'
Exécuter la commande avec
sudo
vous donnerait lePID
. Sur ma machine de développement, je reçois:Et comme mentionné dans d’autres réponses, vous pouvez également utiliser
ss
leslsof
commandes.la source
sudo
qu'ID de processus d'affichagesudo netstat -nlp | grep 34157
encore afficher à la-
place de PID?Aussi, vous pouvez utiliser
fuser
:Le résultat :
la source
sudo
si le processus incriminé a également été démarré avecsudo