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.
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.
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:
|
<<: Tipps zur Datenstatistik in MySQL
>>: Detaillierte Erklärung, wie Vue-Komponenten Werte untereinander übertragen
Ich glaube, dass das Internet zu einem immer unve...
Projektszenario: Dark Horse Vue Projektmanagement...
MySQL sauber deinstallieren. Persönlich getestet,...
mktemp Erstellen Sie auf sichere Weise temporäre ...
Founder Type Library ist eine Schriftbibliothek, ...
Über Win Docker-Desktop möchte ich mich mit der C...
MySQL-Replikation - ausführliche Erklärung und ei...
Freunde, die das Linux-System verwendet haben, mü...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort Als ich gestern ein kleines Projekt schri...
In diesem Artikel wird der spezifische Code zur I...
Inhaltsverzeichnis 01 JavaScript (abgekürzt: js) ...
<br />Originaltext: http://www.mikkolee.com/...
Inhaltsverzeichnis Vorwort Kern - CancelToken Pra...
Problemhintergrund: Wenn Sie Docker zum Bereitste...