PROC(5)

NOM
proc - Pseudo-système de fichiers d'informations sur les processus

DESCRIPTION
Le système de fichier proc est un pseudo-système de fichiers qui est utilisé comme interface avec les structures de données du noyau. Il est généralement monté sur /proc. La plupart des fichiers sont en lecture seule, mais quelques uns permettent la modification de variables du noyau.

La description suivante fournit un aperçu de la hiérarchie /proc.

/proc/[nombre]
    Il existe un sous-répertoire pour chaque processus en cours. Le sous-répertoire rend comme nom le PID du processus. Chaque sous-répertoire contient les pseudo-fichiers et pseudo-répertoires suivants.

/proc/[number]/auxv (depuis 2.6.0-test7)
    Celui-ci contient les informations de l'interpréteur ELF passées au processus au moment de l'exécution. Le format est un ID de type unsigned long plus une valeur de type unsigned long pour chaque entrée. La dernière entrée contient deux zéros.

/proc/[nombre]/cmdline
    Ce fichier contient la ligne de commande complète du processus, sauf si le processus est un zombie. Dans ce dernier cas, il n'y a rien dans le fichier : une lecture reviendra après avoir lu 0 caractère. Les arguments de la ligne de commande apparaîssent comme un ensemble de chaînes séparées de caractères NUL, avec un octet NUL supplémentaire après le dernier argument.

/proc/[number]/coredump_filter (depuis le noyau 2.6.23)
    Voir core(5).

/proc/[nombre]/cpuset (depuis le noyau 2.6.12)
    Voir cpuset(7).

/proc/[nombre]/cwd (Current Working Directory)
    Il s'agit d'un lien symbolique sur le répertoire de travail courant du processus. Pour obtenir le répertoire de travail courant du processus 20 par exemple, vous pouvez-faire ceci :
    cd /proc/20/cwd; /bin/pwd
    Notez que la commande directe pwd est souvent une commande interne du shell, et qu'elle risque de ne pas fonctionner correctement. Avec bash(1), utilisez pwd -P. Dans un processus multithread, le contenu de ce lien symbolique n'est plus disponible si le thread principal est déjà terminé (typiquement en appelant pthread_exit(3)).

/proc/[nombre]/environ
    Ce fichier contient l'environnement du processus. Les entrées sont séparées par des octets nuls (« \0 »), et il devrait y en avoir un à la fin du fichier. Ainsi, pour afficher l'environnement du processus numéro 1, utilisez :
    (cat /proc/1/environ; echo) | tr "\000" "\n"
    (Pour savoir à quoi cela peut bien servir, voyez lilo(8) ou grub(8).)

/proc/[nombre]/exe
    Sous Linux 2.2 et 2.4, ce fichier est un lien symbolique représentant le chemin réel de la commande en cours d'exécution. Ce lien symbolique peut être déréférencé normalement ; tenter de l'ouvrir fera que l'on ouvrira le fichier exécutable. Vous pouvez même taper /proc/[pid]/exe pour lancer une copie du même processus que celui du pid indiqué. Dans un processus multithread, le contenu de ce lien symbolique n'est plus disponible si le thread principal est déjà terminé (typiquement en appelant pthread_exit(3)). Sous Linux 2.0 et antérieurs, /proc/[nombre]/exe était un pointeur sur le fichier binaire exécuté, qui apparaîssait sous forme de lien symbolique. Un appel système readlink(2) sur ce fichier renvoyait une chaîne de la forme :
        [périphérique]:inœud Par exemple, [0301]:1502 correspond à l'inœud 1502 sur le périphérique de numéro majeur 03 (disque IDE, MFM, etc.) et mineur 01 (première partition du premier disque). On peut utiliser find(1) avec l'option -inum pour retrouver le fichier exécutable à partir du numéro d'inœud.

/proc/[nombre]/fd
    Il s'agit d'un sous-répertoire contenant une entrée pour chaque fichier que le processus a ouvert. Chaque entrée a le descripteur du fichier pour nom, et est représentée par un lien symbolique sur le vrai fichier. Ainsi, 0 correspond à l'entrée standard, 1 à la sortie standard, 2 à la sortie d'erreur, etc... Dans un processus multithread, le contenu de ce lien symbolique n'est plus disponible si le thread principal est déjà terminé (typiquement en appelant pthread_exit(3)). Les programmes qui prennent un nom de fichier comme argument de la ligne de commande mais qui ne lisent pas l'entrée standard si aucun argument n'est fourni, ou qui écrivent dans un fichier indiqué en tant qu'argument de la ligne de commande sans écrire sur la sortie standard si aucun argument n'est fourni, peuvent néanmoins utiliser l'entrée standard et la sortie standard par l'intermédiaire de /proc/[nombre]/fd. Par exemple, en supposant que l'option -e indique le nom du fichier d'entrée et l'option -s le nom du fichier de sortie :
    foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...
    Ceci transforme le programme en filtre. /proc/self/fd/N est approximativement la même chose que /dev/fd/N dans certains systèmes UNIX et pseudo-UNIX. D'ailleurs la plupart des scripts MAKEDEV de Linux lient symboliquement /dev/fd sur [..]/proc/self/fd. la plupart des systèmes fournissent les liens symboliques /dev/stdin, /dev/stdout et /dev/stderr, qui sont respectivement liés aux fichiers 0, 1 et 2 de /proc/self/fd. Par conséquent, l'exemple précédent peut être écrit de la façon suivante :
    foobar -e /dev/stdin -s /dev/stdout ...

