Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/05/2007, 10h59   #1
Invité régulier
 
Inscription : mars 2005
Messages : 43
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 43
Points : 9
Points : 9
Par défaut Savoir si un fichier texte est ouvert ?

Bonjour,

Comment savoir si un fichier texte (dont je connais le nom) est actuellement ouvert par un autre process ???

J'ai cherché avec lsof mais cela me donne les process qui ont ouvert des fichiers mais je ne retoruve pas le nom de mon fichier

merci de votre aide
devl83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 15h24   #2
Membre émérite
 
Avatar de Celelibi
 
Inscription : janvier 2004
Messages : 990
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 990
Points : 822
Points : 822
la commande
Code :
lsof chemin_vers_le_fichier
te donnera juste la ligne ou les lignes où le fichier est ouvert et se terminera correctement si le fichier est ouvert.
Cette commande ne donnera rien et se terminera avec un code de retour non nul si le fichier n'est pas ouvert.
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.
Celelibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 16h15   #3
Invité régulier
 
Inscription : mars 2005
Messages : 43
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 43
Points : 9
Points : 9
merci celelibi.

Je n'arrive pas à faire fonctionner lsof comme tu l'indique.

J'ai ouvert un fichier avec kwrite : /home/xx/toto.txt

lorsque je fais :
lsof /home/xx/toto.txt

je n'ai aucun résultat

par contre si je fais :

lsof /home/xx

j'ai :

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bash 4203 xx cwd DIR 3,70 4096 3424319 /home/xx
kwrite 5124 xx cwd DIR 3,70 4096 3424319 /home/xx


qui m'indique que j'ai un fichier ouvert par kwrite dans ce repertoire, mais je ne sais pas lequel





Mon problème est de savoir si un fichier est déjà ouvert par un autre process avant de le deplacer pour faire un traitement dessus.
J'ai un répertoire où je telecharge des fichiers par filezilla.
D'autre part, j'ai un process qui scrute ce répertoire et qui déplace les fichiers répondant à un certain critère (nom particulier) pour pouvoir les traiter ensuite.
Dans le cas de gros fichiers, je voudrais savoir quand le process de telechargement en a fini avec le fichier pour ne pas avoir un fichier tronqué.
devl83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 16h42   #4
Membre émérite
 
Avatar de Celelibi
 
Inscription : janvier 2004
Messages : 990
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 990
Points : 822
Points : 822
Ton terminal est assez large pour afficher les lignes complètes ?
Sinon les commandes suivantes permette d'afficher les lignes complètes quitte à ce qu'elles soient sur plusieurs lignes.
Code :
1
2
commande | cat
COLUMNS=0 commande
Le comportement de ton lsof me semble un peu étrange, c'est normalement l'option +D répertoire (ou bien +d répertoire) qui affiche la liste des fichiers ouverts qui se trouvent dans un répertoire.

Et sinon, tu es sûr que c'est bien la commande lsof que tu exécute et pas un alias ?
which lsof devrait te renseigner là dessus.
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.
Celelibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 17h00   #5
Invité régulier
 
Inscription : mars 2005
Messages : 43
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 43
Points : 9
Points : 9
kwrite doit fonctionner comme vi, cad avec un fichier temporaire.

J'ai ouvert mon fichier toto.txt avec vi, et là vi cree un fichier .toto.txt.swp sur lequel il travaille

ce qui fait que lorsque je fait

lsof /home/xx/toto.txt

je n'ai rien et lorsque je fais

lsof /home/xx/.toto.txt.swp

j'ai la bonne ligne :

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
vi 4203 xx 4u REG 3,70 4096 3424319 /home/xx/.toto.txt.swp

Donc ça marche !!!

Je vais essayer de l'utiliser dans mon cas particulier.

Merci pour le coup de main.
devl83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h16.


 
 
 
 
Partenaires

Hébergement Web