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
|
| |
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.
| |
|
|
Ihre Meinung? |
|
|
|
|
| |
| |
Shopping |
|
Versandkostenfrei bestellen in Deutschland und Österreich Info
|
|
| |
| |
|