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 01/2018: FLINKE BROWSER

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

Suchprogramm
Heiko Taeuber, 17.01.2018 21:12, 1 Antworten
Hallo liebe Community, keine Ahnung ob dieses Thema hier schon einmal gepostet wurde. Ich hab...
Linux Mint als Zweitsystem
Wolfgang Robert Luhn, 13.01.2018 19:28, 4 Antworten
Wer kann mir helfen??? Habe einen neuen Laptop mit vorinstaliertem Windows 10 gekauft. Möchte g...
externe soundkarte Kaufempfehlung
lara grafstr , 13.01.2018 10:20, 3 Antworten
Hallo Ich bin auf Suche nach einer externen soundkarte.. Max 150 Euro Die Wiedergabe is...
Prozessor-Sicherheitslücke Meltdown und Spectre
Wimpy *, 06.01.2018 10:45, 2 Antworten
Ich habe heute ein Sicherheitsupdate "ucode-intel" für openSuse 42.3 erhalten. Ist damit das Prob...
LENOVO ideapad320 Touchpad Linux Mint 18
Peter Deppen, 23.12.2017 16:49, 3 Antworten
Hallo, bin Linux Anfänger und habe das Problem, dass das Touchpad auf dem LENOVO ideapad320 mit L...