Wenn es um den Zugriff auf Socket-bezogene Informationen über die Befehlszeile in Linux geht, fällt mir als erstes Tool netstat ein. Es gibt jedoch ein anderes Dienstprogramm, das diese Arbeit für Sie erledigen kann.
Es heißt ss . In diesem Tutorial werden wir die Grundlagen dieses Tools anhand einiger leicht verständlicher Beispiele erörtern. Aber bevor wir das tun, ist es erwähnenswert, dass alle Fälle hier auf einem Ubuntu 18.04 LTS-Rechner getestet wurden.
Linux ss-Befehl
Mit dem Befehl ss in Linux können Sie Sockets untersuchen. Es folgt die Syntax:
ss [Optionen] [ FILTER ]
Und hier ist, was die Manpage des Tools darüber sagt:
ss wird verwendet, um Socket-Statistiken auszugeben. Es ermöglicht das Anzeigen von Informationen ähnlich wie bei netstat.
Es kann mehr TCP- und Statusinformationen anzeigen als andere Tools.
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine bessere Vorstellung davon vermitteln sollen, wie der Befehl ss funktioniert.
Q1. Wie verwende ich den ss-Befehl?
In seiner sehr einfachen Form können Sie den Befehl ss verwenden, indem Sie 'ss' ohne jede Option ausführen.
ss
Das Folgende ist die Ausgabe, die der Befehl in meinem Fall erzeugt hat:
Sie werden feststellen, dass ss Sockets mit hergestellten Verbindungen in seiner Standardausgabe anzeigt.
Q2. Wie kann man ss dazu bringen, die Kopfzeile zu unterdrücken?
Die Unterdrückung von Headern kann mit der Befehlszeilenoption -H erfolgen.
ss -H
Der folgende Screenshot zeigt diese Befehlszeilenoption in Aktion:
Sie sehen also, dass in diesem Fall die Kopfzeile fehlt.
Q3. Wie kann man ss dazu bringen, sowohl lauschende als auch nicht lauschende Sockets anzuzeigen?
Dies können Sie mit der Befehlszeilenoption -a tun.
ss -a
Beachten Sie, dass Listening-Sockets standardmäßig weggelassen werden. Wenn Sie also -a verwenden, fügt ss sie in die Ausgabe ein. Wenn Sie jedoch möchten, dass ss nur lauschende Sockets anzeigt, verwenden Sie die Befehlszeilenoption -l.
ss -l
Q4. Wie bringt man ss dazu, Prozesse mit Hilfe von Sockets anzuzeigen?
Wenn Sie möchten, dass der Befehl ss Prozessinformationen zusammen mit den anderen Informationen anzeigt, die er bereits in der Ausgabe erzeugt, verwenden Sie die Befehlszeilenoption -p.
ss -p
Der folgende Screenshot zeigt die Ausgabe in meinem Fall:
So können Sie sehen, dass Prozessinformationen in der Ausgabe angezeigt werden.
Q5. Wie bringt man ss dazu, zusammenfassende Informationen zu erstellen?
Wenn Sie die Ausgabe nicht sehen möchten, die der Befehl ss standardmäßig erzeugt. Dann gibt es eine Option, mit der Sie ss bitten können, eine kleine Zusammenfassung der Informationen bereitzustellen, die es analysiert.
Diese Zusammenfassung kann mit der Befehlszeilenoption -s erstellt werden:
ss -s
Das Folgende ist beispielsweise die in meinem Fall bereitgestellte Zusammenfassung:
Gesamt:1334 (Kernel 0)
TCP: 41 (Estab 35, Closed 3, Orphaned 0, Synrecv 0, Timewait 3/0), Ports 0
Transport Total IP IPv6
*0 - -
RAW 1 0 1
UDP 7 5 2
TCP 38 37 1
INET 46 42 4
frag 0 0 0F6. Wie kann man ss dazu bringen, nur IPv4- oder IPv6-Sockets anzuzeigen?
Dies kann mit den Optionen -4 und -6 erfolgen.
Damit ss beispielsweise nur IPv4-Sockets anzeigt, führen Sie den folgenden Befehl aus:
ss -4Führen Sie in ähnlicher Weise für IPv6 den folgenden Befehl aus:
ss -6F7. Wie kann man ss dazu bringen, nur TCP- oder UDP-Sockets anzuzeigen?
Es gibt verschiedene Befehlszeilenoptionen, die Sie hier verwenden können:-t für TCP und -u für UDP.
Es folgt ein nützlicher Auszug aus der Manpage des Befehls ss.
-t, --tcp
TCP-Sockets anzeigen.
-u, --udp
UDP-Sockets anzeigen.
-d, --dccp
DCCP-Sockets anzeigen.
-w, --raw
RAW-Sockets anzeigen.
-x, --unix
Unix-Domain-Sockets anzeigen (Alias für -f unix).
-S, --sctp
SCTP-Sockets anzeigen.
--vsock
Vsock-Sockets anzeigen (Alias für -f vsock).Schlussfolgerung
Der Befehl ss ist ein praktisches Werkzeug, wenn Ihre Linux-Arbeit Netzwerkarbeit beinhaltet. Hier, in diesem Tutorial, haben wir einige Befehlszeilenoptionen besprochen, die ss anbietet. Wenn Sie diese geübt haben, besuchen Sie die Manpage des Tools, um mehr zu erfahren.