Installieren und Verwenden von lsof
lsof
ist ein Befehlszeilendienstprogramm zum Auflisten aller geöffneten Dateien, die zu allen aktiven Prozessen gehören.
Um es unter Linux zu installieren, verwenden Sie je nach verwendetem Distributionstyp die folgenden Befehle.
Unter Debian, Ubuntu:
sudo apt install lsof
Unter CentOS, RHEL:
sudo yum install lsof
Neuere Versionen wie CentOS 8, RHEL 8 oder Fedora
sudo dnf install lsof
Um herauszufinden, welche Prozesse auf welchen Ports laufen, geben Sie einfach die Portnummer an:
sudo lsof -i :3000
Beispielausgabe:
# lsof -i :3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
grafana-s 264023 grafana 10u IPv6 2887779 0t0 TCP *:hbci (LISTEN)
Weitere Einzelheiten finden Sie in den Manpages.
man lsof
Installation und Verwendung von netstat
Netstat ist ein Befehlszeilendienstprogramm zum Drucken von Netzwerkverbindungen, Routing-Tabellen, Schnittstellenstatistiken, Masquerade-Verbindungen und Multicast-Mitgliedschaften.
Netstat ist in den Standard-Repositories der meisten Linux-Distributionen verfügbar.
Gehen Sie wie folgt vor, um es unter Linux und seinen Varianten zu installieren:
Unter CentOS, RHEL:
sudo yum install net-tools
# On Fedora, RHEL 8 and Centos8
sudo dnf install net-tools
Unter Debian, Ubuntu:
sudo apt install net-tools
Verwenden Sie den folgenden Befehl, um herauszufinden, welche Dienste auf welchen Ports lauschen:
sudo netstat -tulpn
Beispielausgabe:
# sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8088 0.0.0.0:* LISTEN 538847/influxd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 900/nginx: master p
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:7088 0.0.0.0:* LISTEN 538639/docker-proxy
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 900/nginx: master p
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 970/sshd
tcp6 0 0 :::9080 :::* LISTEN 393063/promtail-lin
tcp6 0 0 :::3000 :::* LISTEN 264023/grafana-serv
tcp6 0 0 :::3100 :::* LISTEN 391839/loki-linux-a
tcp6 0 0 :::9090 :::* LISTEN 263154/prometheus
tcp6 0 0 :::9096 :::* LISTEN 391839/loki-linux-a
tcp6 0 0 :::9100 :::* LISTEN 262769/node_exporte
tcp6 0 0 :::44303 :::* LISTEN 393063/promtail-lin
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::7088 :::* LISTEN 538645/docker-proxy
tcp6 0 0 :::80 :::* LISTEN 900/nginx: master p
tcp6 0 0 :::8086 :::* LISTEN 538847/influxd
tcp6 0 0 :::22 :::* LISTEN 970/sshd
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 127.0.0.1:323 0.0.0.0:* 777/chronyd
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 ::1:323 :::* 777/chronyd
udp6 0 0 fe80::458:3aff:fed6:546 :::* 850/NetworkManager
Wenn Sie an einem bestimmten Port interessiert sind, können Sie mit grep filtern:
sudo netstat -tulpn | grep 3000
sudo netstat -tulpn | grep grafana
Flaggen:
- -t Flag zeigt TCP-Verbindungen.
- -u Flag zeigt UDP-Verbindungen an.
- -l Flag zeigt lauschende Sockets an.
- -p Flag zeigt die Prozess-ID (PID) und den Prozessnamen dessen an, was diesen Port verwendet.
- -n Flag zeigt die numerischen Adressen an.
Weitere Einzelheiten finden Sie in den Manpages.
man netstat
Mit dem "ss"-Befehl
ss
ist ein Befehlszeilendienstprogramm zum Untersuchen von Sockets. Es ist eine Alternative zu netstat und der Verwendung von ss
ist fast dasselbe wie netstat
. Es ist auf beliebten Linux-Distributionen wie Redhat, Debian und ihren Varianten vorinstalliert.
Um herauszufinden, welche Dienste auf welchen Ports lauschen, führen Sie Folgendes aus:
sudo ss -tulpn
Beispielausgabe:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=705,fd=5),("systemd",pid=1,fd=33))
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:(("chronyd",pid=777,fd=6))
udp UNCONN 0 0 [::]:111 [::]:* users:(("rpcbind",pid=705,fd=7),("systemd",pid=1,fd=35))
udp UNCONN 0 0 [::1]:323 [::]:* users:(("chronyd",pid=777,fd=7))
udp UNCONN 0 0 [fe80::458:3aff:fed6:8255]%eth0:546 [::]:* users:(("NetworkManager",pid=850,fd=26))
tcp LISTEN 0 128 127.0.0.1:8088 0.0.0.0:* users:(("influxd",pid=538847,fd=3))
tcp LISTEN 0 128 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=902,fd=8),("nginx",pid=901,fd=8),("nginx",pid=900,fd=8))
tcp LISTEN 0 128 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=705,fd=4),("systemd",pid=1,fd=32))
tcp LISTEN 0 128 0.0.0.0:7088 0.0.0.0:* users:(("docker-proxy",pid=538639,fd=4))
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=902,fd=9),("nginx",pid=901,fd=9),("nginx",pid=900,fd=9))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=970,fd=5))
tcp LISTEN 0 128 *:9080 *:* users:(("promtail-linux-",pid=393063,fd=10))
tcp LISTEN 0 128 *:3000 *:* users:(("grafana-server",pid=264023,fd=10))
tcp LISTEN 0 128 *:3100 *:* users:(("loki-linux-amd6",pid=391839,fd=9))
tcp LISTEN 0 128 *:9090 *:* users:(("prometheus",pid=263154,fd=8))
tcp LISTEN 0 128 *:9096 *:* users:(("loki-linux-amd6",pid=391839,fd=10))
tcp LISTEN 0 128 *:9100 *:* users:(("node_exporter",pid=262769,fd=3))
tcp LISTEN 0 128 *:44303 *:* users:(("promtail-linux-",pid=393063,fd=11))
tcp LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=705,fd=6),("systemd",pid=1,fd=34))
tcp LISTEN 0 128 [::]:7088 [::]:* users:(("docker-proxy",pid=538645,fd=4))
tcp LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=902,fd=10),("nginx",pid=901,fd=10),("nginx",pid=900,fd=10))
tcp LISTEN 0 128 *:8086 *:* users:(("influxd",pid=538847,fd=5))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=970,fd=7))
Um die Ausgabe für einen bestimmten Dienst (z. B. grafana) zu filtern, verwenden Sie:
sudo ss -tulpn | grep grafana
sudo ss -tulpn | grep 3000
Weitere Einzelheiten finden Sie in den Manpages.
man ss
Fixiererbefehl installieren und verwenden
Das Befehlszeilendienstprogramm fuser
wird auch verwendet, um Prozesse anhand von Dateien oder Sockets zu identifizieren. Es zeigt die PIDs von Prozessen an, die die angegebenen Dateien oder Dateisysteme verwenden.
Es ist auch in den Standard-Repositories der meisten Linux-Distributionen verfügbar.
Um es unter Linux zu installieren, führen Sie Folgendes aus:
Unter Debian, Ubuntu:
sudo apt install psmisc
Unter CentOS, RHEL:
sudo yum install psmisc
sudo dnf install psmisc
Wir müssen die PID eines Dienstes oder Prozesses finden, der einen bestimmten Port überwacht. Lassen Sie uns mit diesem Befehl die PID des Prozesses überprüfen, der Port 3000 überwacht:
sudo fuser 3000/tcp
Sie werden eine Ausgabe wie unten sehen.
3000/tcp: 264023
Hier, 264023
ist die PID.
Und dann finden Sie den tatsächlichen Prozess mithilfe der PID mit dem Befehl heraus:
ps -p 264023 -o comm=
Ausgabe
# ps -p 264023 -o comm=
grafana-server
Hinweis:Hinzufügen des ausführlichen -v
Flag ermöglicht es Ihnen, die vollständigen Details in einem einzigen Befehl anzuzeigen:
sudo fuser -v 3000/tcp
Ausgabe:
# sudo fuser -v 3000/tcp
USER PID ACCESS COMMAND
3000/tcp: grafana 264023 F.... grafana-server
Weitere Einzelheiten finden Sie in den Manpages.
man fuser