So verwenden Sie den SS-Befehl anstelle von Netstat im Linux-Betrieb und bei der Wartung

So verwenden Sie den SS-Befehl anstelle von Netstat im Linux-Betrieb und bei der Wartung

Vorwort

Beim Betrieb und der Verwaltung von Linux-Servern ist netstat einer der am häufigsten verwendeten Befehle. Ich verwende diesen Befehl häufig, um zu überprüfen, welche Prozesse auf dem aktuellen Server auf Ports lauschen. Er wird hauptsächlich verwendet, um den Arbeitsstatus von Netzwerkdiensten zu diagnostizieren.

Als ich jedoch kürzlich eine neue Ubuntu-Distribution installierte, stellte ich fest, dass netstat nicht standardmäßig installiert war. Das fand ich sehr seltsam. Nachdem ich es manuell installiert hatte, stellte ich fest, dass die Manpages darauf hinwiesen, dass der Befehl netstat veraltet war und dass empfohlen wurde, stattdessen den Befehl ss zu verwenden.

Dieses Programm ist größtenteils veraltet. Ersatz für netstat ist ss. Ersatz für netstat -r ist ip route. Ersatz für netstat -i ist ip -s link. Ersatz für netstat -g ist ip maddr.

netstat-Manpages

Verwendung von netstat

Es gibt viele, viele Parameter für netstat. Normalerweise verwende ich eine Kombination davon, daher kann ich mich später nicht erinnern, warum ich diese Parameter verwendet habe:

netstat -npl

Das Ergebnis ist folgendes:

Aktive Internetverbindungen (nur Server)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status PID/Programmname
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 655/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 890/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 30790/cupsd
tcp 0 0 0.0.0.0:18025 0.0.0.0:* LISTEN 890/sshd
tcp6 0 0 :::22 :::* LISTEN 890/sshd
tcp6 0 0 ::1:631 :::* LISTEN 30790/cupsd
tcp6 0 0 :::9090 :::* LISTEN 15415/./prometheus
tcp6 0 0 :::18025 :::* LISTEN 890/sshd
udp 0 0 127.0.0.53:53 0.0.0.0:* 655/systemd-auflösen
udp 0 0 0.0.0.0:631 0.0.0.0:* 30792/cups-durchsucht
udp 0 0 0.0.0.0:5353 0.0.0.0:* 757/avahi-daemon: r
udp 0 0 0.0.0.0:42360 0.0.0.0:* 757/avahi-daemon: r
udp6 0 0 :::58232 :::* 757/avahi-daemon: r
udp6 0 0 :::5353 :::* 757/avahi-daemon: r
Aktive UNIX-Domain-Sockets (nur Server)
Proto RefCnt Flags Typ Status I-Node PID/Programmname Pfad
unix 2 [ ACC ] STREAM LISTENING 35116 1304/gnome-session- @/tmp/.ICE-unix/1304
unix 2 [ ACC ] SEQPACKET LISTENING 1448 1/init /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 34277 1270/systemd /run/user/1000/systemd/privat
unix 2 [ ACC ] STREAM LISTENING 34282 1270/systemd /run/user/1000/gnupg/S.gpg-agent.ssh
unix 2 [ ACC ] STREAM LISTENING 33510 1270/systemd /run/user/1000/gnupg/S.gpg-agent
unix 2 [ ACC ] STREAM LISTENING 33511 1270/systemd /run/user/1000/pulse/native
unix 2 [ ACC ] STREAM LISTENING 33512 1270/systemd /run/user/1000/gnupg/S.gpg-agent.extra

Die am häufigsten verwendete Befehlskombination ist diese. Die angezeigten Ergebnisse bestehen aus zwei Absätzen. Der erste Absatz zeigt den Abhörstatus des TCP/UDP-Protokolls und der zweite Absatz den Abhörstatus der Socks-Datei. Der Parameter n bedeutet, die IP-Adresse in digitalem Format anzuzeigen, andernfalls wird der Hostname oder Domänenname angezeigt. Der Parameter p bedeutet, den Namen des Prozesses anzuzeigen (manchmal kann er nicht angezeigt werden). Die Bedeutung von l besteht darin, sich auf den Socket im LISTENING-Status zu konzentrieren.

