it-swarm.com.de

Bestimmen, welcher Prozess an einen Port gebunden ist

Ich weiß das mit dem Befehl:

lsof -i TCP 

(oder eine Variante von Parametern mit lsof) Ich kann bestimmen, welcher Prozess an einen bestimmten Port gebunden ist. Dies ist nützlich, wenn ich versuche, etwas zu starten, das an 8080 gebunden werden soll, und einige andere diesen Port bereits verwenden, aber ich weiß nicht, was.

Gibt es eine einfache Möglichkeit, dies ohne lsof zu tun? Ich verbringe Zeit mit der Arbeit an vielen Systemen und lsof ist oft nicht installiert.

92
user5721

netstat -lnp listet die PID und den Prozessnamen neben jedem Überwachungsport auf. Dies funktioniert unter Linux, aber nicht alle anderen (wie AIX). Add -t wenn du willst TCP.

# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:24800           0.0.0.0:*               LISTEN      27899/synergys
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      3361/python
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2264/mysqld
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      22964/Apache2
tcp        0      0 192.168.99.1:53         0.0.0.0:*               LISTEN      3389/named
tcp        0      0 192.168.88.1:53         0.0.0.0:*               LISTEN      3389/named

usw.

120
Cakemox

Unter AIX kann netstat & rmsock verwendet werden, um die Prozessbindung zu bestimmen:

[[email protected]] netstat -Ana|grep LISTEN|grep 80
f100070000280bb0 tcp4       0      0  *.37               *.*        LISTEN
f1000700025de3b0 tcp        0      0  *.80               *.*        LISTEN
f1000700002803b0 tcp4       0      0  *.111              *.*        LISTEN
f1000700021b33b0 tcp4       0      0  127.0.0.1.32780    *.*        LISTEN

# Port 80 maps to f1000700025de3b0 above, so we type:
[[email protected]] rmsock f1000700025de3b0 tcpcb
The socket 0x25de008 is being held by process 499790 (Java).
12
frielp

Ein weiteres unter Linux verfügbares Tool ist ss. Aus der ss Manpage auf Fedora:

NAME
       ss - another utility to investigate sockets
SYNOPSIS
       ss [options] [ FILTER ]
DESCRIPTION
       ss is used to dump socket statistics. It allows showing information 
       similar to netstat. It can display more TCP and state informations  
       than other tools.

Beispielausgabe unten - Die letzte Spalte zeigt die Prozessbindung:

[[email protected]] ss -ap
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port
LISTEN     0      128                    :::http                    :::*        users:(("httpd",20891,4),("httpd",20894,4),("httpd",20895,4),("httpd",20896,4)
LISTEN     0      128             127.0.0.1:munin                    *:*        users:(("munin-node",1278,5))
LISTEN     0      128                    :::ssh                     :::*        users:(("sshd",1175,4))
LISTEN     0      128                     *:ssh                      *:*        users:(("sshd",1175,3))
LISTEN     0      10              127.0.0.1:smtp                     *:*        users:(("sendmail",1199,4))
LISTEN     0      128             127.0.0.1:x11-ssh-offset                  *:*        users:(("sshd",25734,8))
LISTEN     0      128                   ::1:x11-ssh-offset                 :::*        users:(("sshd",25734,7))
8
frielp

Für Solaris können Sie pfiles verwenden und dann nach sockname: Oder port: Grep.

Ein Beispiel (von hier ):

pfiles `ptree | awk '{print $1}'` | egrep '^[0-9]|port:'

Ich war einmal mit dem Versuch konfrontiert festzustellen, welcher Prozess hinter einem bestimmten Port steckt (diesmal waren es 8000). Ich habe eine Vielzahl von lsof und netstat ausprobiert, dann aber die Chance genutzt und versucht, den Port über einen Browser zu erreichen (d. H. http: // hostname: 8000 / ). Und siehe da, ein Begrüßungsbildschirm begrüßte mich und es wurde klar, was der Prozess war (für die Aufzeichnung war es Splunk ).

Noch ein Gedanke: "ps -e -o pid, args" (YMMV) zeigt manchmal die Portnummer in der Argumentliste an. Grep ist dein Freund!

2
rickumali