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.
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