Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Nicht immer mit Tötungsabsicht: Informationen sammeln Programmzusammenbrüche (Core Dump) »

Offene Dateien

Ob ein Prozess eine Datei geöffnet hat, ist eine wichtige Information. Eine geöffnete Datei kann nicht einfach gelöscht werden, und ein schreibender Prozess sollte nicht einfach abgebrochen werden. Es gibt also einen Bedarf an Information, welche Datei von welchen Prozessen bearbeitet wird und welcher Prozess welche Dateien geöffnet hat.

Um festzustellen, welche Prozesse auf eine Datei zugreifen, gibt es den Befehl fuser. Er zeigt die PID der Prozesse, die die als Parameter angegebene Datei geöffnet haben:

gaston> fuser unix.ps
unix.ps:              1176  1190

Wendet man fuser auf ein Verzeichnis an, kann man sehen, welche Prozesse unterhalb dieses Verzeichnisses gestartet worden sind. Das ist wichtig, wenn man beispielsweise ein Dateisystem per umount ausklinken möchte und die Meldung erscheint, dass das Gerät noch benutzt wird.

Die andere Frage, nämlich welche Dateien ein bestimmter Prozess geöffnet hat, kann man mit Hilfe des Programmes lsof (list open files) beantwortet werden. Es liefert alle offenen Dateien des Systems. Darin sind auch die Netzwerkverbindungen enthalten. Hier sehen Sie eine Beispielausgabe:

COMMAND    PID   USER   FD   TYPE     DEVICE     SIZE      NODE NAME
init         1   root  mem    REG        3,5   333780    178159 /sbin/init
portmap    386   root  mem    REG        3,5    28184    178286 /sbin/portmap
portmap    386   root  mem    REG        3,5   342535    275298 /lib/ld-2.1.3.so
portmap    386   root  mem    REG        3,5    44729    275322 /lib/libutil.so.1
portmap    386   root  mem    REG        3,5  4070406    275303 /lib/libc.so.6
syslogd    404   root  mem    REG        3,5    29252    485827 /usr/sbin/syslogd
syslogd    404   root  mem    REG        3,5   342535    275298 /lib/ld-2.1.3.so
syslogd    404   root  mem    REG        3,5  4070406    275303 /lib/libc.so.6

In der zweiten Spalte steht die PID, die man leicht per grep oder besser per awk herausfiltern kann. Der folgende Aufruf liefert alle Dateien, die der Prozess mit der PID 719 geöffnet hat.

lsof | awk '{if ( $2==719 ) print $9 }'

Da nicht jeder Administrator die Syntax von awk auswendig kennt, funktioniert natürlich auch die einfachere Variante mit grep:

lsof | grep 719

Der Nachteil dieser unsportlichen Lösung ist natürlich, dass nun auch Zeilen herausgegriffen werden, die an anderer Stelle als in Spalte 2 die Zahl 719 haben.

Falls es einmal notwendig wird, Prozesse zu terminieren, die noch offene Dateien halten, kann man versuchen, den Schaden zu begrenzen, indem man das System auffordert, die Daten in den Puffern auf die Platte zu schreiben. Der Aufruf sync erreicht dies. Er braucht keine weiteren Parameter.



« Nicht immer mit Tötungsabsicht: | Informationen sammeln | Programmzusammenbrüche (Core Dump) »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de