Linux (allgemein)

ID #1245 Linux: geöffnete Dateien finden

Problem:

Bei Systemdiagnosen oder Problemen im laufenden Betrieb ist es Sinnvoll gewisse Zugriffe zu kontrollieren. Sobald es auf geöffnete Dateien, Sockets oder Ports geht hilft <code>lsofcode>.

Beispiele:

Erst brauchen wir eine kurze Übersetzung der Abkürzungen einer <code>lsofcode>-Ausgabe:

  • <code>COMMANDcode>: Programmname (gekürzt)
  • <code>PIDcode>: die Nummer zur Prozessidentifikation
  • <code>USERcode>: Besitzer der Prozesses
  • <code>FDcode>: der Filedeskriptor
  • <code>TYPEcode>: der Node-Typ
  • <code>DEVICEcode>: die Device-Nummer
  • <code>SIZEcode>: die Größe der Datei oder des Datei-Offsets in Bytes
  • <code>NODEcode>: zeigt zum Beispiel die Inode oder das Protokoll an
  • <code>NAMEcode>: listet zusätzliche Informationen wie zum Beispiel den Dateinamen, Mountpoint oder die IP-Adressen bei einem Socket

Was hat ein Programm geöffnet?

# lsof -c init
COMMAND PID USER   FD   TYPE DEVICE    SIZE   NODE NAME
init      1 root  cwd    DIR    8,3    4096      2 /
init      1 root  rtd    DIR    8,3    4096      2 /
init      1 root  txt    REG    8,3   31432 666575 /sbin/init
init      1 root  mem    REG    8,3   90248 603264 /lib/ld-2.3.2.so
init      1 root  mem    REG    8,3 1244752 603269 /lib/libc-2.3.2.so
init      1 root   10u  FIFO    8,3         553865 /dev/initctl

Welche Programme hängen am SMTP-Port?

# lsof -i :25
COMMAND   PID    USER   FD   TYPE DEVICE SIZE NODE NAME
master   1120    root   11u  IPv4   2296       TCP *:smtp (LISTEN)
smtpd   18046 postfix    6u  IPv4   2296       TCP *:smtp (LISTEN)
smtpd   20629 postfix    6u  IPv4   2296       TCP *:smtp (LISTEN)

Welche Programme haben Logfiles geöffnet?

# lsof +D /var/log
COMMAND     PID     USER   FD   TYPE DEVICE    SIZE    NODE NAME
syslogd     693     root    2w   REG    8,6  667871  277451 /var/log/auth.log
syslogd     693     root    3w   REG    8,6 1752065  277442 /var/log/syslog
syslogd     693     root    7w   REG    8,6 1622736  277443 /var/log/mail.log
syslogd     693     root   10w   REG    8,6 1622580  277457 /var/log/mail.info
syslogd     693     root   11w   REG    8,6 1094180  277461 /var/log/mail.warn
syslogd     693     root   16w   REG    8,6   10477  277475 /var/log/debug
syslogd     693     root   17w   REG    8,6   14324  277487 /var/log/messages
clamd       726   clamav    3w   REG    8,6   11667 2301133 /var/log/clamav/clamav.log
freshclam   818   clamav    3wW  REG    8,6   59871 2301140 /var/log/clamav/freshclam.log
mysqld     3756    mysql   70w   REG    8,6  390551 1664663 /var/log/mysql/mysql-slow.log
snort     15341    snort    5w   REG    8,6  105968 2350082 /var/log/snort/alert
apache2   16211 www-data    2w   REG    8,6   76595  554911 /var/log/apache2/error.log
apache2   16211 www-data   77w   REG    8,6  161708  554892 /var/log/apache2/access.log

Weitere kurze Beispiele:

Anzeige aller Prozesse, die gerade auf Dateien zugreifen:
<code>lsofcode>

Anzeige aller Prozesse, die gerade auf die Datei "/usr/bin/vim" zugreifen (vi arbeiten):
<code>lsof /usr/bin/vimcode>

Anzeige aller Prozesse, die gerade auf die CD-ROM-Gerätedatei "/dev/hdc" zugreifen:
<code>lsof /dev/hdccode>

Beenden aller Prozesse, die noch auf ein ins CD-ROM-Laufwerk eingelegtes Medium zugreifen:
<code>kill $(lsof -t /cdrom)code>

Anzeige aller offenen Dateien des Prozesses mit der PID 2326:
<code>lsof -p 2326code>

Anzeige aller offenen Dateien im Verzeichnis "/tmp" und seinen Unterverzeichnissen, ohne dabei auf symbolische Links zu achten:
<code>lsof +D /tmpcode>

Anzeige aller vom Benutzer "max" geöffneten Dateien:
<code>lsof -u maxcode>

Anzeige aller offenen Dateien, die nicht der Benutzer "root" geöffnet hat:
<code>lsof -u ^rootcode>

Anzeige einer ähnlichen Prozessliste wie <code>ps auxcode> durch Auflisten der Einträge mit Dateideskriptoreintrag "txt" statt der sonst üblichen Nummer ("txt" steht für Programmcode und Daten, also eine ausgeführte Datei):
<code>lsof -d txtcode>

Anzeige aller gelöschten Dateien, die noch geöffnet sind und daher Plattenplatz verbrauchen, aber in keinem Verzeichnis erscheinen (Dateien mit weniger als einem Link):
<code>lsof +L1code>

Anzeige aller netzwerkrelevanten Dateien:
<code>lsof -icode>

Anzeige aller netzwerkrelevanten Dateien, ohne die Portnummern als Dienstbezeichnung auszuschreiben und ohne die Hostnamen aufzulösen (daher deutlich performanter):
<code>lsof -i -P -ncode>

Anzeige aller IPv6-bezogenen Dateien:
<code>lsof -i6code>

Anzeige aller aktiven Verbindungen:
<code>lsof -i | grep '\->'code>

Anzeige aller derzeit vom Benutzer "www-data" geöffneten Netzwerkdateien (UND-Verknüpfung durch "-a"):
<code>lsof -a -i -u www-datacode>

 

sozial Bookmarking
Bookmarken bei YIGG Bookmarken bei Mister-Wong Bookmarken bei Icio Bookmarken bei del.icio.us Bookmarken bei Technorati Bookmarken bei Furl Bookmarken bei Spurl Bookmarken bei Yahoo Bookmarken bei Google

vom 2007-07-20 09:08, zuletzt 2008-02-07 10:33     Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen

Dieser Inhalt ist unter der Creative-Commons Lizenz lizensiert.

Probleme bitte im Server-Support-Forum diskutieren.

überflüssig 1 2 3 4 5 wertvoll  
Durchschnittliche Bewertung:   4.93 von 5 (15 Bewertungen)

Artikel kommentieren