web-dev-qa-db-fra.com

vérifier si le fichier est ouvert avec lsof

J'utilise linux mint 13 xfce et j'ai un fichier nommé wv.gold Que j'essaie de vérifier dans bash s'il est ouvert par n'importe quel programme (par exemple, je l'ai ouvert dans sublime-text Et gedit)

Dans de nombreux forums, les gens disent que si je lance lsof | grep filename Je devrais obtenir 0 S'il est ouvert ou 256(1) s'il est fermé, mais en fait je ne reçois rien (chaîne vide) si Je cours en utilisant grep "wv.gold" Et j'obtiens une petite liste si je le fais en utilisant grep gold.

La liste est quelque chose comme:

bash       2045  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
bash       2082  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
watch      4463  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
gedit     16679  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
lsof      20823  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
grep      20824  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir
lsof      20825  user   cwd   DIR   8,1     4096     658031 /home/user/path/to/dir

Ainsi, j'obtiens le chemin d'accès au répertoire qu'il est mais PAS le chemin d'accès au fichier (il y a d'autres fichiers là-bas) et de toute façon uniquement au processus gedit, pas au processus sublime-text.

Existe-t-il un moyen simple de voir si un fichier txt est ouvert par un autre programme?

EDIT : Il s'avère (cf. commentaires de @mata et @ctn) que certains éditeurs chargent des fichiers et les ferment immédiatement, et ils rouvrent simplement le fichier quand l'enregistrer. De cette façon, nous ne pouvons le voir que lorsqu'ils ouvrent encore un gros fichier (puisque vous avez le temps de l'observer lors de l'ouverture) et il disparaît immédiatement après cela.

15
rafa

Les lignes qui apparaissent dans la sortie de lsof sont des fichiers ouverts. Si votre fichier n'est pas là, cela signifie qu'il n'est pas ouvert. Parmi les colonnes figurent le PID (l'ID de processus du programme qui a le fichier ouvert) et le FD (le descripteur de fichier associé au fichier ouvert). Aucune valeur particulière pour ceux-ci indique ouvert/fermé. S'il apparaît, cela signifie qu'il est ouvert.

Découvrez http://linux.die.net/man/8/lsof et recherchez le texte contains the first nine characters

15
ctn