[SAGE-MUC] fuser über NFS

Armin Kunaschik armin.kunaschik at gmx.de
Do Mär 12 00:41:22 CET 2009


Nacht,

Nils Magnus wrote:
> beim nachmittäglichen Kaffeeklatsch kam bei uns die Frage auf, wie man 
> herausfindet, wer eine Datei aktuell geöffnet hält. Easy, sagten die meisten, 
> das geht mit fuser.

Unter Linux kann man mit fuser auch Dateien auf NFS Mounts herausfinden.
Nebenbei: Geht das auch fuer SMB-Mounts und andere Exoten? Weil: Auf
kommerziellen UNIX-Versionen funktioniert fuser nur auf lokale Verzeichnisse.

> Schwieriger wird es, wenn es um eine Datei geht, die auf einem zentralen 
> Fileserver liegt und dessen Volume mehrere Dutzend Clients per NFS mounten. 
> Mein erster Gedanke war eine unübliche Option in showmount, aber da bin ich 
> nicht fündig geworden. Weiß jemand von Euch einen Weg?

Du willst also auf nfsclient1 herausfinden, ob jemand auf nfsclient2 eine Datei geoeffnet
hat, die beide vom gleichen NFS-Server gemountet haben, richtig?

fuser (oder auch lsof) kann nur lokale Ressourcen (unter Linux z.B. /proc) verwenden,
um an das Filehandle und damit an den User zu gelangen. Um an den Eigentuemer eines
Filehandles auf einer anderen Maschine zu kommen, fehlen aber alle noetigen
Informationen (die liegen ja nur dort.. und das ist gut so).
Ich bin kein NFS-Spezi, evtl. ist es moeglich, via RPC oder ueber das "Auslesen" eines
File-Locks auf dem NFS-Server an diese Information zu gelangen. Ich dachte aber bisher
immer, ein File-Lock "kennt seinen Eigentuemer" nicht.. es ist nur ein Lock.
Da unter UNIX eher wenig Files gelockt werden, ist die Wahrscheinlichkeit, dass
das funktioniert, auch nicht gerade gross.

Aus meiner Sicht fuehrt der einfachste Weg ueber den Server, wo man via lsof (hoffentlich)
den Client herausfindet. Dann nochmal lsof (oder fuser) und Du hast die Info.

Lange Rede kurzer Sinn: Das geht schlecht bis nicht, oder? :-)

Ciao,
Armin