Prozess beenden, der auf eine Datei zugreift

Datum: 2004-03-27
Quelle: suse-linux

Worum ging es?

Ein gemountetes Laufwerk soll ausgehängt werden. Dazu müssen die Prozesse, die auf das Laufwerk zugreifen, beendet werden.

Code
# Original
PID="`lsof /work | awk ' NR > 1 { print $2 } '`"
# Besser / better
PID="`lsof -t /work`"
test -n "$PID" && kill $PID
Beschreibung

Der lsof ermittelt alle Prozesse, die auf eine bestimmte Datei (in diesem Fall das Verzeichnis /work) zugreifen. Dieses muss natürlich im konkreten Fall durch den Mountpunkt des Laufwerks ersetzt werden. Der awk wird benutzt, um die PID des / der Prozesse aus der Ausgabe auszuschneiden. Die 2. Variante nutzt dazu gleich die -t-Option und spart sich den awk (der Vorschlag kam in der Liste). Anschließend wird nur noch geprüft, ob die PID nicht leer ist, also ob mindestens ein Prozess gefunden wurde, mit der oder den PIDs wird dann der kill gefüttert.