/proc/[nombre]/fdinfo/ (depuis le noyau 2.6.22)
    Il s'agit d'un sous-répertoire contenant une entrée pour chaque fichier ouvert par le processus, nommé par son descripteur de fichier. Le contenu de chaque fichier peut être lu afin d'obtenir des informations sur le descripteur de fichier correspondant, par exemple :
    $ cat /proc/12015/fdinfo/4
    pos:    1000
    flags:  01002002
    Le champ pos est un nombre décimal indiquant la position de la tête de lecture. Le champ flags est un nombre octal indiquant les mode d'accès au fichier ainsi que ces attributs d'état (voir Les fichiers de ce répertoire ne sont accessibles en lecture que par le propriétaire du processus.

/proc/[nombre]/limits (depuis le noyau 2.6.24)
    Ce fichier indique les limites souple et stricte ainsi que les unités de mesure de chaque limite de ressources du processus (voir getrlimit(2)). Le fichier est protégé de telle sorte que seul l'UID réel du processus puisse le lire.

/proc/[nombre]/maps
    Un fichier contenant les régions mémoire actuellement projetées et leurs autorisations d'accès. Le format est :
    adresses          perm. décalage périph inœud  chemin d'accès
    08048000-08056000 r-xp 00000000 03:0c 64593      /usr/sbin/gpm
    08056000-08058000 rw-p 0000d000 03:0c 64593      /usr/sbin/gpm
    08058000-0805b000 rwxp 00000000 00:00 0
    40000000-40013000 r_-xp 00000000 03:0c 4165       /lib/ld-2.2.4.so
    40013000-40015000 rw-p 00012000 03:0c 4165       /lib/ld-2.2.4.so
    4001f000-40135000 r-xp 00000000 03:0c 45494      /lib/libc-2.2.4.so
    40135000-4013e000 rw-p 00115000 03:0c 45494      /lib/libc-2.2.4.so
    4013e000-40142000 rw-p 00000000 00:00 0
    bffff000-c0000000 rwxp 00000000 00:00 0
    Où « adresses » correspond à l'espace d'adressage du processus qui l'occupe, « perm » est un ensemble d'autorisations :
    r = lecture
    w = écriture
    x = exécution
    s = partage
    p = privé (copie si écriture)
    Le « décalage » se mesure dans le fichier, « périph » correspond à la paire (majeur:mineur), et l'« inœud se trouve sur ce périphérique. 0 signifie qu'aucun inœud n'est associé avec cette zone mémoire, comme c'est le cas avec bss. Sous Linux 2.0, il n'y a pas de champ indiquant le chemin d'accès.

/proc/[nombre]/mem
    Ce fichier peut être utilisé pour accéder à la mémoire d'un processus, au travers des appels open(2), read(2), et lseek(2).

/proc/[nombre]/mountinfo (depuis Linux 2.6.26)
    Ce fichier contient des informations relatives aux points de montage. Il contient des lignes de la forme :
    36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
    (1)(2)(3)   (4)   (5)      (6)      (7)   (8) (9)   (10)         (11)

    Les nombres entre paranthèses sont des étiquettes pour les descriptions plus loin :

    (1) mount ID : identifiant unique du montage (peut être réutilisé après un umount(2)).

    (2) parent ID : identifiant du montage parent (ou de lui-même pour le sommet de la hierarchie).

    (3) major:minor: valeur de st_dev pour les fichiers sur le système de fichiers (voir stat(2)).

    (4) root: racine du montage dans le système de fichiers.

    (5) mount point: point de montage relatif à la racine du processus.

    (6) mount options: options par montage.

    (7) optional fields: zéro ou plusieurs champs de la forme « tag[:value] ».

    (8) separator: indique la fin des champs optionnels.

    (9) file system type: nom du système de fichiers de la forme « type[.subtype] ».

    (10)
        mount source: informations spécifiques au système de fichier ou « none ».

    (11)
        super options: options par super bloc.

    Les outils d'analyse devraient ignorer les champs optionnels non reconnus. les champs optionnels actuellement disponibles sont :

    shared:X
        le montage est partagé par le groupe pair X

    master:X
        le montage est exclave pour le groupe pair X

    propagate_from:X
        le montage est esclave et reçoit des propagations provenant du groupe pair X (*)

    unbindable
        mount is unbindable

    (*) X is the closest dominant peer group under the process's root. If X is the immediate master of the mount, or if there is no dominant peer group under the same root, then only the "master:X" field is present and not the "propagate_from:X" field. Pour plus d'informations sur les propagations de montage, voir Documentation/filesystems/sharedsubtree.txt dans l'arborescence des sources du noyau.

/proc/[nombre]/mountstats (depuis Linux 2.6.17)
    Ce système de fichiers exporte des informations (statistiques, configuration) relatives aux points de montage dans l'espace de noms du processus. Les lignes de ce fichier sont de la forme :
    device /dev/sda7 mounted on /home with fstype ext3 [statistics]
    (       1      )            ( 2 )             (3 ) (4)

    Les champs de chaque ligne sont :

    (1) Le nom du périphérique monté (ou « nodevice » s'il n'y a pas de périphérique correspondant).

    (2) Le point de montage dans l'arborescence du système de fichiers.

    (3) Le type du système de fichiers.

    (4) Statistiques optionnelles et informations de configuration. Actuellement (Linux_ 2.6.26), seuls les systèmes de fichiers NFS exportent des informations à travers ce champ.

    Ce fichier n'est accessible en lecture que par le propriétaire du processus.

/proc/[number]/oom_adj (depuis Linux 2.6.11)
    Ce fichier est utilisé pour ajuster la notation utilisée pour sélectionner le processus qui sera tué dans une situation de mémoire saturée. Le noyau utilise cette valeur pour une opération de décalage sur la valeur oom_score du processus : les valeurs valides sont dans l'intervalle de -16 à +15 plus la valeur spéciale -17, qui désactive complèment la mise à mort sur mémoire saturée du processus. Une notation négative diminue la probabilité. la valeur par défaut de ce fichier est 0 ; un nouveau processus hérite de la valeur oom_adj de son père. Un processus doit être privilégié (CAP_SYS_RESOURCE) pour mettre à jour ce fichier.

/proc/[number]/oom_score (depuis Linux 2.6.11)
    Ce fichier indique la notation actuelle donnée par le noyau pour sélectionner un processus pour une mise à mort sur mémoire saturée. Une notation élevée signifie que le processus a plus de chance d'être sélectionné pour une mise à mort sur mémoire saturée. La base de cette notation est la quantité de mémoire utilisée par le processus. Cette notation peut augmenter (+) ou diminuer (-) en fonction des facteurs suivants :

    *   le processus crée beaucoup d'enfants avec fork(2) (+) ;

    *   le processus s'exécute depuis longtemps ou a consommé beaucoup de temps processeur (-) ;

    *   le processeur a une faible valeur de courtoisie (c'est-à-dire positive) (+) ;

    *   le processus est privilégié (_-) ; et

    *   le processus effectue des accès matériels directs (-).

    oom_score reflète également l'ajustement de décalage de bit du processus indiqué dans oom_adj.

/proc/[nombre]/root
    Linux, et Unix en général, supporte une notion de racine du système de fichiers pour chaque processus, configurable avec l'appel système chroot(2). Ce fichier est un lien symbolique qui pointe sur le répertoire racine du processus, et se comporte comme exe, fd/*... Dans un processus multithread, le contenu de ce lien symbolique n'est plus disponible si le thread principal est déjà terminé (typiquement en appelant pthread_exit(3)).

/proc/[nombre]/smaps (depuis Linux 2.6.14)
    Ce fichier montre la consommation mémoire pour chacune des projections de processus. Pour chaque projection, il y a une série de lignes du style :
    08048000-080bc000 r-xp 00000000 03:02 13130      /bin/bash
    Size:               464 kB
    Rss:                424 kB
    Shared_Clean:       424 kB
    Shared_Dirty:         0 kB
    Private_Clean:        0 kB
    Private_Dirty:        0 kB
    La première de ces lignes montre la même information que celle affichée pour la projection dans /proc/[nombre]/maps. Les autres lignes montre la taille de la projection, la quantité de projection qui réside actuellement en RAM, le nombre de pages partagées « propres » et « sales » dans la projection et le nombre de pages privées « propres » et « sales » dans la projection. Ce fichier n'est présent que si l'option de configuration du noyau CONFIG_MMU est activée.

/proc/[nombre]/stat
    Informations sur l'état du processus. Ceci est utilisé par ps(1). La définition se trouve dans /usr/src/linux/fs/proc/array.c. Les champs sont, dans l'ordre, et avec leurs formats de type scanf(3) :

    pid %d
        L'ID du processus

    comm %s
        Le nom du fichier exécutable entre parenthèses, que l'exécutable soit swappé ou non.

    state %c
        Un caractère parmi « RSDZTW » indiquant si le processus est en cours d'exécution (R running), endormi dans un état interruptible (S sleeping), endormi de manière ininterruptible (D), zombie (Z), suivi pour débogage ou arrêté par un signal (T traced) ou swappé (W).

    ppid %d
        Le PID du processus parent.

    pgrp %d
        L'ID du groupe de processus.

    session %d
        L'ID de session du processus.

    tty_nr %d
        Le terminal de contrôle du processus. (Le numéro mineur de périphérique dans la combinaison des bits 31 à 20 et 7 à 0 ; le numéro majeur est dans les bits 15 à 8.)

    tpgid %d
        L'identifiant du groupe de processus d'arrière-plan du terminal de contrôle du processus.

    flags %u (%lu avant Linux 2.6.22)
        Le mot attribut noyau du processus. Pour en savoir plus, voir les définitions PF_* dans <linux/sched.h>. Les détails dépendent de la version du noyau.

    minflt %lu
        Le nombre de fautes mineures que le processus a déclenchées — celles qui n'ont pas nécessité de chargement de page depuis le disque.

    cminflt %lu
        Le nombre de fautes mineures commises par le processus et ses descendants.

    majflt %lu
        Le nombre de fautes majeures que le processus a déclenchées — celles qui ont nécessité un chargement de page depuis le disque.

    cmajflt %lu
        Le nombre de fautes majeures commises par le processus et ses descendants.

    utime %ld
        Le temps passé en mode utilisateur par le processus, mesuré en tops d'horloge (divisé par sysconf(_SC_CLK_TCK). Cela inclut le temps d'invité, guest_time (temps passé à exécuter un processeur virtuel, voir plus loin), de sorte que les applications qui ne sont pas au courant du champ « temps d'invité » ne perdent pas d'information temps dans leurs calculs.

    stime %ld
        Le temps passé en mode noyau par le processus, mesuré en tops d'horloge (divisé par sysconf(_SC_CLK_TCK).

    cutime %ld
        Le temps passé en mode utilisateur par le processus et ses descendants, mesuré en tops d'horloge (divisé par sysconf(_SC_CLK_TCK). Voir aussi times(2).) Cela inclut le temps d'invité, cguest_time (temps passé à exécuter un processeur virtuel, voir plus loin),

    cstime %ld
        Le temps passé en mode noyau par le processus et ses descendants, mesuré en tops d'horloge (divisé par sysconf(_SC_CLK_TCK).

    priority %ld
        (Explications pour Linux 2.6) Pour les processus s'exécutant sous une politique d'ordonnacement temps réel (policy plus loin ; voir sched_setscheduler(2)), il s'agit de la valeur négative de la politique d'ordonnancement, moins un ; c'est-à-dire un nombre dans l'intervalle -2 à -100, correspondant aux priorités temps réel 1 à 99. Pour les processus s'exécutant sous une politique d'ordonnacement qui ne soit pas temps réel, il s'agit de la valeur brute de courtoisie (setpriority(2)) comme représentée dans le noyau. Le noyau enregistre les valeurs de courtoisie sous forme de nombre de l'intervalle 0 (haute) à 39 (faible), correspondant à un intervalle de courtoisie visible par l'utilisateur de -20 à 19. Avant Linux 2.6, c'était une valeur d'échelle basée sur la pondération de l'ordonnanceur fournie au processus.

    nice %ld
        La valeur de courtoisie (voir setpriority(2)), une valeur dans l'intervalle 19 (faible priorité) à -19 (haute priorité).

    num_threads %ld
        Nombre de threads dans ce processus (depuis Linux 2.6). Avant le noyau 2.6, ce champ avait une valeur zéro codée en dur pour remplacer un champ supprimé.

    itrealvalue %lu
        La durée (en nombre de jiffies) avant le prochain signal SIGALRM envoyé au processus par un timer. depuis Linux 2.6.17, ce champ n'est plus maintenu et a une valeur de zéro codée en dur.

    starttime %ld
        Temps (en jiffies) auquel le processus a démarré depuis le boot du système.

    vsize %llu (était %lu avant Linux 2.6)
        Taille de la mémoire virtuelle en octets.

    rss %lu
        RSS. Taille de l'ensemble résident : nombre de pages dont le processus dispose en mémoire réelle. Il s'agit juste des pages contenant les espaces de code, donnée et pile. Ceci n'inclut ni les pages en attente de chargement ni celles qui ont été swappées.

    rsslim %lu
        Limite souple actuelle en octets du RSS du processus ; voir la description de RLIMIT_RSS dans getpriority(2).

    startcode %lu
        Adresse au-dessus de laquelle le code du programme peut s'exécuter.

    endcode %lu
        Adresse en-dessous de laquelle le code du programme peut s'exécuter.

    startstack %lu
        Adresse de début (c'est-à-dire le bas) de la pile.

    kstkesp %lu
        Valeur actuelle du pointeur de pile 32 bits ESP, telle qu'on la trouve dans la page de pile du noyau pour ce processus.

    kstkeip %lu
        EIP actuel (Pointeur d'instructions 32 bits).

    signal %ld
        Masque des signaux en attente, affiché sous forme d'un nombre décimal. Obsolète car il ne fournit pas d'informations sur les signaux temps réel ; utilisez plutôt /proc/[nombre]/status.

    blocked %ld
        Masque des signaux bloqués, affiché sous forme d'un nombre décimal. Obsolète car il ne fournit pas d'informations sur les signaux temps réel ; utilisez plutôt /proc/[nombre]/status.

    sigignore %ld
        Masque des signaux ignorés, affiché sous forme d'un nombre décimal. Obsolète car il ne fournit pas d'informations sur les signaux temps réel ; utilisez plutôt /proc/[nombre]/status.

    sigcatch %ld
        Masque des signaux interceptés, affiché sous forme d'un nombre décimal. Obsolète car il ne fournit pas d'informations sur les signaux temps réel ; utilisez plutôt /proc/[nombre]/status.

    wchan %lu
        Il s'agit du « canal » sur lequel le processus attend. C'est l'adresse d'un appel système, dont on peut retrouver le nom dans une table si besoin (il faut avoir un fichier /etc/psdatabase à jour, et essayer ps -l pour voir le champ WCHAN).

    nswap %lu
        Nombre de pages swappées (non maintenu).

    cnswap %lu
        Champ nswap cumulé avec les processus enfants (non maintenu).

    exit_signal %d (depuis Linux 2.1.22)
        Signal à envoyer au parent lors de la mort du processus.

    processor %d (depuis Linux 2.2.8)
        Numéro du processeur utilisé lors de la dernière exécution.

    rt_priority %u (depuis Linux 2.5.19 ; était %lu avant Linux 2.6.22)
        Priorité d'ordonnancement temps réel, un nombre dans l'intervalle 1 à 99 pour les processus ordonnancés sous une politique temps réel, ou 0 pour les processus non temps réel (voir sched_setscheduler(2)).

    policy %u (depuis Linux 2.5.19 ; était %lu avant Linux 2.6.22)
        Politique d'ordonnancement (voir sched_setscheduler(2)). Décoder avec les constantes SCHED_* de linux/sched.h.

    delayacct_blkio_ticks %llu (depuis Linux 2.6.18)
        Retard d'E/S des blocs agglomérés, mesuré en ticks d'horloge (centièmes de secondes).

    guest_time %lu (depuis Linux 2.6.24)
        Temps d'invité du processus (temps passé à exécuter un processeur virtuel pour un système d'exploitation invité), mesuré en tops d'horloge (divisé par sysconf(_SC_CLK_TCK).

    cguest_time %ld (depuis Linux 2.6.24)
        Temps d'invité des fils du processus, mesuré en tops d'horloge (divisé par sysconf(_SC_CLK_TCK).

/proc/[nombre]/statm
    Fournit des informations sur l'utilisation de la mémoire, mesurées en pages. Les colonnes sont :
    size       taille totale du programme
               (comme pour VmSize dans /proc/[nombre]/status)
    resident   taille résidant en mémoire
               (comme pour VmRSS dans /proc/[number]/status)
    share      pages partagées (des projections partagées)
    text       taille du code (segment text)
    lib        bibliothèques (inutilisé dans Linux 2.6)
    data       données et pile
    dt         pages touchées (marquées dirty)

/proc/[nombre]/status
    Fournit l'essentiel des informations de /proc/[nombre]/stat et /proc/[nombre]/statm dans un format plus facile à lire pour les humains. Voici un exemple :
    $ cat /proc/$$/status
    Name:   bash
    State:  S (sleeping)
    Tgid:   3515
    Pid:    3515
    PPid:   3452
    TracerPid:      0
    Uid:    1000    1000    1000    1000
    Gid:    100     100     100     100
    FDSize: 256
    Groups: 16 33 100
    VmPeak:     9136 kB
    VmSize:     7896 kB
    VmLck:         0 kB
    VmHWM:      7572 kB
    VmRSS:      6316 kB
    VmData:     5224 kB
    VmStk:        88 kB
    VmExe:       572 kB
    VmLib:      1708 kB
    VmPTE:        20 kB
    Threads:        1
    SigQ:   0/3067
    SigPnd: 0000000000000000
    ShdPnd: 0000000000000000
    SigBlk: 0000000000010000
    SigIgn: 0000000000384004
    SigCgt: 000000004b813efb
    CapInh: 0000000000000000
    CapPrm: 0000000000000000
    CapEff: 0000000000000000
    CapBnd: ffffffffffffffff
    Cpus_allowed:   00000001
    Cpus_allowed_list:      0
    Mems_allowed:   1
    Mems_allowed_list:      0
    voluntary_ctxt_switches:        150
    nonvoluntary_ctxt_switches:     545

    Les champs sont les suivants :

    *   Name: Commande lancée par ce processus.

    *   State: État actuel du processus parmi les valeurs : « R (running) », « S (sleeping) », « D (disk sleep) », « T (stopped) », « T (tracing stop) », « Z (zombie) » ou « X (dead) ».

    *   Tgid : Identifiant du groupe de threads (c'est-à-dire, identifiant du processus PID).

    *   Pid : Identifiant de thread (voir gettid(2)).

    *   TracerPid : PID du processus traçant ce processus (0 s'il n'est pas traçé).

    *   Uid, Gid : UID (et GID) réel, effectif, sauvé et de système de fichiers.

    *   FDSize : Nombre d'entrées de descripteurs de fichier actuellement alloués.

    *   Groups : Liste des groupes supplémentaires.

    *   VmPeak : Taille de pointe de mémoire virtuelle.

    *   VmSize : Taille de mémoire virtuelle.

    *   VmLck : Taille de mémoire verrouillée.

    *   VmHWM : Peak resident set size ("high water mark").

    *   VmRSS : Resident set size.

    *   VmData, VmStk, VmExe : Taille des données, pile et segments de texte.

    *   VmLib : Taille du code de bibliothèque partagée.

    *   VmPTE : Taille des entrées de table de page (depuis Linux 2.6.10).

    *   Threads : Nombre de threads dans le processus contenant ce thread.

    *   SigPnd, ShdPnd : Nombre de signaux en attente du thread et du processus, dans son ensemble (voir pthreads(7) et signal(7)).

    *   SigBlk, SigIgn, SigCgt : Masks indiquant les signaux bloqués, ignorés et interceptés (voir signal(7)).

    *   CapInh, CapPrm, CapEff : Masques des capacités actives dans les ensembles transmissibles, permis et effectifs (voir capabilities(7)).

    *   CapBnd : Capability Bounding set (depuis le noyau 2.6.26, voir capabilities(7)).

    *   Cpus_allowed : Masque des processeurs sur lesquels le processus peut s'exécuter (depuis Linux 2.6.24, voir cpuset(7)).

    *   Cpus_allowed_list : Pareil que précédemment, mais au format liste (depuis Linux 2.6.26, voir cpuset(7)).

    *   Mems_allowed : Masque des nœuds mémoire autorisés pour ce processus (depuis Linux 2.6.24, voir cpuset(7)).

    *   Mems_allowed_list : Pareil que précédemment, mais au format liste (depuis Linux 2.6.26, voir cpuset(7)).

    *   voluntary_context_switches, nonvoluntary_context_switches : Nombre de basculement de contexte, volontaire ou non (depuis Linux 2.6.23).

/proc/[nombre]/task (depuis Linux 2.6.0-test6)
    C'est un répertoire qui contient un sous-répertoire pour chaque thread du processus. Le nom de chaque sous-répertoire est la valeur numérique du TID du thread (voir gettid(2)). Dans chacun de ces sous-répertoires, il y a un ensemble de fichiers avec le même nom et contenu que dans les répertoires /proc/[nombre]. Pour les attributs qui sont partagés par tous les threads, le contenu de chacun des fichiers des sous-répertoires task/[thread-ID] sera le même que le fichier correspondant dans le répertoire parent /proc/[nombre] (par exemple, dans un processus multithread, tous les fichiers task/[thread-ID]/cwd auront la même valeur que le fichier /proc/[nombre]/cwd dans le répertoire parent, puisque tous les threads d'un processus partagent un répertoire de travail). Pour les attributs qui sont différents pour chaque thread, les fichiers correspondant dans task/[thread-ID] peuvent avoir des valeurs différentes (par exemple, les divers champs dans chacun des fichiers task/[thread-ID]/status peuvent être différent pour chaque thread). Dans un processus multithread, le contenu du répertoire /proc/[nombre]/task n'est plus disponible si le thread principal est déjà terminé (typiquement en appelant pthread_exit(3)).

/proc/apm
    La version du système de gestion de puissance APM et les informations sur l'état de la batterie si la constante CONFIG_APM était définie à la compilation du noyau.

/proc/bus
    Contient des sous-répertoires pour les bus installés.

/proc/bus/pccard
    Répertoire pour les périphériques PCMCIA si la constante CONFIG_PCMCIA était définie à la compilation du noyau.

/proc/bus/pccard/drivers

/proc/bus/pci
    Contient divers sous-répertoires de bus, et des pseudo-fichiers recélant des informations sur les bus PCI, les périphériques installés et leurs pilotes. Certains de ces fichiers ne sont pas en ASCII pur.

/proc/bus/pci/devices
    Informations sur les périphériques pci. Peut-être consulté grâce à lspci(8) et setpci(8).

/proc/cmdline
    Arguments passés au noyau Linux lors du boot. Généralement par l'intermédiaire d'un gestionnaire de démarrage comme lilo(8) ou grub(8).

/proc/cpuinfo
    Il s'agit d'informations dépendantes de l'architecture et du processeur utilisé. Les deux seules entrées toujours présentes sont processor qui donne le nombre de processeurs et bogomips, une constante système calculée pendant l'initialisation du noyau. Les machines SMP ont une ligne d'information pour chaque processeur.

/proc/devices
    Liste littérale des groupes de périphériques et des numéros majeurs. Ceci peut servir dans les scripts MAKEDEV pour rester cohérent avec le noyau.

/proc/diskstats (depuis Linux 2.5.69)
    Ce fichier contient les statistiques d'entrées-sorties du disque pour chaque périphérique disque. Voir le fichier fourni avec les sources du noyau Documentation/iostats.txt pour plus d'information.

/proc/dma
    Il s'agit d'une liste des canaux DMA (Direct Memory Acess) ISA en cours d'utilisation.

/proc/driver
    Répertoire vide.

/proc/execdomains
    Liste des domaines d'exécution (personnalités).

/proc/fb
    Information sur la mémoire d'écran Frame Buffer, lorsque la constante CONFIG_FB a été définie lors de la compilation du noyau.

/proc/filesystems
    Une liste des systèmes de fichiers qui sont pris en charge par le noyau, à savoir des systèmes de fichiers qui ont été compilé dans le noyau ou dont les modules du noyau sont actuellement chargés. (Voir aussi filesystems(5).) Si un système de fichiers est marqué « nodev », cela signifie qu'il n'a pas besoin qu'un périphérique de blocs soit monté (par exemple, système de fichier virtuel, système de fichier réseau). Par incidence, ce fichier peut être utilisé par mount(8) lorsqu'aucun système de fichiers n'est spécifié et qu'il n'a pas réussi à déterminer le système de fichier. Ensuite, il essaye les systèmes de fichiers présents dans ce fichier (excepté ceux marqués « nodev »). Par exemple, ceci sert à mount(8) pour essayer les différents systèmes de fichiers si on ne lui précise rien.

/proc/fs
    Sous-répertoire vide.

/proc/ide
    Le répertoire /proc/ide existe sur les systèmes ayant un bus IDE. Il y a des sous-répertoires pour chaque canal IDE et les périphériques attachés. Les fichiers contiennent :
    cache              taille du tampon en ko
    capacity           nombre de secteurs
    driver             version du pilote
    geometry           géométries physique et logique
    identify           identification en hexadécimal
    media              type de support
    model              numéro de fabricant
    settings           configuration du pilote
    smart_thresholds   seuils en hexadécimal
    smart_values       paramètres in hexadécimal
    L'utilitaire hdparm(8) fournit un accès convivial à ces informations.

/proc/interrupts
    Il s'agit du nombre d'interruptions reçues pour chaque IRQ sur les architectures i386 (au moins). Format facile à lire, en ASCII.

/proc/iomem
    Projection des entrées-sorties en mémoire, depuis Linux 2.4.

/proc/ioports
    Il s'agit d'une liste des régions d'entrées-sorties en cours d'utilisation.

/proc/kallsyms (depuis Linux 2.5.71)
    Ce fichier contient les symboles exportés par le noyau et utilisés par les outils des modules(X) pour assurer l'édition dynamique des liens des modules chargeables. Sous Linux 2.5.47 et antérieurs, un fichier similaire avec une syntaxe légèrement différente s'appelait ksyms.

/proc/kcore
    Ce fichier représente la mémoire physique du système sous forme de fichier ELF core. À l'aide de ce pseudo-fichier et d'un binaire du noyau non stripé (/usr/src/linux/vmlinux), gdb(1) peut servir à inspecter l'état de n'importe quelle structure de données du noyau. La longueur totale de ce fichier est la taille de la mémoire RAM physique plus 4 Ko.

/proc/kmsg
    Ce fichier peut être utilisé à la place de l'appel système syslog(2) pour journaliser les messages du noyau. Un processus doit avoir les privilèges superutilisateur pour lire ce fichier, et un seul processus à la fois peut le lire. On NE DOIT PAS lire ce fichier si un processus syslogd tourne et utilise l'appel système syslog(2) pour journaliser les messages du noyau. Les informations de ce fichier sont consultés par le programme dmesg(8).

/proc/ksyms  (Linux 1.1.23-2.5.47)
    Voir /proc/kallsyms.

/proc/loadavg
    Les trois premiers champs de ce fichier sont les charges système indiquant le nombre de tâches dans la file d'attente d'exécution (état R) ou en attente d'entrées-sorties disque (état D) moyennées sur 1, 5, et 15 minutes. Il s'agit des informations fournies, par exemple, par le programme uptime(1). Le quatrième champ consiste en deux nombres séparés par une barre oblique « / ». Le premier de ces nombres est le nombre d'entitées noyau ordonnancées en cours d'exécution (processus, threads) ; il doit être inférieur ou égal au nombre de CPU. La valeur après la barre oblique est le nombre d'entitées noyau ordonnancées existant actuellement sur le système. Le cinquième champ est le PID du dernier processus créé sur le système.

/proc/locks
    Ce fichier montre les verrouillages actuels des fichiers. (flock(2) et fcntl(2)).

/proc/malloc (seulement jusqu'à Linux 2.2 inclus)
    Ce fichier n'est présent que si CONFIG_DEBUG_MALLOC a été définie lors de la compilation du noyau.

/proc/meminfo
    Sert au programme free(1) pour indiquer les quantités de mémoires (physique et swap) libres et utilisées, ainsi que la mémoire partagée et les tampons utilisés par le noyau. Ce fichier se présente sous la même forme que free(1) mais en octets et non pas en Ko.

/proc/mounts
    Il s'agit d'une liste de tous les systèmes de fichiers actuellement montés sur le système. Le format de ce fichier est documenté dans fstab(5). Depuis la version 2.6.15 du noyau, ce fichier est « pollable » : après l'ouverture du fichier en lecture, une modification dans ce fichier (c'est-à-dire un montage ou démontage du système de fichier) fera que select(2) marquera le descripteur de fichier comme lisible, et poll(2) et epoll_wait(2) marqueront le fichier comme ayant une condition d'erreur.

/proc/modules
    Une liste littérale des modules qui ont été chargés par le système. Voir lsmod(8).

/proc/mtrr
    Memory Type Range Registers. Voir /usr/src/linux/Documentation/mtrr.txt pour des détails.

/proc/net
    Ce répertoire regroupe divers pseudo-fichiers relatifs aux fonctionnalités réseau. Chaque fichier fournit des informations concernant une couche particulière. Ces fichiers sont en ASCII et sont donc lisible grâce à cat(1), mais le programme standard netstat(8) fournit un accès plus propre à ces données.

/proc/net/arp
    Ce fichier contient un affichage ASCII lisible des tables ARP du noyau servant à la résolution d'adresse. Il indique à la fois les entrées apprises dynamiquement et celles pré-programmées. Le format est le suivant :
    Adresse IP    Matériel  Attribut   Adresse matérielle Masque  Périph.
    192.168.0.50   0x1       0x2       00:50:BF:25:68:F3   *      eth0
    192.168.0.250  0x1       0xc       00:00:00:00:00:00   *      eth0

Où l'adresse IPv4 est celle de la machine, le type de matériel est issu de la RFC 826. L'attribut est le champ arp_flags interne de la structure ARP (définie dans </usr/include/linux/if_arp.h>) et l'adresse matérielle est celle de la couche physique de l'adaptateur correspondant à l'adresse IP (si elle est connue).

/proc/net/dev
    Ce pseudo-fichier contient des informations d'état sur les périphériques réseau. On y trouve les nombres de paquets émis et reçus, le nombre d'erreurs et de collisions, ainsi que d'autres données statistiques. Ce fichier est utilisé par le programme ifconfig(8). Le format est le suivant :
    Inter-|   Receive                                                |  Transmit
     face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
        lo: 2776770   11307    0    0    0     0          0         0  2776770   11307    0    0    0     0       0          0
      eth0: 1215645    2751    0    0    0     0          0         0  1782404    4324    0    0    0   427       0          0
      ppp0: 1622270    5552    1    0    0     0          0         0   354130    5669    0    0    0     0       0          0
      tap0:    7714      81    0    0    0     0          0         0     7714      81    0    0    0     0       0          0

/proc/net/dev_mcast
    Définie dans /usr/src/linux/net/core/dev_mcast.c :
    indx ifterface_name  dmi_u dmi_g dmi_address
    2    eth0            1     0     01005e000001
    3    eth1            1     0     01005e000001
    4    eth2            1     0     01005e000001

/proc/net/igmp
    Protocole Internet Group Management Protocol. Défini dans /usr/src/linux/net/core/igmp.c.

/proc/net/rarp
    Ce fichier emploie le même format que le fichier arp, et contient la projection inverse de la base de données utilisée pour fournir les services de recherche inversée de rarp(8). Si RARP n'est pas configuré dans le noyau, ce fichier est absent.

/proc/net/raw
    Fournit une copie de la table des sockets RAW (brutes). La plupart des informations ne sert que pour le débogage. La valeur « sl » est l'emplacement de la socket dans la table de hachage du noyau. Le champ « local_address » contient l'adresse locale ainsi que le numéro du protocole utilisé. « St » est l'état interne de la socket. Les « tx_queue » et « rx_queue » représentent les files d'attente en émission et en réception, en terme d'utilisation mémoire par le noyau. Les champs « tr », « tr->when » et « rexmits » ne sont pas utilisés par RAW. Le champ « uid » contient l'identificateur EUID du créateur de la socket.

/proc/net/snmp
    Ce fichier contient les données ASCII nécessaires pour les bases d'information d'un agent SNMP pour la gestion de IP, ICMP, TCP et UDP.

/proc/net/tcp
    Contient une copie de la table des socket TCP. La plupart des informations ne sert que pour le débogage. La valeur « sl » est l'emplacement de la socket dans la table de hachage du noyau. Le champ « local_address » contient l'adresse locale ainsi que le numéro de port. Le champ « remote_address » contient l'adresse distante et le numéro de port (si la socket est connectée). « St » est l'état interne de la socket. Les « tx_queue » et « rx_queue » représentent les files d'attente en émission et en réception, en terme d'utilisation mémoire par le noyau. Les champs « tr », « tr->when » et « rexmits » contiennent des données internes au noyau ne servant qu'au débogage. Le champ « uid » contient l'identificateur EUID du créateur de la socket.

/proc/net/udp
    Contient une copie de la table des socket UDP. La plupart des informations ne sert que pour le débogage. La valeur « sl » est l'emplacement de la socket dans la table de hachage du noyau. Le champ « local_address » contient l'adresse locale ainsi que le numéro de port. Le champ « remote_address » contient l'adresse distante et le numéro de port (si la socket est connectée). « St » est l'état interne de la socket. Les « tx_queue » et « rx_queue » représentent les files d'attente en émission et en réception, en terme d'utilisation mémoire par le noyau. Les champs « tr », « tm->when » et « rexmits » ne sont pas utilisés par UDP. Le champ « uid » contient l'identificateur EUID du créateur de la socket. Le format est :
    sl  local_address rem_address   st tx_queue rx_queue tr rexmits  tm->when uid
     1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
     1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
     1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0

/proc/net/unix
    Liste des sockets dans le domaine UNIX présentes sur le système, et leurs états. Le format est :

    Num RefCount Protocol Flags    Type St Path
     0: 00000002 00000000 00000000 0001 03
     1: 00000001 00000000 00010000 0001 01 /dev/printer

    Où « Num » est l'emplacement dans la table du noyau. « Refcount » est le nombre d'utilisateurs de la socket. « Protocol » est toujours 0 pour le moment. « Flags » représente un attribut interne du noyau correspondant à l'état de la socket. Le type est toujours 1 pour le moment (Les sockets de datagrammes dans le domaine Unix ne sont pas encore supportés par le noyau). « St » est un état interne de la socket, et Path correspond à l'éventuel chemin d'accès de la socket.

/proc/partitions
    Contient les numéros majeur et mineur de chaque partition, ainsi que le nombre de blocs et le nom de la partition.

/proc/pci
    Il s'agit d'une liste de tous les périphériques PCI détectés pendant l'initialisation ainsi que leur configuration. Ce fichier a été déprécié en faveur d'une nouvelle interface /proc pour PCI (/proc/bus/pci). Il est devenu optionnel dans Linux 2.2 (disponible avec l'option CONFIG_PCI_OLD_PROC positionnée à la compilation du noyau). Ensuite, il a été déprécié dans Linux 2.6 (toujours disponible avec CONFIG_PCI_LEGACY_PROC positionnée), et finalement supprimées toutes les deux depuis Linux 2.6.17.

/proc/scsi
    Un répertoire regroupant les pseudo-fichiers du niveau SCSI intermédiaire, et divers sous-répertoires pour les pilotes SCSI bas-niveau, qui contiennent un fichier pour chaque hôte SCSI du système. Tout cet ensemble fournit une partie de l'état du sous-système d'entrée/sortie SCSI. Les fichiers contiennent des structures sous forme ASCII, et sont donc lisibles avec cat(1). On peut également écrire dans certains fichiers pour reconfigurer le sous-système SCSI, ou activer/désactiver certaines fonctionnalités.

/proc/scsi/scsi
    Il s'agit d'une liste de tous les périphériques SCSI reconnus par le noyau. Cette liste est la même que celle affichée durant le démarrage. Le sous-système SCSI n'accepte pour le moment que la commande add-single-device qui permet au superutilisateur d'ajouter un périphérique branché à chaud à la liste des périphériques connus. La commande
    echo 'scsi add-single-device 1 0 5 0' > /proc/scsi/scsi
    fera examiner le canal SCSI 0 par l'hôte scsi1, à la recherche d'un périphérique identifié ID 5 LUN 0. S'il y a déjà un périphérique à cette adresse ou si l'adresse est inconnue, une erreur sera renvoyée.

/proc/scsi/[nom_de_pilote]
    Le [nom_de_pilote] peut être actuellement : NCR53c7xx, aha152x, aha1542, aha1740, aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic, scsi_debug, seagate, t128, u15-24f, ultrastore ou wd7000. Ces répertoires correspondent à chaque pilote qui pilote au moins un HBA SCSI. Chaque répertoire contient un fichier par hôte enregistré. Chaque fichier hôte est baptisé avec le numéro assigné à l'hôte durant l'initialisation. La lecture de ces fichiers montrera en général la configuration de l'hôte et du pilote, des statistiques, etc. L'écriture dans ces fichiers permettra différentes choses suivant les hôtes. Par exemple, avec les commandes latency et nolatency, le superutilisateur peut activer ou inhiber le code de mesure de latence des commandes dans le pilote eata_dma. Avec les commandes lockup et unlock, il peut contrôler les verrouillages de bus simulés par le pilote scsi_debug.

/proc/self
    Ce répertoire se rapporte au processus accédant au système de fichiers /proc, et est identique au sous-répertoire de /proc ayant pour nom le PID du processus appelant.

/proc/slabinfo
    Informations à propos des mémoires caches du noyau. Depuis Linux 2.6.16, ce fichier n'est présent que si l'option CONFIG_SLAB de configuration du noyau est activée. Les colonnes dans /proc/slabinfo sont :
    nom-du-cache
    nombre-d'objets-actifs
    nombre-total-d'objets
    taille-d-'objet
    nombre-de-tampons-actifs
    nombre-total-de-tampons
    nombre-de-pages-par-tampon
    Voir slabinfo(5) pour des détails.

/proc/stat
    Statistiques du noyau, et du système. Varie suivant l'architecture, les entrées communes sont :

    cpu  3357 0 4313 1362393
        Le temps, mesuré en unités de USER_HZ (centièmes de seconde sur la plupart des machines, utilisez) sysconf(_SC_CLK_TCK) pour connaître la valeur correcte), que le système a passé en mode utilisateur, en mode utilisateur avec une priorité basse (gentil), en mode système, et le temps d'inactivité. La dernière valeur devrait correspondre à USER_HZ fois la deuxième entrée du pseudo-fichier uptime. Dans Linux 2.6, cette ligne contient 3 colonnes supplémentaires : iowait - temps d'attente pour que les entrées-sorties soient effectuées (depuis 2.5.41) ; irq - temps de service des interruptions (depuis 2.6.0-test4); softirq - temps de service des interruptions logicielles (depuis 2.6.0-test4); Depuis Linux 2.6.11, il y a une huitième colonne, steal - temps volé, qui est le temps passé dans d'autres systèmes d'exploitation lors de l'exécution en environnement virtualisé. Depuis Linux 2.6.24, il y a une neuvième colonne, guest, qui est le temps passé à exécuter un processeur virtuel pour des systèmes d'exploitation invités sous le contrôle du noyau Linux.

    page 5741 1808
        Le nombre de pages que le système a paginé en entrée et en sortie.

    swap 1 0
        Le nombre de pages de swap que le système a échangé en entrée et en sortie.

    intr 1462898
        Cette ligne montre le nombre d'interruptions servies depuis le démarrage du système, pour chacune des interruptions possibles du système. La première colonne est le total de toutes les interruptions servies ; chaque colonne suivante est le total pour une interruption particulière.

    disk_io: (2,0):(31,30,5764,1,2) (3,0):...
        (majeur,mineur):(noinfo, read_io_ops, blks_read, write_io_ops, blks_written)
        (Linux 2.4 seulement)

    ctxt 115315
        Le nombre de changements de contexte effectués par le système.

    btime 769041601
        La date de démarrage du système en secondes écoulées depuis le 1er Janvier 1970.

    processes 23664
        Le nombre de processus exécutés sur le système depuis le démarrage.

    procs_running 6
        Nombre de processus pouvant être exécutés. (Linux 2.5.45 et suivants.)

    procs_blocked 2
        Nombre de processus bloqués attendant l'achèvement d'entrées-sorties. (Linux 2.5.45 et suivants.)

/proc/swap
    Les zones de swap utilisées. Voir aussi swapon(8).

/proc/sys
    Ce répertoire (présent depuis Linux 1.3.57) contient un ensemble de fichiers et de sous-répertoires correspondant à des variables internes du noyau. Celles-ci peuvent être lues et parfois modifiées en utilisant le pseudo-système de fichiers /proc, et en utilisant l'appel système sysctl(2). Actuellement, il existe les sous-répertoires abi, debug, dev, fs, kernel, net, proc, sunrpc et vm qui contiennent chacun des fichiers et d'autres sous-répertoires.

/proc/sys/abi (depuis Linux 2.4.10)
    Ce répertoire peut être vide. Voir le fichier Documentation/sysctl/abi.txt des sources du noyau pour plus d'informations.

/proc/sys/debug
    Ce répertoire peut être vide.

/proc/sys/dev
    Ce répertoire contient des informations spécifiques sur les périphériques (par exemple, dev/cdrom/info). Sur certains systèmes, il peut être vide.

/proc/sys/fs
    Ici se trouve le sous-répertoire binfmt_misc, inotify, et mqueue, et les fichiers dentry-state, dir-notify-enable, dquot-nr, file-max, file-nr, inode-max, inode-nr, inode-state, lease-break-time, leases-enable, overflowgid, overflowuid, suid_dumpable, super-max et super-nr dont les noms sont assez explicites.

/proc/sys/fd/binfmt_misc
    La documentation des fichiers de ce répertoire se trouve dans les sources du noyau, dans Documentation/binfmt_misc.txt.

/proc/sys/fs/dentry-state  (depuis Linux 2.2)
    Ce fichier contient des informations sur l'état du cache de répertoire (dcache). Ce fichier contient six nombres nr_dentry, nr_unused, age_limit (age en secondes), want_pages (pages réclamées par le système) et deux valeurs inutiles.

    *   nr_dentry est le nombre d'entrées dcache allouées. Ce champ n'est pas utilisé dans Linux 2.2.

    *   nr_unused est le nombre d'entrées de répertoire libres.

    *   age_limit est l'âge en seconde après lequel les entrées de cache peuvent être réclamées quand la mémoire libre diminue.

    *   want_pages n'est pas nul quand le noyau a appelé shrink_dcache_pages() et que le cache de répertoire n'a pas encore été élagué.

/proc/sys/fs/dir-notify-enable
    ce fichier peut être utilisé pour activer ou inhiber l'interface dnotify décrite dans fcntl(2) au niveau système Une valeur nulle inhibe cette interface, et la valeur 1 l'active.

/proc/sys/fs/dquot-max
    Ce fichier montre le nombre maximal d'entrée de quota de disque en cache. Sur certains systèmes (2.4), il est absent. Si le nombre de quotas de disque libres est très bas, et si vous avez un nombre important d'utilisateurs simultanés, vous pouvez augmenter cette valeur.

/proc/sys/fs/dquot-nr
    Ce fichier montre le nombre d'entrées de quota de disque allouées et le nombre d'entrées libres.

/proc/sys/fs/file-max
    Ce fichier est la limite système du nombre de fichiers ouverts par un processus. (Voir aussi setrlimit(2) qui peut servir à fixer la limite par processus, RLIMIT_NOFILE). Si vous avez beaucoup de messages d'erreurs indiquant un manque de descripteurs de fichier, essayez d'augmenter cette valeur.
    echo 100000 > /proc/sys/fs/file-max
    La constante NR_OPEN du noyau impose une limite supérieure à la valeur que l'on peut placer dans file-max. Si vous augmentez /proc/sys/fs/file-max, assurez-vous d'augmenter /proc/sys/fs/inode-max jusqu'à 3 à 4 fois la nouvelle valeur de /proc/sys/fs/file-max, ou vous serez à court d'inœuds.

/proc/sys/fs/file-nr
    Ce fichier (en lecture seule) donne le nombre de fichiers actuellement ouverts. Il contient trois nombres : les descripteurs de fichier alloués, les descripteurs de fichier libres, et le maximum de descripteurs de fichier. Le noyau alloue les descripteurs dynamiquement, mais il ne les libére pas. Si le nombre de descripteurs alloués est proche du maximum, vous pouvez envisager d'augmenter le maximum. Quand le nombre de descripteurs libres est très grand, vous avez rencontré dans le passé un pic d'utilisation et n'avez probablement pas besoin d'augmenter le maximum.

/proc/sys/fs/inode-max
    Ce fichier contient le nombre maximal d'inœuds en mémoire. Sur certains systèmes (2.4) il peut être absent. Cette valeur devrait être 3 à 4 fois plus grande que le nombre file-max, car les descripteurs stdin, stdout et les sockets réseau nécessitent aussi un inœud. Lorsque vous manquez régulièrement d'inœud, augmentez cette valeur.

/proc/sys/fs/inode-nr
    Ce fichier contient les deux premières valeurs de inode-state.

/proc/sys/fs/inode-state
    Ce fichier contient sept nombres : nr_inodes, nr_free_inodes, preshrink et quatre valeurs inutiles. nr_inodes est le nombre d'inœuds alloués par le système. Il peut être légèrement plus grand que inode-max, car Linux les alloue par page complète. nr_free_inodes représente le nombre d'inœuds libres. preshrink est non nulle quand nr_inodes > inode-max et que le système doit purger la liste d'inœuds plutôt qu'en allouer plus.

/proc/sys/fs/inotify (deuis Linux 2.6.13)
    Ce répertoire contient les fichiers max_queued_events, max_user_instances, and max_user_watches, qui peuvent être utilisés pour limiter la quantité de mémoire noyau consommée par l'interface inotify. Pour plus de détails, voir inotify(7).

/proc/sys/fs/lease-break-time
    Ce fichier indique le délai de grâce que le noyau accorde à un processus détenant un blocage de fichier (file lease, voir fcntl(2)) après qu'il lui a envoyé un signal indiquant qu'un autre processus attend pour ouvrir le fichier. Si, durant le délai de grâce, le détenteur du blocage ne le supprime pas, en n'en diminue pas la portée, le noyau éliminera de force le blocage.

/proc/sys/fs/leases-enable
    Ce fichier permet d'activer ou d'inhiber les blocages de fichiers (file lease, voir fcntl(2)) pour tout le système. Si ce fichier contient la valeur 0, les blocages sont désactivés, une valeur non nulle les active.

/proc/sys/fs/mqueue (depuis Linux 2.6.6)
    Ce répertoire contient les fichiers msg_max, msgsize_max et queues_max qui contrôlent les ressources utilisées par les files de messages POSIX. Voir mq_overview(7) pour les détails.

/proc/sys/fs/overflowgid et /proc/sys/fs/overflowuid
    Ces fichiers contiennent des valeurs de GID et UID de débordement, par défaut 65534. Certains systèmes de fichiers ne supportent que des UID et GID sur 16 bits, bien que le noyau Linux les gère sur 32 bits. Lorsque l'un de ces systèmes de fichiers est monté en lecture-écriture, tout UID ou GID dépassant 65535 est remplacé par la valeur de débordement avant l'écriture sur le disque.

/proc/sys/fs/suid_dumpable (depuis Linux 2.6.13)
    La valeur dans ce fichier détermine si les fichiers core dump sont produit pour les binaires Set-UID ou protégés. Trois valeurs entières peuvent être spécifiées :

    0 (défault) C'est le comportement traditionnel (pre-Linux 2.6.13). Un fichier core dump ne sera pas produit pour un processus qui a modifié ses références (par un appel à seteuid(2), setgid(2) ou similaire, ou en exécutant un programme Set-UID ou Set-GID) ou dont le binaire n'a pas la permission de lecture activée.

    1 ("debug") Tous les processus peuvent créés un fichier core dump lorsque c'est possible. Le fichier core dump appartient à l'UID du système de fichiers du processus créant le fichier et aucune sécurité n'est appliquée. Cela est conçu pour les situations de débogage du système seulement. Ptrace n'est pas vérifiée.

    2 ("suidsafe") Tout binaire qui ne serait normallement pas « dumpé » (voir 0 plus haut) est « dumpé », lisible par le superutilisateur seulement. Cela permet à l'utilisateur de supprimer le fichier core dump mais pas de le lire. Pour des raisons de sécurité, le fichier core dump dans ce mode n'en écrasera pas un autre, ou d'autres fichiers. Ce mode est approprié lorsque les administrateurs tentent de déboguer des problèmes dans un environnement normal.

/proc/sys/fs/super-max
    Ce fichier indique le nombre maximal de superblocs, et donc le nombre maximal de systèmes de fichiers que le noyau peut monter. Vous n'avez besoin d'augmenter cette valeur que si vous désirez monter plus de systèmes de fichiers que le maximal actuel.

/proc/sys/fs/super-nr
    contient le nombre de systèmes de fichiers montés actuellement.

/proc/sys/kernel
    On y trouve les fichiers acct, cad_pid, cap-bound, core_pattern, core_uses_pid, ctrl-alt-del, dentry-state, domainname, hotplug, hostname, htab-reclaim (PowerPC), java-appletviewer (binfmt_java, obsolète), java-interpreter (binfmt_java, obsolète), l2cr (PowerPC), modprobe, msgmax, msgmnb, msgmni, osrelease, ostype, overflowgid, overflowuid, panic, panic_on_oops, pid_max, powersave-nap (PowerPC seulement), printk, pty, random, real-root-dev, reboot-cmd (SPARC seulement), rtsig-max, rtsig-nr, sem, sg-big-buff, shmall, shmmax, shmmni, sysrq, tainted, threads-max, version et zero-paged (PowerPC seulement).

/proc/sys/kernel/acct
    Ce fichier contient trois nombres : un seuil haut, un seuil bas et une période. Si la comptabilité des processus à la manière BSD est activée, ses valeurs déterminent son comportement. Si l'espace disque sur le système de fichiers accueillant les statistiques descend sous le seuil bas, (en pourcentage), la comptabilité est suspendue. Si l'espace remonte au-dessus du seuil haut, elle reprend. La période (en seconde) est celle avec laquelle le noyau vérifie l'espace disque disponible. Les valeurs par défaut sont 4, 2 et 30. Cela signifie que la comptabilité est suspendue en-dessous de 2% d'espace libre, elle reprend à 4% et la vérification a lieu toutes les 30 secondes.

/proc/sys/kernel/cap-bound (de Linux 2.2 à 2.6.24)
    Ce fichier conserve la valeur de l'ensemble des capacités limites du noyau (exprimée comme un nombre décimal signé). Cet ensemble est filtré par un ET binaire avec les capacités du processus lors d'un execve(2). À partir de Linux 2.6.25, l'ensemble des capacités limites à l'échelle du système a disparu pour être remplacé un ensemble de limites au niveau des threads ; voir capabilities(7).

/proc/sys/kernel/core_pattern
    Voir core(5).

/proc/sys/kernel/core_uses_pid
    Voir core(5).

/proc/sys/kernel/ctrl-alt-del
    Ce fichier contrôle la gestion de la séquence Ctrl-Alt-Suppr du clavier. S'il contient la valeur zéro, Ctrl-Alt-Del est capturé et envoyé au programme init(8) pour relancer le système correctement. Si la valeur est supérieure à zéro, la réaction de Linux à ce Coup-de-pied Au C.. est un redémarrage immédiat, sans même écrire le contenu des tampons en attente. Note : lorsqu'un programme (comme dosemu) utilise le clavier en mode « raw » (brut), la séquence ctl-alt-suppr est interceptée par le programme avant même d'atteindre le gestionnaire de console du noyau, et c'est à ce programme de décider qu'en faire.

/proc/sys/kernel/hotplug
    Ce fichier contient le chemin de l'agent du mécanisme de branchement à chaud. La valeur par défaut est /sbin/hotplug.

/proc/sys/kernel/domainname et /proc/sys/kernel/hostname
    Ces fichiers servent à indiquer les noms NIS/YP de domaine et d'hôte, exactement de la même manière que les commandes domainname(1) et hostname(1). Par exemple :
    # echo "darkstar" > /proc/sys/kernel/hostname
    # echo "mydomain" > /proc/sys/kernel/domainname
    a exactement le même effet que
    # hostname "darkstar"
    # domainname "mydomain"
    Notez toutefois, que le classique darkstar.frop.org a le nom d'hôte darkstar et le nom de domaine DNS (Internet Domain Name Server) "frop.org", à ne pas confondre avec le nom de domaine NIS (Network Information Service) ou YP (Yellow Pages). Ces noms de domaines sont généralement différents. Pour plus de détail, voyez la page hostname(1).

/proc/sys/kernel/htab-reclaim
    (PowerPC seulement) Si ce fichier contient une valeur non nulle, la htab du PowerPC (voir le fichier Documentation/powerpc/ppc_htab.txt du noyau) est parcourue chaque fois que le système atteint la boucle d'inactivité.

/proc/sys/kernel/l2cr
    (PowerPC seulement) Ce fichier contient un indicateur commandant le cache L2 des cartes processeurs G3. Le cache est désactivé si la valeur est nulle, activé sinon.

/proc/sys/kernel/modprobe
    Ce fichier contient le chemin du chargeur des modules du noyau. La valeur par défaut est /sbin/modprobe. Le fichier n'est présent que si le noyau est compilé avec l'option CONFIG_KMOD activée. Ce fichier est décrit dans le fichier des sources du noyau Documentation/kmod.txt. (présent seulement dans les noyaux 2.4 et antérieurs).

/proc/sys/kernel/msgmax
    Ce fichier est une limite pour l'ensemble du système précisant le nombre maximal d'octets par message écrit dans une file de message System V.

/proc/sys/kernel/msgmni
    Ce fichier définit la limite pour le système du nombre d'identificateurs de files de messages. (Ce fichier n'existe que depuis Linux 2.4).

/proc/sys/kernel/msgmnb
    Ce fichier est un paramètre au niveau du système pour initialiser la valeur msg_qbytes lors de la création ultérieure de files de messages. La valeur msg_qbytes indique le nombre maximal d'octets que peut contenir une file de messages.

/proc/sys/kernel/ostype et /proc/sys/kernel/osrelease
    Ces fichiers donnent des sous-chaînes de /proc/version.

/proc/sys/kernel/overflowgid et /proc/sys/kernel/overflowuid
    Ces fichiers remplissent le même rôle que /proc/sys/fs/overflowgid et /proc/sys/fs/overflowuid.

/proc/sys/kernel/panic
    Ce fichier donne un accès en lecture et écriture à la variable panic_timeout du noyau. Si elle vaut zéro, le noyau se mettra en boucle en cas de panique, sinon elle contient le nombre de secondes après lequel le noyau devra redémarrer. Si vous utilisez le pilote de surveillance watchdog logiciel, la valeur recommandée est 60.

/proc/sys/kernel/panic_on_oops
    Ce fichier (nouveauté Linux 2.5) contrôle le comportement du noyau lorsqu'un Oops (défaut) ou un bogue est rencontré. Si ce fichier contient 0, alors le système tente de continuer à travailler. S'il contient 1, alors le système attend quelques secondes (pour laisser à klogd le temps d'enregistrer la sortie du Oops) puis déclenche une panique. Si le fichier /proc/sys/kernel/panic est également non nul alors la machine redémarrera.

/proc/sys/kernel/pid_max
    Ce fichier (nouveauté Linux 2.5) indique la valeur à partir de laquelle les PIDs vont reprendre au début. (la valeur dans ce fichier est celle du PID maximum plus un). La valeur par défaut est 32768, ce qui correspond à la même plage de PIDs que sur les noyaux antérieurs. Sur les plates-formes 32 bits, la valeur maximum de pid_max est 32768. Sur les systèmes 64 bits, pid_max peut prendre toute valeur jusqu'à 2^22 (PID_MAX_LIMIT, approximativement 4 millions).

/proc/sys/kernel/powersave-nap (PowerPC seulement)
    Ce fichier contient un indicateur. S'il est non nul, Linux-PPC utilisera le mode « nap » d'économie d'énergie, sinon il utilisera le mode « doze ».

/proc/sys/kernel/printk
    Les quatre valeurs dans ce fichier sont nommées console_loglevel, default_message_loglevel, minimum_console_level et default_console_loglevel. Ces valeurs influencent le comportement de printk() lors de l'affichage ou de la journalisation de message d'erreurs. Voir syslog(2) pour plus d'information sur les différents niveaux. Les messages avec une priorité plus élevée que console_loglevel seront affichés sur la console. Les messages sans priorité explicite utiliseront la priorité default_message_level. minimum_console_loglevel est la valeur maximale à laquelle console_loglevel puisse être élevé, default_console_loglevel est la valeur par défaut pour console_loglevel.

/proc/sys/kernel/pty (depuis Linux 2.6.4)
    Ce répertoire contient deux fichiers relatifs au nombre de pseudo-terminaux Unix 98 (voir pts(4)) sur le système.

/proc/sys/kernel/pty/max
    Ce fichier définit le nombre maximal de pseudo-terminaux.

/proc/sys/kernel/pty/nr
    Ce fichier, en lecture seule, indique le nombre de pseudo-terminaux en cours d'utilisation.

/proc/sys/kernel/random
    contient divers paramètres contrôlant le fonctionnement du fichier /dev/random. Voir random(4) pour plus d'information.

/proc/sys/kernel/real-root-dev
    Ce fichier est documenté dans le fichier Documentation/initrd.txt des sources du noyau.

/proc/sys/kernel/reboot-cmd (Sparc seulement)
    permet apparemment de fournir un argument au chargeur de démarrage ROM/Flash Sparc. Peut-être indique-t-il que faire après redémarrage ?

/proc/sys/kernel/rtsig-max
    (Seulement dans les noyaux jusqu'au 2.6.7 inclus ; voir setrlimit(2)) Ce fichier permet d'indiquer le nombre maximal de signaux POSIX temps réel en attente sur le système.

/proc/sys/kernel/rtsig-nr
    (Seulement dans les noyaux jusqu'au 2.6.7 inclus) Ce fichier donne le nombre de signaux POSIX temps réel actuellement en attente.

/proc/sys/kernel/sem (disponible depuis Linux 2.4)
    contient 4 limites pour les sémaphores System V. Ces valeurs sont respectivement :

    SEMMSL
        Le nombre maximal de sémaphores par ensemble.

    SEMMNS
        Une limite générale au système pour le nombre de sémaphores dans tous les ensembles.

    SEMOPM
        Le nombre maximal d'opérations que l'on peut indiquer dans un appel semop(2).

    SEMNI
        Une limite générale sur le nombre maximal d'identifiants de sémaphores.

/proc/sys/kernel/sg-big-buff
    Ce fichier montre la taille du tampon pour le pilote SCSI générique (sg). Vous ne pourrez pas y écrire pour le moment, mais vous pouvez changer sa valeur à la compilation en éditant <include/scsi/sg.h> et en modifiant SG_BIG_BUFF. Toutefois, il ne devrait y avoir aucune raison de le modifier.

/proc/sys/kernel/shmall
    Ce fichier contient le nombre maximal de pages de mémoire partagées (IPC Système V) au niveau du système.

/proc/sys/kernel/shmmax
    Ce fichier permet de lire ou modifier la taille maximale des segments de mémoire partagée (IPC Système V) que l'on peut créer. Les segments de mémoire jusqu'à 1Go sont à présent autorisés par le noyau. La valeur par défaut est SHMMAX.

/proc/sys/kernel/shmmni
    (disponible depuis Linux 2.4) Ce fichier indique le nombre maximal de segments de mémoire partagée que l'on peut créer.

/proc/sys/kernel/version
    Ce fichier contient une chaîne du type : #5 Wed Feb 25 21:49:24 MET 1998 Le champ « #5 » indique que c'est la cinquième compilation du noyau depuis ces sources, et la date correspond à celle de la compilation.

/proc/sys/kernel/zero-paged (PowerPC seulement)
    Ce fichier contient un drapeau. S'il est activé (non nul), Linux-PPC effacera les pages dans sa boucle d'inactivité, accélérant éventuellement get_free_pages.

/proc/sys/net
    Ce répertoire contient des informations concernant le réseau. Des explications pour certains fichiers de ce répertoire peuvent être trouvées dans les pages tcp(7) et ip(7).

/proc/sys/net/core/somaxconn
    Ce fichier définit la valeur plafond de l'argument backlog de listen(2) ; voir la page manuel de listen(2) pour les détails.

/proc/sys/proc
    Ce répertoire peut être vide.

/proc/sys/sunrpc
    Ce répertoire correspond aux appels de procédures à distance (RPC) sur un système de fichiers NFS. Sur certains systèmes, il est absent.

/proc/sys/vm
    Ce répertoire contient des fichiers de paramétrage de la gestion de mémoire, des tampons, et du cache.

/proc/sys/vm/drop_caches (depuis Linux 2.6.16)
    L'écriture dans ce fichier fera que le noyau nettoyera les caches, les entrées de répertoires et les inœuds de la mémoire, libérant celle-ci. Pour libérer les caches, utilisez echo 1 > /proc/sys/vm/drop_caches ; Pour libérer les entrées de répertoires et les inœuds, utilisez echo 2 > /proc/sys/vm/drop_caches ; Pour libérer les caches les entrées de répertoires et les inœuds, utilisez echo 3 > /proc/sys/vm/drop_caches. Parce que cette opération est non destructive et que les objets « sales » ne sont pas libérables, l'utilisateur devrait d'abord lancer sync(8).

/proc/sys/vm/legacy_va_layout (depuis Linux 2.6.9)
    S'il n'est pas nul, cela désactive la disposition mappage mémoire 32 bits ; le noyau utilisera la disposition historique (2.4) pour tous les processus.

/proc/sys/vm/overcommit_memory
    Ce fichier contient le mode pour les statistiques de la mémoire virtuelle du noyau. Les valeurs sont :

        0: gestion heuristique du dépassement de l'allocation mémoire (c'est la valeur par défaut)
        1: pas de gestion du dépassement, ne jamais vérifier
        2: toujours vérifier, gestion stricte du dépassement

    Dans le mode 0, les appels à mmap(2) avec MAP_NORESERVE positionné ne sont pas vérifiés et la vérification par défaut est faible, laissant le risque d'avoir un processus « OOM-killed ». Sous Linux 2.4, toute valeur non nulle implique le mode 1. Dans le mode 2 (disponible depuis Linux 2.6), l'espace d'adresse virtuelle total sur le système est limité à (SS + RAM*(r/100)), où SS est la taille de l'espace swap, RAM la taille de la mémoire physique, et r le contenu du fichier /proc/sys/vm/overcommit_ratio.

/proc/sys/vm/overcommit_ratio
    Voir la description de /proc/sys/vm/overcommit_memory.

/proc/sysvipc
    Sous-répertoire contenant les pseudo-fichiers msg, sem and shm. Ces fichiers listent les objets d'IPC System V (respectivement les files de messages, les sémaphores, et la mémoire partagée) existant sur le système. Les informations sont les mêmes que celles fournies par la commande ipcs(1). Ces fichiers ont un entête, et sont formatés pour être lus facilement. La page svipc(7) explique certaines informations fournies par ces fichiers.

/proc/tty
    Sous-répertoire contenant les pseudo-fichiers et sous-répertoires pour les pilotes de tty et la gestion de la ligne.

/proc/uptime
    Ce fichier contient deux valeurs : la durée de fonctionnement (uptime) en secondes, et le temps écoulé à ne rien faire (idle), en secondes également.

/proc/version
    Cette chaîne identifie la version du noyau en cours d'exécution. Elle inclut le contenu de /proc/sys/kernel/ostype, /proc/sys/kernel/osrelease et /proc/sys/kernel/version. Par exemple :
    Linux version 2.4.19 (ccb@venux) (gcc version 2.96 20000731
    (Red Hat Linux 7.3 2.96-110)) #13 sam nov 9 09:04:36 CET 2002

/proc/vmstat (depuis Linux 2.6)
    Ce fichier contient diverses statistiques sur la mémoire virtuelle.

/proc/zoneinfo (depuis Linux 2.6.13)
    Ce fichier contient des informations sur les zones mémoires. Il est utile pour l'analyse du comportement de la mémoire virtuelle.

NOTES
Remarquez que certaines chaînes (de l'environnement et de la ligne de commande) sont parfois affichées dans un format interne, terminées par un octet nul. Il est parfois plus lisible d'utiliser od -c ou tr "\000" "\n" pour les lire. Autrement, echo `cat <file>` marche bien. Cette page de manuel est incomplète, incertaine, et devrait être mise à jour très souvent.

VOIR AUSSI
cat(1), find(1), free(1), ps(1), tr(1), uptime(1), chroot(2), mmap(2), readlink(2), syslog(2), slabinfo(5), hier(7), time(7), arp(8), dmesg(8), hdparm(8), ifconfig(8), init(8), lsmod(8), lspci(8), mount(8), netstat(8), procinfo(8), route(8) /usr/src/linux/Documentation/filesystems/proc.txt

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 2 juin 1999, mise à jour par Alain Portal <aportal AT univ-montp2 DOT fr> le 4 juillet 2005 et révisée le 17 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 5 proc ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.