J'essaye de tester un seul fichier s'il est ouvert en utilisant lsof. Y a-t-il un moyen plus rapide que cela? Je pense que leur doit être un moyen de tester un seul fichier si vous connaissez le nom de fichier. Tout ce dont j'ai vraiment besoin est vrai ou faux.Quel est le moyen le plus rapide d'utiliser lsof pour trouver un seul fichier ouvert?
Répondre
J'ai trouvé un bien meilleur moyen. Avec lsof (testé sur la version 4,63), vous pouvez interroger directement un fichier spécifique:
if lsof filename > /dev/null; then
# file is open
fi
Eh bien, vous pouvez sauter wc
et utiliser la valeur de retour de grep (grep retourne 0 (succès) si elle détecte le motif et 1 (non-succès) si elle ne détecte pas le motif):
if lsof | grep filename > /dev/null; then
# filename is in output of lsof
fi
Vous pouvez améliorer cela un peu en utilisant -l
drapeau grep:
if lsof | grep -l filename > /dev/null; then
...
cela dit grep d'arrêter de regarder une fois qu'il détecte est le premier match.
Utilisez fuser
. Il renvoie non-zéro si l'un des fichiers spécifiés est utilisé, et zéro s'ils sont tous disponibles.
Ne pas. La réponse peut changer au moment où vous essayez de faire quelque chose avec le résultat. Au lieu de cela, essayez de faire ce que vous avez l'intention de faire avec le fichier et de gérer l'erreur "en cours d'utilisation" ou "violation de partage".
Pour vous: +1, d'après ce que je vois, je pense que vous pourriez avoir raison. Bien que votre réponse ne répond pas spécifiquement à la question. – jjclarkson
Jared Parsons a un bon article sur pourquoi la question elle-même est fondamentalement défectueuse: http://blogs.msdn.com/jaredpar/archive/2009/12/10/the-file-system-is-unpredictable.aspx Dans de tels cas, il est préférable de ne pas répondre à la question qui a été posée, mais à la question qui aurait dû être posée. –
-1 pour plusieurs raisons. Premièrement, la réponse «ne pas» est * aussi * naïve et malavisée. Il existe plusieurs raisons légitimes de vouloir interroger directement si les fichiers sont ouverts ou si des verrous consultatifs sont conservés, tels que le débogage, la surveillance ou l'avertissement d'un utilisateur à l'avance qu'ils ne seront peut-être pas en mesure d'enregistrer leurs modifications. Deuxièmement, les pointeurs de fichiers sous Unix n'imposent aucun type de verrouillage par défaut; À moins que vous n'utilisiez explicitement 'flock' ou un autre mécanisme de verrouillage, vous n'obtiendrez * aucune * erreur de type" in use "ou" sharing violation "- vous vous contenterez d'amuser votre fichier. –
- 1. Quel est le moyen le plus rapide de trouver un fichier dans Zend Studio pour Eclipse?
- 2. Quel est le moyen le plus rapide pour trouver le nombre de correspondances entre les tableaux?
- 3. Quel est le moyen le plus rapide pour trouver le point d'intersection entre un rayon et un polygone?
- 4. Quel est le moyen le plus rapide d'apprendre l'objectif-c pour un développeur expérimenté en PHP?
- 5. NSMutableArray. Quel est le moyen le plus rapide pour le convertir en un tableau C simple?
- 6. Quel est le moyen le plus rapide pour lire/écrire sur le disque dans .NET?
- 7. Quel est le moyen le plus rapide pour supprimer un grand dossier dans Windows?
- 8. Quel est le moyen le plus rapide pour combiner deux fichiers xml en un
- 9. Quel est le moyen le plus rapide pour télécharger un énorme ensemble de données à appengine?
- 10. Quel est le moyen le plus rapide pour 302 un lien vers son URL finale?
- 11. Quel est le moyen le plus rapide d'obtenir une longueur de fichier dans .net?
- 12. Quel est le moyen le plus rapide pour récupérer le XML intersite en utilisant javascript?
- 13. PhpED: moyen le plus rapide d'ouvrir un fichier?
- 14. Le moyen le plus rapide pour convertir un fichier binaire en base de données SQLite
- 15. Quel est le moyen le plus rapide de fusionner les valeurs de cette structure Python en un seul dictionnaire?
- 16. Quel est le moyen le plus efficace de combiner plusieurs fichiers flash dans un seul film?
- 17. Quel est le moyen/script le plus rapide de dupliquer un projet de studio visuel?
- 18. Quel est le moyen le meilleur et le plus rapide pour écrire dans le fichier Excel en utilisant C#?
- 19. Quel est le moyen le plus simple/le plus rapide pour savoir quand une branche git a été créée?
- 20. moyen le plus rapide de trouver une chaîne en C#?
- 21. Quel est le moyen le plus rapide pour déterminer si un fichier adhère à l'implémentation NSCoding d'une classe particulière?
- 22. Le moyen le plus rapide pour supprimer un arbre de répertoires dans un fichier batch
- 23. Quel est le moyen le plus rapide de rafraîchir les algorithmes pour une interview technique (lundi)?
- 24. Quel est le moyen le plus rapide pour télécharger des fichiers sur Akamai?
- 25. Quel est le moyen le plus rapide pour supprimer les anciens enregistrements
- 26. Quel est le moyen le plus rapide de comparer deux tableaux pour l'égalité?
- 27. Dans ASP.NET, quel est le moyen le plus rapide d'obtenir l'URL de base pour une requête?
- 28. Quel est le moyen le plus rapide d'interroger une table MySQL pour de nouvelles lignes?
- 29. Quel est le moyen le plus rapide de valider un code postal existant sur l'iPhone?
- 30. Dans .Net, quel est le moyen le plus rapide pour trouver récursivement tous les fichiers d'un répertoire racine?
Si vous vous souciez vraiment du processus qui utilise le fichier, mieux vaut utiliser l'option '-m 1' pour grep afin d'obtenir la ligne correspondante au lieu du nom de fichier (stdin) dans lequel la correspondance a été trouvée. belle utilisation alternative de '-l'.) – Cascabel