web-dev-qa-db-fra.com

Comment trouver (et tuer) un processus en cours sur un certain port?

doublon possible:
Recherche du processus utilisant un certain port sous Linux

J'utilise Ubuntu Linux 11.04. Comment puis-je écrire une expression de script Shell qui détecte le processus en cours d'exécution sur le port 4444, puis le tue?

29
Dave

Vous pouvez utiliser lsof pour trouver le processus:

lsof -t -i:4444

n’indiquerait que le pid du processus d’écoute sur le port 4444. Vous pouvez simplement dire

kill `lsof -t -i:4444`

si tu étais courageux.

47

Vous utilisez lsof:

# lsof -n | grep TCP | grep LISTEN | grep 4444

La sortie sera quelque chose comme:

pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)

Où la première colonne est le nom du processus et la deuxième colonne est l'identifiant du processus. Vous analysez ensuite la sortie, identifiez l’identifiant du processus (PID) et utilisez la commande kill pour la tuer.

6
Pablo Santa Cruz

Sinon, vous pouvez utiliser netstat -ap si lsof n'est pas disponible sur votre système (car ce n'est pas sur un système busybox avec lequel je travaille régulièrement).

2
DaveRandom
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`

Utilise netstat pour répertorier les sockets INET en écoute avec des ports numériques et des processus parents. Filtres pour la chaîne 4444, supprime la 7ème colonne (pid/nom du processus) et la scinde ensuite par "/" pour obtenir le pid. Passe cette commande à tuer.

2
Arek B.