Plusieurs commandes permettent de lister les fichiers ouverts par un processus.

Commande procfiles.

Cette commande AIX permet de lister les fichiers ouvert ppar un processus.

Pour chaque fichier, la commande retourne le Numéro d'inode et d'autres informations telles que la taille l'UID et le GID.

Voici ci-dessous un exemple avec un processus ayant pour ID 184422.

# procfiles 184422

184422 : /usr/sbin/hostmibd
  Current rlimit: 2147483647 file descriptors
   4: S_IFREG mode:0444 dev:10,5 ino:13407 uid:0 gid:0 rdev:0,0
      O_RDONLY size:4811

Nous remarquons ici que le processus a ouvert un fichier avec le descripteur 4.

Ce descripteur possède un numéro de Majeur/mineur de valeur "10,5" et un numéro d'inode de 13407.

La procédure suivante permet de retrouver ces objets:


# cd /dev
# ls -l | grep "10, *5"
brw-rw----   1 root     system       10,  5 Oct 10 2005  hd2
crw-rw----   1 root     system       10,  5 Oct 10 2005  rhd2

L'unité qui contient notre objet est donc, soit le FS /usr.

# lsfs | grep hd2
/dev/hd2        --         /usr           jfs2 3801088 yes no

Nous utilisons ensuite la commande 'istat' pour retrouver le fichier ayant comme descripteur '4' et comme inode 13407.


# istat 13407 /usr
Inode 13407 on device 10/5
File Protection: rw-r--r--
Owner: 2(bin)           Group: 2(bin)
Link count:   1         Length 4811 bytes
Last updated:   Tue Aug 24 16:14:48 CDT 2004
Last modified:  Mon Jul 12 11:33:31 CDT 2004
Last accessed:  Wed Aug  9 09:16:28 CDT 2006
Block pointers (hexadecimal): 1892c

Nous lançaons ensuite la commande 'find' pour trouver l'objet du FS /usr ayant pour inode le 13407.

# cd /usr
# find . -inum 13407 -exec ls -l {} \;
-rw-r--r--   1 bin      bin   4811 Jul 12 2004 ./lib/nls/msg/en_US/hostmibd.cat



Commande 'pstat'.

La commande 'pstat' permet aussi de lister les files ouvert par un processus.

Nous recherchons par exemple tous les fichiers ouvert par le démon 'cron'.


# ps -ef | grep cron
    root 323762      1   0   Oct 06      -  0:07 /usr/sbin/cron

Le PID du démon est 323762,soit 0x4F0B2 en héxadécimal.

# pstat -a | grep -i 4F0B2
SLT ST    PID   PPID   PGRP   UID  EUID  TCNT  NAME
 79 a   4f0b2      1  4f0b2     0     0     1  cron

Nous utilisons alors le numéro de slot pour afficher les informations du système de fichiers et de la table de description des fichiers.

Dans l'exemple ci-dessous, nous retrouvons donc 13 fichiers ouvert, numérotés de 0 à 12.


# pstat -u 79 | grep FILE
FILE SYSTEM STATE
FILE DESCRIPTOR TABLE

# pstat -u 79 | grep -p "FILE DESCRIPTOR TABLE"
FILE DESCRIPTOR TABLE
    *ufd: 0xf00000002ff49e20
    fd 0:  fp = 0xf1000714500080e0   flags = 0x0080  count = 0x0000
    fd 1:  fp = 0xf100071450007fa0   flags = 0x0080  count = 0x0000
    fd 2:  fp = 0xf100071450007fa0   flags = 0x0080  count = 0x0000
    fd 3:  fp = 0xf100071450007780   flags = 0x0080  count = 0x0000
    fd 4:  fp = 0xf100071450007af0   flags = 0x0080  count = 0x0000
    fd 5:  fp = 0xf1000714500079b0   flags = 0x0080  count = 0x0000
    fd 6:  fp = 0xf1000714500066a0   flags = 0x0080  count = 0x0000
    fd 7:  fp = 0xf100071450008270   flags = 0x0080  count = 0x0000
    fd 8:  fp = 0xf1000714500081d0   flags = 0x0080  count = 0x0000
    fd 9:  fp = 0xf100071450008220   flags = 0x0080  count = 0x0000
    fd 10:  fp = 0xf100071450008180   flags = 0x0080  count = 0x0000
    fd 11:  fp = 0xf1000714500082c0   flags = 0x0080  count = 0x0001
    fd 12:  fp = 0xf100071450008130   flags = 0x0081  count = 0x0000

lsof Command

La commande 'lsof' enfin est très utile pour la recherche de fichiers.

La commande ci-dessous affiche le nombre de fichiers détenus par le compte 'account'.

# lsof -u account | wc -l

# lsof -u account | grep pid | wc -l
ou
# lsof -p pid
Cette commande liste les fichiers détenus par le processus au PID 'pid'.

icon phone
Téléphone/Whatsapp : +33 (0)6 83 84 85 74
icon phone