Mit dem obigen Befehl können wir alle offenen Sockets im System sehen. Wenn Sie einen Netzwerkdienst starten oder einen Netzwerkdienst entwickeln, um einen Port zu öffnen, sollten Sie den Port sehen können, den Sie mit diesem Befehl geöffnet haben. Wenn Sie ihn nicht sehen können, bedeutet dies, dass der Port nicht richtig geöffnet wurde. Sie sollten den Grund überprüfen. Dies ist also ein sehr nützlicher Debugging-Befehl.

Verwendung von ss

Oben wurde die grundlegendste Verwendung von netstat vorgestellt. Es gibt natürlich noch viele weitere Verwendungsmöglichkeiten, die wir aber vorerst überspringen. Wenn wir den Befehl ss anstelle von netstat verwenden möchten, wie können wir einen ähnlichen Effekt erzielen?

ss-atlp

Dies ist eine Parameterkombination, die ich selbst herausgefunden habe. Ich kann sie noch nicht so gut auswendig und muss jedes Mal in die Dokumentation schauen:

Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port
LISTEN 0 128 127.0.0.53%lo:Domäne 0.0.0.0:* Benutzer:(("systemd-resolve",pid=655,fd=13))
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* Benutzer:(("sshd",pid=890,fd=5))
LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:* Benutzer:(("cupsd",pid=30790,fd=7))
LISTEN 0 128 0.0.0.0:18025 0.0.0.0:* Benutzer:(("sshd",pid=890,fd=3))
LISTEN 0 128 [::]:ssh [::]:* Benutzer:(("sshd",pid=890,fd=6))
LISTEN 0 5 [::1]:ipp [::]:* Benutzer:(("cupsd",pid=30790,fd=6))
LISTEN 0 128 *:9090 *:* Benutzer:(("prometheus",pid=15415,fd=3))
LISTEN 0 128 [::]:18025 [::]:* Benutzer:(("sshd",pid=890,fd=4))

Dies ist das vom Befehl ss angezeigte Ergebnis. Sie können sehen, dass sich das Format stark von netstat unterscheidet und nicht so kompakt und intuitiv ist wie der Befehl netstat. Dies ist einer der Gründe, warum dieses Erlass von vielen kritisiert wurde. Kritiker dieser Kritik meinen natürlich, dass die Leute einfach an einer Gewohnheit festhalten und nicht bereit sind, weiterzugehen. Natürlich ist es falsch, das zu sagen. Nehmen wir Charles als Beispiel. Obwohl ich den Befehl netstat gelernt habe, als ich 2010 mit der Arbeit begann, verwende ich ihn seit fast zehn Jahren und habe ihn nie geändert. Natürlich gefällt er mir sehr gut.

Natürlich gibt es auch einen Grund, den Ausländer vorbringen: Sie sagen, der Name des SS-Befehls sei nicht gut. Tatsächlich könnte SS Socket Statistics bedeuten. Nach der Abkürzung hat es nur zwei Buchstaben, was nicht leicht zuzuordnen ist und nicht so intuitiv wie netstat. Natürlich ist das nur meine Erklärung und kein Grund für Ausländer, sich zu beschweren. Sie beschweren sich darüber, dass sie immer an Hitler denken, wenn von SS die Rede ist! Ist das nicht unglaublich? Ich bin in den 1980er Jahren geboren. Die Leute meiner Generation haben davon keine Ahnung. Der Schlüssel ist, dass wir hauptsächlich Chinesisch sprechen. Ich schätze, wenn die Leute SS hören, denken sie vor allem an Leitern und nie an Hitler. Dieser große Nazi verfügte über eine Streitmacht, die früher „SS-Sondereinheit“ hieß und später in Waffen-SS umbenannt wurde. Die deutsche Abkürzung lautet SS.

