J'essaie de déterminer quelle application utilise un certain port et d'obtenir netstat -tlnp | grep <port> for Linux
.
Cette commande renvoie le résultat suivant:
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:<port> 0.0.0.0:* LISTEN 3591/Java
J'ai besoin d'obtenir uniquement le nom du processus et le PID, par exemple Java 3591.
Quelle est la meilleure façon de le faire?
Je vous remercie.
Essayer
ps -p $(lsof -ti tcp:80) o comm=,pid=
ou
netstat -tlnp | awk '/:80 */ {split($NF,a,"/"); print a[2],a[1]}'
(Légèrement en retrait de votre question initiale), pour savoir quel processus écoute un certain numéro de port, j'utilise généralement la commande lsof
. Par exemple:
lsof -i tcp:80
Pour afficher uniquement le nom du processus et le PID, analysez la sortie en utilisant:
lsof | tail -n +2 | awk '{print $1 " " $2}'
La commande tail
ignore l'en-tête de sortie pendant que awk
imprime les colonnes requises.
lsof
Essayer de grep
la sortie de netstat
peut être compliqué car vous devez vous assurer que la correspondance est établie avec la bonne colonne. Une solution robuste peut être assez longue et difficile (pour moi en tout cas) à produire à la demande.
lsof
vous évite d'avoir à faire correspondre les bons ports et a de nombreuses autres utilisations, par exemple. l'inverse de ce que nous faisons maintenant (savoir quels ports sont utilisés par un processus) ou déterminer quel processus utilise un fichier/un point de montage (ou l'inverse). Voir lsof manpage pour plus d'exemples.
awk + sed:
awk '{print $7}' | sed "s/\// /g"
Vous pouvez aussi vous débarrasser de ce message "vous devez être root" en redirigeant stderr vers/dev/null
netstat -tlnp 2>/dev/null | grep ...
... | awk '{print $7;}'| sed 's/\// /g'
netstat -tlnp 2>/dev/null | awk '/\.[0-9]:X/ {print $7}' | sed 's/\//\s/g'
où X dans la partie awk est le port que vous regardez.
Essayez netstat -p
-p, --program Affiche le PID et le nom du programme auquel chaque socket appartient.