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

PageSpeed ​​Optimierung im Überblick

Ich glaube, dass das Internet zu einem immer unve...

MySQL vollständig deinstallieren. Persönlicher Test!

MySQL sauber deinstallieren. Persönlich getestet,...

Detaillierte Erklärung von mktemp, einem grundlegenden Linux-Befehl

mktemp Erstellen Sie auf sichere Weise temporäre ...

Anleitung zur Vermeidung von Docker Win Ping-Fehlern bei Containern

Über Win Docker-Desktop möchte ich mich mit der C...

MySQL-Replikation - ausführliche Erklärung und einfaches Beispiel

MySQL-Replikation - ausführliche Erklärung und ei...

Eine bunte Katze unter Linux

Freunde, die das Linux-System verwendet haben, mü...

So importieren Sie txt in MySQL unter Linux

Vorwort Als ich gestern ein kleines Projekt schri...

js objektorientierte Methode zum Erzielen eines Drag-Effekts

In diesem Artikel wird der spezifische Code zur I...

Super detaillierte grundlegende JavaScript-Syntaxregeln

Inhaltsverzeichnis 01 JavaScript (abgekürzt: js) ...

CSS-Standard: Eigenschaft „vertical-align“

<br />Originaltext: http://www.mikkolee.com/...

Lösung für Docker-Container, der Schriftarten wie Songti nicht erkennt

Problemhintergrund: Wenn Sie Docker zum Bereitste...