Praxis

Lsof liefert sehr viel mehr Informationen, als Sie in den meisten Fällen tatsächlich benötigen. In der Regel ist es daher sinnvoll, mittels eines Filters gezielt die für Sie relevanten Angaben aus dem Datenstrom herauszufischen. Dazu kommt oft Grep zum Einsatz; alternativ greifen Sie auf einen Pager zurück, also ein seitenweise anzeigendes Programm wie less oder more:

$ lsof | less -j22p Suchbegriff

Mittels -j22 zeigt Less den Treffer nicht mehr am oberen Rand des Fensters an, sondern in Zeile 22, bei einem Fullscreen-Terminalfenster also etwa in der Mitte des Bildschirms. So können Sie auch den Kontext des Treffers erkennen. Die Option -p Suchbegriff definiert das Suchmuster, analog zu Grep.

Auch Lsof selbst offeriert Optionen, um die Ausgaben zu filtern. Mit dem Schalter -c Muster grenzen Sie beispielsweise die zu berücksichtigenden Prozesse ein. Das zu suchende Muster darf aus einer Zeichenkette (etwa einem Prozess- oder Programmnamen) oder auch einem regulären Ausdruck bestehen – Letzteren schließen Sie zwischen Slashes (/) ein.

Mit lsof /dev/sdc1 finden Sie schnell heraus, welche(r) Prozess(e) beispielsweise auf ein Gerät beziehungsweise eine Partition zugreifen. Möchten Sie wissen, welche Prozesse Lock-Dateien unter /var/lock/ verwenden, tippen Sie lsof +D /var/lock/. Fällt die Ausgabe dann immer noch zu umfangreich aus, schränken Sie sie auf Prozesse ein, die beispielsweise mit sys und cup beginnen:

$ lsof -c sys -c cup [...]

Optionen, die Ausgaben steuern, kombiniert Lsof wie schon erwähnt automatisch per logischem Oder. Möchten Sie nur Zeilen zu sehen bekommen, bei denen zwei Optionen gleichzeitig zutreffen, aktivieren Sie über lsof -a den Und-Modus.

Um lediglich die Prozesse eines bestimmten Benutzers unter die Lupe zu nehmen, etwa jene von Root, verwenden Sie die Option -u. Als Argument verarbeitet Lsof sowohl den Usernamen (root) als auch die PID (0). Um alle durch Lsof ermittelten Prozesse eines bestimmten Benutzers zu terminieren, verwenden Sie die Option -t: Damit erhalten Sie eine Ausgabe, die sich direkt als Argument für Kill verwenden lässt:

$ kill $(lsof -tu User)

Relativ oft benötigt man Informationen, welche Dateien ein spezieller Prozess auf welche Weise geöffnet hat. Dazu ermitteln Sie zunächst die PID des Prozesses (etwa mithilfe von Ps) und übergeben diese anschließend als Argument von -p an Lsof:

$ lsof -p PID

Dies liefert Ihnen alle durch den angegebenen Prozess geöffneten Dateien, einschließlich der verwendeten Libraries. Um Letztere auszuschließen, filtern Sie die Ausgabe gegebenenfalls einfach mittels grep -v '/lib/'.

Eine Besonderheit von Lsof stellt der sogenannte Repeat-Modus dar, den Sie mit der Option -r aktivieren: In diesem Fall erfolgt die Ausgabe mehrfach in festen Intervallen, in der Vorgabe alle 15 Sekunden. Mit -r Sekunden ändern Sie den Zeitabstand, der aber mindestens 2 Sekunden betragen muss.

Netzwerkeln

Da Linux Netzwerkverbindungen wie Dateien behandelt, kann Lsof diese analog zu den normalen Dateizugriffen behandeln. Mit der Option -i aufgerufen, listet Lsof alle aktuellen Netzwerkverbindungen auf. Als normaler Benutzer bekommen Sie hier in der Regel nur die Verbindungen der Mail-Clients, des Webbrowsers und eventuell eines Dropbox-Clients zu sehen. Das sieht als Root schon ganz anders aus, da beispielsweise das Drucksystem via CUPS, der DHCP-Client, der Zeroconf-Client Avahi und wahrscheinlich auch der Netzwerkzeit-Dämon Ntpd laufen.

Die Option -i 6 reduziert die Lsof-Ausgaben auf Verbindungen vom Typ IPv6, -i 4 auf die IPv4-Verbindungen. Zusammen mit -a und einer PID lassen sich schnell alle Netzwerkverbindungen eines bestimmten Prozesses ermitteln:

$ lsof -a -i -p PID

Auch die an einem bestimmten Port lauschenden Prozesse findet Lsof auf Wunsch. Dazu verwenden Sie ebenfalls die Option -i, geben als Argument dann aber die mit einem Doppelpukt versehene Portnummer an. So listet lsof -i :22 etwa alle SSH-Verbindungen auf.

Alle TCP-Verbindungen sehen Sie mit lsof -i TCP ein. Durch den Zusatz :ESTABLISHED begrenzen Sie die Ausgabe mit lsof -i -sTCP:ESTABLISHED auf etablierte Verbindungen. Analog funktioniert das Ganze mit lsof -i UDP für UDP-Verbindungen, mit lsof -i -sTCP:LISTEN für offene Ports oder mit lsof -iIP[:Port] für Verbindungen zu bestimmten Gegenstellen und Ports.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...