Lassen Sie mich ohne weiteres über einige Parameter sprechen. Der Parameter a bedeutet, alles anzuzeigen, der Parameter t bedeutet, das TCP-Protokoll anzuzeigen, l steht für den LISTENING-Status und p steht für die Prozessinformationen. Aus der obigen Tabelle können wir erkennen, dass die vom Parameter p ausgegebenen Informationen nicht so präzise organisiert sind wie die von netstat. Es ist jedoch vollständiger und zeigt den Prozessnamen, PID und FD an. Aber wegen der doppelten Klammern, des Schlüssel/Wert-Formats und der Anführungszeichen sieht es unordentlich aus. Natürlich können wir einige Befehle zum Formatieren verwenden, aber es ist immer noch zu mühsam.

Was ist der Grund für den Austausch?

Das ist wahrscheinlich das, was mich am meisten interessiert. Ich habe zwar viele Informationen online gesucht, aber sie waren im Wesentlichen vage. Das macht mich auch ein wenig hilflos.

Im Allgemeinen können wir sehen, dass das Hauptpaket das Net-Tools-Paket ist, das durch das IP-Route-Paket ersetzt wird. Die Gründe dafür sind vermutlich: 1. Dieses Paket ist zu alt. 2. Dieses Paket unterstützt viele neue Kernel-Funktionen nicht (es steht aber nicht, welche Funktionen), die Schnittstelle ist nicht ausreichend optimiert und schwierig zu verwenden (nicht kommandozeilenfreundlich). 3. ifconfig in net-tools hat viele Mängel. 4. Ich möchte net-tools in Zukunft nicht mehr pflegen.

Luk Claes und ich, die derzeitigen Betreuer von Net-Tools, haben über dessen Zukunft nachgedacht. Net-Tools ist seit vielen Jahren ein zentraler Bestandteil von Debian und jeder anderen Linux-basierten Distribution, aber es zeigt sein Alter.

Es unterstützt viele der modernen Funktionen des Linux-Kernels nicht, die Schnittstelle ist alles andere als optimal und bei der Automatisierung schwierig zu verwenden, und außerdem hat es in den letzten Jahren nicht viel Liebe erfahren.

Auf der anderen Seite verfügt die mit der Kernel-Reihe 2.2 eingeführte Iproute-Suite über eine deutlich bessere und einheitlichere Schnittstelle, ist leistungsfähiger und fast zehn Jahre alt, sodass niemand sagen würde, sie sei ungetestet.

Daher planen wir, net-tools vollständig durch iproute zu ersetzen, und könnten damit den Weg für andere Distributionen ebnen. Natürlich verwenden die meisten Leute und Tools die alte, ehrwürdige Schnittstelle und erinnern sich daran. Der erste Schritt wäre also, Wrapper zu schreiben, die versuchen, mit net-tools kompatibel zu sein.

Gleichzeitig glauben wir, dass die meisten Pakete, die Net-Tools verwenden, so gepatcht werden sollten, dass sie stattdessen iproute verwenden, während andere die Wrapper noch eine Zeit lang weiter verwenden können. Das ifupdown-Paket ist offensichtlich der erste Kandidat, aber es scheint, dass eine Version, die iproute verwendet, seit 2007 im Experimental-Modus verfügbar ist.

https://serverfault.com/questions/633087/wo-ist-die-angabe-zur-veraltung-von-ifconfig-unter-linux

Es gibt auch eine Analyse auf der Prinzipebene: Die aktuellen Befehle netstat und ifconfig erledigen beide ihre Aufgaben, indem sie virtuelle Dateien im Verzeichnis /proc lesen und schreiben. Dies ist für kleine Unternehmenssysteme in Ordnung, kann jedoch in großen Systemen die Systemleistung beeinträchtigen. Im Gegensatz dazu verwenden die Befehle ss und ip die Netlink-Sockets-Funktion des Linux-Kernels. Es gibt einen grundlegenden Unterschied. Obwohl alte Befehle nach neuen Prinzipien umgeschrieben werden können, tut dies eigentlich niemand. Der Hauptgrund dafür sind politische Probleme zwischen verschiedenen Programmierergruppen und alle sind anderer Meinung ...

