Aus Linux-Magazin 11/2018

Ein Lsof-Tutorial für Einsteiger

© John Wollwerth, 123RF

Weil unter Unix bekanntlich alles eine Datei ist, taugt Lsof, die Suchmaschine für offene Files, zugleich als Troubleshooting-Tool für den Netzwerker.

Häufig interessiert beim Netzwerken beispielsweise, welche Ports geöffnet sind. So lässt sich klären, ob der Datenbankserver überhaupt auf Clients hört, ob der Webserver Anfragen bedienen kann oder welche potenziellen Angriffsziele sich Hackern im Netz bieten. Alle offenen Ports listet:

lsof -n -i

Die Liste kann lang sein, sie lässt sich aber beliebig eingrenzen. So erhält man alle Prozesse, die an beliebigen TCP-Ports auf Verbindungen lauschen mit:

lsof -i -sTCP:LISTEN

Ist beispielsweise nur ein bestimmtes Protokoll von Interesse, kann der Admin dieses ebenfalls hinter der Option »-i« angeben:

lsof -n -i :imaps

Das Weglassen einer IP-Adresse vor dem Doppelpunkt wirkt hier wie eine Wildcard: Alle Prozesse mit offenen IMAP-Ports erscheinen in der Ausgabe. Statt auf das Protokoll ließe sich das Listing beispielsweise auch auf einen User beschränken, das ermöglicht die Option »-u«. Natürlich lassen sich auch beliebige Optionen kombinieren. Dabei ist jedoch zu beachten, dass »lsof« per Default alle Optionen mit »OR« verknüpft.

Wer sich aber für die IMAP-Verbindungen des Users »jcb« interessiert, braucht stattdessen eine AND-Verknüpfung. Die stellt der Schalter »-a« her:

lsof -a -n -u jcb -i :imaps

Man könnte auch fragen: Was macht der User »jcb« in Verbindung mit einer bestimmten IP-Adresse? Oder anders formuliert:

lsof -a -u jcb -i @IP-Adresse

Die Suchparameter lassen sich auch negieren, dazu dient das Caret-Zeichen. So liefert

lsof -a -n -i TCP -u ^jcb

alle TCP-Verbindungen von allen Usern – außer von »jcb«. Statt des Usernamens wäre auch der Name einer Applikation als Filter verwendbar:

lsof -a -n -c firefox -i :https

Ein weiterer nützlicher Anwendungsfall ist die Auflistung aller vorhandenen Sockets mit dem Parameter »-U«. Hier kann der Admin die Ergebnisliste wieder eingrenzen, wie schon gezeigt. Alle Sockets des Dateimanagers Nautilus zeigt etwa:

lsof -a -n -U -c nautilus

Anstelle des Namens der Applikation kann er auch die PID eines Prozesses mit dem Parameter »-p« angeben. Und natürlich ist »lsof« auch dann nützlich, wenn die Files gewöhnliche Dateien sind. So listet

lsof +D /var/log

alle offenen Dateien unter »/var/log«. Auch lassen sich die Lsof-Ausgaben gewinnbringend durch andere Kommandos oder in Shellskripten weiterverarbeiten. Ein Beispiel ist die Aufgabe, alle Prozesse eines bestimmten Nutzers zu beenden. Das gelingt zum Beispiel so:

kill -9 `lsof -t -u Username`

Eine kleine Herausforderung im Umgang mit »lsof« sind die vielen Optionen. Für manchen kann es da eine Erleichterung sein, sich für die wichtigsten Einsatzfälle Aliasse anzulegen (Listing 1). Am besten packt man die in ein File, das die Shell beim Start liest, etwa in ».bashrc«.

Listing 1

Lsof-Aliasse

01 alias myfiles='sudo lsof -u `whoami`'
02 alias byuser='sudo lsof -u'
03 alias bypid='sudo lsof -p'
04 alias byfile='sudo lsof'
05 alias byprogram='sudo lsof -c'

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
1 Kommentar
Älteste
Neuste Beste Bewertung
user unknown
6 Jahre her

2018 und wir benutzen immer noch Backticks?

Nach oben