Comment connaître l'offset d'un fichier ouvert?

26

Mon problème est qu'avec lsof -p pid je peux trouver la liste des fichiers ouverts d'un processus dont l'ID de processus est pid. Mais existe-t-il un moyen de connaître le décalage de fichier de chaque fichier consulté?

Veuillez me donner quelques suggestions?

Ta Thanh Dinh
la source

Réponses:

38

Sous Linux, vous pouvez trouver la position du numéro Nde descripteur de fichier du processus PIDdans /proc/$PID/fdinfo/$N. Exemple:

$ cat /proc/687705/fdinfo/36
pos:    26088
flags:  0100001

Le même fichier peut être ouvert plusieurs fois avec différentes positions à l'aide de plusieurs descripteurs de fichier, vous devrez donc choisir celui qui convient au cas où il y en aurait plusieurs. Utilisation:

$ readlink /proc/$PID/fd/$N

pour savoir quel est le fichier auquel le descripteur de fichier correspondant est attaché (il ne s'agit peut-être pas d'un fichier, dans ce cas le lien symbolique est suspendu).

Stéphane Gimenez
la source
1
Votre réponse est excellente.
Ta Thanh Dinh
12

lsofpeut le faire, avec l' -ooption.

Sous Linux, il obtient ses informations /proc, vous pouvez donc également les obtenir .

Gilles 'SO- arrête d'être méchant'
la source
Cela fait longtemps que je n'ai pas posé ma dernière question, et je ne suis pas ici depuis longtemps. Merci pour la réponse.
Ta Thanh Dinh
Je peux également confirmer que cela fonctionne. Le décalage est cependant donné en HEX.
Benjamin