Natürlich gibt es einen tieferen Grund. Wir verwenden solche Debugging-Befehle, weil wir im Wesentlichen den Status des Kernels wissen möchten. Tatsächlich hat der Kernel das gesamte Prinzip des Netzwerkmoduls geändert. Andererseits benötige ich auch den Befehl, um Informationen wie zuvor anzuzeigen. Das Format der Anzeigeebene ist vom tatsächlichen Prinzip abgewichen. Daher ist es auf lange Sicht unvermeidlich, diese beiden Befehle zu ersetzen.

abschließend

Auch diejenigen von uns, die im Technologiebereich arbeiten, sollten mit der Zeit gehen. Obwohl die vorherigen Befehle vertraut, einfach zu verwenden und sogar einprägsam sind, müssen wir immer wieder neue lernen. Viele Distributionen enthalten das Net-Tools-Paket nicht mehr standardmäßig. Es kann zwar immer noch manuell installiert werden, aber die Einstellung dahinter ist sehr klar. Andererseits müssen wir in der technischen Arbeit auch darauf achten, dass unser Gehirn nicht erstarrt und wir müssen unsere Neugier und Begeisterung für Neues bewahren.

Das ist alles für diesen Artikel. Ich hoffe, dass der Inhalt dieses Artikels für Ihr Studium oder Ihre Arbeit von gewissem Referenzwert ist. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Detaillierte Diskussion des Linux-Netstat-Befehls (wichtig für Vorstellungsgespräche mit leitenden Angestellten)
  • Einige gängige Verwendungen des netstat-Befehls in Linux
  • Detaillierte Erklärung des Linux-Netstat-Befehls
  • So zeigen Sie die Anzahl gleichzeitiger Verbindungen mit dem Linux-Befehl „netstat“ an
  • Detaillierte Analyse des Linux-Netstat-Befehls
  • Verwenden Sie netstat, um den Netzwerkstatus und den Portstatus in Linux anzuzeigen
  • Detaillierte Erklärung des Linux-Netstat-Befehls

<<:  Tipps zur Datenstatistik in MySQL

>>:  Detaillierte Erklärung, wie Vue-Komponenten Werte untereinander übertragen

Artikel empfehlen

Vollständiger Code zur Implementierung der Vue-Backtop-Komponente

Wirkung: Code: <Vorlage> <div Klasse=&qu...

Eine kurze Diskussion zur Logikextraktion und Feldanzeige von Vue3 in Projekten

Inhaltsverzeichnis Logische Schichtung Trennen Si...

Implementierung der Breakpoint-Wiederaufnahme in Node.js

Vorwort Normaler Geschäftsbedarf: Hochladen von B...

Implementierung der Formatierung von Partitionen und der Einbindung in Centos7

Unter Linux treten häufig Situationen auf, in den...

Detailliertes Tutorial zum Ausführen mehrerer Springboot mit Docker

Docker führt mehrere Springboot Erstens: Port-Map...

Implementierung der MySQL Master-Slave-Statusprüfung

1. Überprüfen Sie den Synchronisierungsstatus der...

So konfigurieren Sie MySQL8 in Nacos

1. Erstellen Sie die MySQL-Datenbank nacos_config...

Unterschiede zwischen ES6-Vererbung und ES5-Vererbung in js

Inhaltsverzeichnis Nachlass ES5-Prototypvererbung...

Grundlegende Hinweise zu HTML (empfohlen)

1. Grundstruktur der Webseite: XML/HTML-CodeInhal...

WeChat Mini-Programm implementiert den Likes-Dienst

In diesem Artikel wird der spezifische Code für d...

MySQL Workbench herunterladen und verwenden Tutorial detaillierte Erklärung

1. MySQL Workbench herunterladen Workbench ist ei...

Verwendung des Linux-Lesebefehls

1. Befehlseinführung Der Lesebefehl ist ein integ...