Scroll to navigation

proc(5) File Formats Manual proc(5)

NOM

proc – informations de processus, informations du système et pseudo-système de fichiers sysctl

DESCRIPTION

Le système de fichiers proc est un pseudosystème de fichiers qui fournit une interface pour les structures de données du noyau. Il est généralement monté sur /proc. Ordinairement, il est monté automatiquement par le système, mais il peut aussi l’être manuellement en utilisant une commande telle que :


mount -t proc proc /proc

La plupart des fichiers dans le système de fichiers proc sont en lecture seule, mais certains sont éditables, permettant aux variables du noyau d’être modifiées.

Options de montage

Le système de fichiers proc gère les options de montage suivantes :

Cette option contrôle qui a accès aux informations dans les répertoires /proc/pid. L’argument n possède une des valeurs suivantes :
0
Tout le monde peut accéder à tous les répertoires /proc/pid. C’est le comportement traditionnel et celui par défaut si cette option de montage n’est pas précisée.
1
Les utilisateurs ne peuvent accéder aux fichiers et sous-répertoires dans n’importe quel répertoire /proc/pid sauf dans les leurs (les répertoires /proc/pid demeurent visibles). Les fichiers sensibles tels que /proc/pid/cmdline et /proc/pid/status sont maintenant protégés des autres utilisateurs. Cela rend impossible de savoir si n’importe quel utilisateur exécute un programme particulier (aussi longtemps que le programme ne se révèle de lui-même par son comportement).
2
Comme pour le mode 1, mais en plus les répertoires /proc/pid appartenant aux autres utilisateurs deviennent invisibles. Cela signifie que les enregistrements /proc/pid ne peuvent plus être utilisés pour découvrir les PID du système. Cela ne dissimule pas le fait qu’une valeur de PID particulière existe (elle peut être connue d’une autre manière, par exemple, avec « kill -0 $PID »), mais les UID et GID d’un processus sont cachés, qui peuvent être connus d'une autre manière en utilisant stat(2) sur un répertoire /proc/pid. Cela complique grandement la récolte par un attaquant d’informations sur les processus en cours (par exemple, découvrir si un démon est en cours d’exécution avec des privilèges élevés, si un autre utilisateur utilise un programme sensible, si d’autres utilisateurs exécutent un programme quelconque, etc.).
Indication de l’ID d’un groupe dont les membres sont autorisés à connaitre les informations sur un processus autrement interdites par hidepid (c’est-à-dire que les utilisateurs dans ce groupe se comportent comme si /proc était monté avec hidepid=0). Ce groupe doit être utilisé à la place d’approches telles que mettre les utilisateurs normaux dans le fichier sudoers(5).

Aperçu

Sous /proc, on trouve les groupes et sous-répertoires suivants :

Chacun de ces sous-répertoires contient des fichiers et des sous-répertoires exposant les informations sur le processus ayant l’ID correspondant.
Sous chacun des répertoires /proc/pid, un sous-répertoire task contient des sous-répertoires de la forme task/tid qui contiennent des informations sur chacun des threads dans le processus, où tid est l’ID de thread du noyau du thread.
Les sous-répertoires /proc/pid sont visibles lors de l’itération à travers /proc avec getdents(2) (et donc visibles lors de l’utilisation de ls(1) pour voir le contenu de /proc).
Chacun de ces sous-répertoires contient des fichiers et des sous-répertoires exposant des informations sur le thread avec l’ID du thread correspondant. Le contenu de ces répertoires est le même que celui des répertoires /proc/pid/task/tid correspondants.
Les sous-répertoires /proc/tid ne sont pas visibles lors d’itérations à travers /proc avec getdents(2) (et donc ne sont pas visibles si on utilise ls(1) pour voir le contenu de /proc).
/proc/self
Quand un processus accède à ce lien symbolique magique, il l’interprète comme son propre répertoire /proc/pid.
/proc/thread-self
Quand un thread accède à ce lien symbolique magique, il l’interprète comme son propre répertoire /proc/self/task/tid.
/proc/[a-z]*
D’autres fichiers et répertoires divers sous /proc exposent des informations concernant le système en entier.

Tout ce qui précède est décrit plus en détails ci-après.

Fichiers et répertoires

La liste suivante fournit des détails sur de nombreux fichiers et répertoires dans la hiérarchie de /proc.

/proc/pid
Il existe un sous-répertoire numérique pour chaque processus actif. Le sous-répertoire prend comme nom le PID du processus. Chaque sous-répertoire /proc/pid contient les pseudofichiers et répertoires décrits ci-dessous.
Les fichiers dans chaque répertoire /proc/pid sont normalement la propriété de l’ID d’utilisateur et groupe effectifs du processus. Cependant, comme mesure de sécurité, la propriété est transférée à root:root si l’attribut « dumpable » est défini à une autre valeur que 1.
Avant Linux 4.11, root:root signifiait les ID utilisateur et groupe root « globaux » (c’est-à-dire UID 0 et GID 0 dans l’espace de noms utilisateur initial). Depuis Linux 4.11, en revanche, si le processus est dans un espace de noms non initial qui possède un mappage valable pour l’ID 0 utilisateur (groupe) dans l’espace de noms, l’appartenance utilisateur (groupe) des fichiers sous /proc/pid est définie à l’ID utilisateur (groupe) root de l’espace de noms. Cela signifie qu’à l’intérieur d’un conteneur, tout se passe comme prévu pour l’utilisateur « root » du conteneur.
L’attribut « dumpable » peut changer pour les raisons suivantes :
  • l’attribut a été explicitement défini à l’aide de l’opération PR_SET_DUMPABLE de prctl(2) ;
  • l’attribut a été redéfini à la valeur dans le fichier /proc/sys/fs/suid_dumpable (décrit ci-après), pour des raisons décrites dans prctl(2).
Redéfinir l’attribut « dumpable » à 1 revient à transmettre la propriété des fichiers /proc/pid/* aux UID et GID effectifs du processus. Cependant, il est à remarquer que si les UID et GID effectifs sont modifiés par la suite, alors l’attribut « dumpable » peut être redéfini comme décrit dans prctl(2). Par conséquent il peut être souhaitable de redéfinir l’attribut « dumpable » après tout changement souhaité des UID et GID effectifs.
/proc/pid/attr
Les fichiers dans ce répertoire fournissent une API pour des modules de sécurité. Le contenu de ce répertoire se compose de fichiers pouvant être lus et édités dans le but de définir des attributs relatifs à la sécurité. Ce répertoire a été ajouté pour prendre en charge SELinux, mais l’intention était que l’API soit suffisamment générale pour prendre en charge d’autres modules de sécurité. Dans un but explicatif, des exemples d'utilisation de ces fichiers par SELinux sont fournis ci-après.
Ce répertoire n’est présent que si le noyau est configuré avec l'option CONFIG_SECURITY.
/proc/pid/attr/current (depuis Linux 2.6.0)
Le contenu de ce fichier correspond aux attributs de sécurité actuels du processus.
Dans SELinux, ce fichier est utilisé pour obtenir le contexte de sécurité d’un processus. Avant Linux 2.6.11, ce fichier ne pouvait pas être utilisé pour définir le contexte de sécurité (une écriture était toujours refusée) puisque SELinux limitait les transitions de sécurité de processus à execve(2) (consulter la description de /proc/pid/attr/exec ci-après). Depuis Linux 2.6.11, SELinux a levé cette restriction et a commencé à prendre en charge les opérations « set » à travers des écritures sur ce nœud si la politique l’autorise, bien que cette opération ne soit adaptée qu’aux applications qui sont fiables pour l’entretien de toute séparation désirée entre les anciens et nouveaux contextes de sécurité.
Avant Linux 2.6.28, SELinux ne permettait pas que les threads dans un processus multithread définissent leur contexte de sécurité à l’aide de ce nœud car cela pouvait amener une incohérence parmi les contextes de sécurité des threads partageant le même espace mémoire. Depuis Linux 2.6.28, SELinux a levé cette restriction et a commencé à prendre en charge les opérations « set » pour les threads dans un processus multithread si le nouveau contexte de sécurité est lié à l’ancien contexte de sécurité et où la relation de liaison est définie dans la politique et garantit que le nouveau contexte de sécurité possède un sous-ensemble des permissions de l’ancien contexte de sécurité.
D’autres modules de sécurité peuvent décider de prendre en charge les opérations « set » à l’aide d’écritures dans ce nœud.
/proc/pid/attr/exec (depuis Linux 2.6.0)
Ce fichier décrit les attributs à assigner au processus lors d’un prochain execve(2).
Dans SELinux, cela est nécessaire pour prendre en charge les transitions de rôle ou de domaine et un execve(2) est la fonction préférée pour réaliser de telles transitions parce qu’elle offre un meilleur contrôle sur l’initialisation du processus dans le nouveau contexte de sécurité et dans l’héritage d’état. Dans SELinux, cet attribut est redéfini lors d’un execve(2) de façon que le nouveau programme revienne au comportement par défaut pour tout appel execve(2) qu’il peut provoquer. Dans SELinux, un processus peut définir seulement son propre attribut /proc/pid/attr/exec.
/proc/pid/attr/fscreate (depuis Linux 2.6.0)
Ce fichier décrit les attributs à assigner aux fichiers créés par des appels subséquents à open(2), mkdir(2), symlink(2) et mknod(2)
SELinux utilise ce fichier pour prendre en charge la création d’un fichier (en utilisant les appels système précédemment mentionnés) dans un état sécurisé, de façon à éviter tout risque d’accès inapproprié obtenu entre le moment de la création et le moment où les attributs sont définis. Dans SELinux, cet attribut est redéfini lors d’un execve(2), de façon que le nouveau programme revienne au comportement par défaut pour tout appel de création de fichier qu’il peut provoquer, mais l’attribut persiste à travers plusieurs appels de création de fichier dans un programme à moins qu’il ne soit explicitement redéfini. Dans SELinux, un processus peut seulement définir son propre attribut /proc/pid/attr/fscreate.
/proc/pid/attr/keycreate (depuis Linux 2.6.18)
Si un processus écrit un contexte de sécurité dans ce fichier, toutes les clés créées par la suite (add_key(2)) seront étiquetées avec ce contexte. Pour de plus amples informations, consulter le fichier source du noyau Documentation/security/keys/core.rst (ou le fichier Documentation/security/keys.txt entre Linux 3.0 et Linux 4.13 ou Documentation/keys.txt avant Linux 3.0).
/proc/pid/attr/prev (depuis Linux 2.6.0)
Ce fichier contient le contexte de sécurité du processus avant le dernier execve(2), c’est-à-dire la valeur précédente de /proc/pid/attr/current.
/proc/pid/attr/socketcreate (depuis Linux 2.6.18)
Si un processus écrit un contexte de sécurité dans ce fichier, tous les sockets créés par la suite seront étiquetés avec ce contexte.
/proc/pid/autogroup (depuis Linux 2.6.38)
Consulter sched(7).
/proc/pid/auxv (depuis Linux 2.6.0)
Ce fichier contient les informations de l’interpréteur ELF passées au processus au moment de son exécution. Le format est constitué, pour chacun des enregistrements, d'un ID unsigned long suivi d'une valeur unsigned long. Le dernier enregistrement comporte deux zéros. Consulter aussi getauxval(3).
La permission d’accéder à ce fichier est régie par une vérification PTRACE_MODE_READ_FSCREDS de mode d’accès ptrace. Consulter ptrace(2).
/proc/pid/cgroup (depuis Linux 2.6.24)
Consulter cgroups(7).
/proc/pid/clear_refs (depuis Linux 2.6.22)
Ce fichier n'est accessible qu'en écriture, et uniquement par le propriétaire du processus.
Les valeurs suivantes peuvent être écrites dans le fichier :
1 (depuis Linux 2.6.22)
Réinitialiser les bits PG_Referenced et ACCESSED/YOUNG de toutes les pages liées au processus. Avant Linux 2.6.32, écrire n'importe quelle valeur différente de zéro dans ce fichier avait le même impact.
2 (depuis Linux 2.6.32)
Réinitialiser les bits PG_Referenced et ACCESSED/YOUNG de toutes les pages anonymes liées au processus.
3 (depuis Linux 2.6.32)
Réinitialiser les bits PG_Referenced et ACCESSED/YOUNG de toutes les pages mappées dans un fichier et liées au processus.
La réinitialisation des bits PG_Referenced et ACCESSED/YOUNG fournit une méthode pour mesurer approximativement la quantité de mémoire utilisée par un processus. On inspecte d’abord les valeurs des champs « Referenced » des zones de mémoire virtuelle (VMA) de /proc/pid/smaps pour se faire une idée de l’empreinte mémoire du processus. On réinitialise ensuite les bits PG_Referenced et ACCESSED/YOUNG et, après un intervalle de temps mesuré, on inspecte de nouveau les valeurs des champs « Referenced » pour se faire une idée de l’évolution de l’empreinte mémoire du processus pendant cet intervalle. Pour n’inspecter que les types sélectionnés de mappage, on peut utiliser les valeurs 2 ou 3 à la place de 1.
D'autres valeurs permettent d'affecter différentes propriétés :
4 (depuis Linux 3.11)
Effacer le bit soft-dirty pour toutes les pages associées au processus. Utilisé (en conjonction avec /proc/pid/pagemap) par le système de point de restauration pour découvrir les pages qu’un processus a souillées depuis que le fichier /proc/pid/clear_refs a été écrit.
5 (depuis Linux 4.0)
Réinitialiser la taille du jeu résident (« high water mark ») à la valeur du jeu résident actuel.
L'écriture dans /proc/pid/clear_refs d'une valeur différente de celles listées ci-dessus n'a aucun effet.
Le fichier /proc/pid/clear_refs n'est présent que si l'option de configuration du noyau CONFIG_PROC_PAGE_MONITOR a été activée.
/proc/pid/cmdline
Ce fichier en lecture seule contient la ligne de commande complète pour le processus, sauf s'il s'agit d'un zombie. Dans ce dernier cas, il n'y a rien dans ce fichier : c'est-à-dire qu'une lecture de ce fichier ne retournera aucun caractère.
Pour les processus toujours en cours d’exécution, les arguments de ligne de commande apparaissent dans la même disposition que dans la mémoire du processus : si le processus est bien configuré, il est défini à une suite de chaînes séparées par des octets NULL (« \0 »), avec un octet NULL supplémentaire après la dernière chaîne.
C’est le cas le plus commun, mais les processus ont la liberté d’outrepasser la région de mémoire et de ne pas tenir compte des suppositions de contenu ou de format du fichier /proc/pid/cmdline.
Si, après un execve(2), le processus modifie ses chaînes argv, ces changements apparaitront ici. Ce n’est pas la même chose que de modifier le tableau argv.
De plus, un processus peut modifier l’emplacement de mémoire référencé par ce fichier à travers des opérations prctl(2) telles que PR_SET_MM_ARG_START.
Il faut penser à ce fichier comme une ligne de commande que le processus veut montrer.
/proc/pid/comm (depuis Linux 2.6.33)
Ce fichier expose la valeur comm du processus, c’est-à-dire le nom de commande associé au processus. Des threads différents dans le même processus peuvent avoir des valeurs différentes de comm, accessibles à travers /proc/pid/task/tid/comm. Un thread peut modifier sa valeur comm ou celui de n’importe quel autre thread dans le même groupe de threads (consulter les explications au sujet de CLONE_THREAD dans clone(2)) en écrivant dans le fichier /proc/self/task/tid/comm. Les chaînes plus longues que TASK_COMM_LEN (16) caractères (incluant l’octet NULL final) sont silencieusement tronquées.
Ce fichier fournit un surensemble des opérations prctl(2), PR_SET_NAME et PR_GET_NAME, et est employé par pthread_setname_np(3) lorsqu’utilisé pour renommer des threads autres que l’appelant. La valeur dans ce fichier est utilisée pour le spécificateur %e dans /proc/sys/kernel/core_pattern ; consulter core(5).
/proc/pid/coredump_filter (depuis Linux 2.6.23)
Consulter core(5).
/proc/pid/cpuset (depuis Linux 2.6.12)
Consulter cpuset(7).
/proc/pid/cwd
C’est un lien symbolique vers le répertoire de travail actuel du processus. Pour obtenir le répertoire de travail du processus 20 par exemple, vous pouvez faire ceci :

$ cd /proc/20/cwd; pwd -P
    

Dans un traitement multiprocessus, le contenu de ce lien symbolique n'est pas disponible si le processus principal est déjà terminé (typiquement par un appel à pthread_exit(3).
La permission de déréférencer ou de lire (readlink(2)) ce lien symbolique est régie par une vérification du mode d’accès ptrace PTRACE_MODE_READ_FSCREDS ; consulter ptrace(2).
/proc/pid/environ
Ce fichier contient l'environnement initial qui a été défini quand le programme d’exécution actuel a été démarré à travers execve(2). Les enregistrements sont séparés par des octets NULL (« \0 »), et il devrait y en avoir un à la fin du fichier. Ainsi, pour afficher l'environnement du processus numéro 1, on peut utiliser ce qui suit :

$ cat /proc/1/environ | tr '\000' '\n'
    

Si, après un execve(2), le processus modifie son environnement (par exemple, en appelant des fonctions telles que putenv(3) ou en modifiant directement la variable environ(7)), ce fichier ne reflétera pas ces changements.
De plus, un processus peut modifier l’emplacement de mémoire référencé par ce fichier à travers des opérations prctl(2) telles que PR_SET_MM_ENV_START.
La permission d’accéder à ce fichier est régie par une vérification PTRACE_MODE_READ_FSCREDS de mode d’accès ptrace. Consulter ptrace(2).
/proc/pid/exe
Sous Linux 2.2 et ultérieur, 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 ouvrira le fichier exécutable. Vous pouvez même entrer /proc/pid/exe pour lancer une autre copie du même exécutable qui est en cours d’exécution par le processus pid. Si le lien du chemin a été supprimé, le lien symbolique contiendra la chaîne « supprimée » ajoutée au chemin originel. Dans un processus multithread, le contenu de ce lien symbolique n'est pas disponible si le processus principal s'est déjà terminé (typiquement par l'appel de pthread_exit(3)).
La permission de déréférencer ou de lire (readlink(2)) ce lien symbolique est régie par une vérification du mode d’accès ptrace PTRACE_MODE_READ_FSCREDS ; consulter ptrace(2).
Sous Linux 2.0 et précédents, /proc/pid/exe était un pointeur sur le fichier binaire exécuté, qui apparaissait sous forme de lien symbolique. Un appel système readlink(2) sous Linux 2.0 sur ce fichier renvoyait une chaîne de la forme :

[périphérique]:inœud
    

Par exemple, [0301]:1502 correspond à l'inœud 1502 du périphérique ayant le numéro majeur 03 (disque IDE, MFM, etc.) et mineur 01 (première partition du premier disque).
find(1) peut être utilisé avec l'option -inum pour retrouver le fichier exécutable à partir du numéro d'inœud.
/proc/pid/fd/
Il s'agit d'un sous-répertoire contenant un enregistrement pour chaque fichier ouvert par le processus. Chaque enregistrement a le descripteur du fichier pour nom, et est un lien symbolique vers le vrai fichier. Ainsi, 0 correspond à l'entrée standard, 1 à la sortie standard, 2 à la sortie d'erreur, etc.
Pour les descripteurs de fichier de tubes et de sockets, les enregistrements seront des liens symboliques dont le contenu est le type de fichier avec l’inœud. Un appel de readlink(2) sur ce fichier renvoie une chaîne au format :

type:[inœud]
    

Par exemple, socket:[2248868] sera un socket et son inœud est 2248868. Pour les sockets, cet inœud permet de trouver plus de renseignements dans un des fichiers de /proc/net/.
Pour les descripteurs de fichier sans inœud correspondant (par exemple les descripteurs de fichier produits par bpf(2), epoll_create(2), eventfd(2), inotify_init(2), perf_event_open(2), signalfd(2), timerfd_create(2) et userfaultfd(2)), l’enregistrement sera un lien symbolique avec un contenu de la forme :

anon_inode:type_fichier
    

Dans de nombreux cas (mais pas tous), le type_fichier est entouré de crochets.
Par exemple, un descripteur de fichier epoll aura un lien symbolique dont le contenu est la chaîne anon_inode:[eventpoll].
Dans un processus multithread, le contenu de ce répertoire n'est pas disponible si le processus principal est déjà terminé (typiquement par l'appel de pthread_exit(3)).
Les programmes qui prennent un nom de fichier comme paramètre de la ligne de commande, mais qui ne prennent pas leur entrée sur l'entrée standard si aucun paramètre n'est fourni, ou qui écrivent dans un fichier indiqué par un paramètre de la ligne de commande sans envoyer la sortie sur la sortie standard si aucun paramètre n'est fourni, peuvent néanmoins utiliser l'entrée standard et la sortie standard par l'intermédiaire des fichiers /proc/pid/fd comme arguments de ligne de commande. Par exemple, en supposant que l'option -i indique le nom du fichier d'entrée et l'option -o le nom du fichier de sortie :

$ tototiti -i /proc/self/fd/0 -o /proc/self/fd/1 ...
    

et vous avez alors réalisé un filtre fonctionnel.
/proc/self/fd/N est approximativement identique à /dev/fd/N sur certains systèmes UNIX ou de type UNIX. En fait, la plupart des scripts MAKEDEV de Linux lient symboliquement /dev/fd à /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 :

$ tototiti -i /dev/stdin -o /dev/stdout ...
    

La permission de déréférencer ou de lire (readlink(2)) ces liens symboliques dans ce répertoire est régie par une vérification du mode d’accès ptrace PTRACE_MODE_READ_FSCREDS ; consulter ptrace(2).
Remarquez que pour les descripteurs de fichier référençant des inœuds (tubes et sockets, voir ci-dessus), ces inœuds ont toujours les bits de permission et les informations d’appartenance distincts de ceux de l’enregistrement /proc/pid/fd, et le propriétaire peut être différent des ID utilisateur et groupe du processus. Un processus non privilégié peut ne pas avoir les permissions suffisantes pour les ouvrir, comme dans cet exemple :

$ echo test | sudo -u nobody cat
test
$ echo test | sudo -u nobody cat /proc/self/fd/0
cat: /proc/self/fd/0: Permission denied
    

Le descripteur de fichier 0 se réfère au tube créé par l’interpréteur et ayant pour propriétaire cet utilisateur d’interpréteur, qui est nobody, aussi cat n’a pas la permission de créer un nouveau descripteur de fichier pour lire cet inœud, même s’il peut toujours lire à partir de son descripteur de fichier 0 existant.
/proc/pid/fdinfo/ (depuis Linux 2.6.22)
Il s'agit d'un sous-répertoire contenant un enregistrement pour chaque fichier ouvert par le processus, nommé par son descripteur de fichier. Les fichiers dans ce répertoire ne sont lisibles que par le propriétaire du processus. Le contenu de chaque fichier peut être lu afin d'obtenir des informations sur le descripteur de fichier correspondant. Le contenu dépend du type de fichier référencé par le descripteur de fichier correspondant.
Pour les fichiers normaux et les répertoires, on aura quelque chose du style :

$ cat /proc/12015/fdinfo/4
pos:    1000
flags:  01002002
mnt_id: 21
    

Les champs sont les suivants :
C’est un nombre décimal affichant le décalage dans le fichier.
C’est un nombre octal affichant le mode d’accès au fichier et les drapeaux d’états du fichier (consulter open(2)). Si le drapeau « close-on-exec » de descripteur de fichier est défini, alors drapeaux inclura aussi la valeur O_CLOEXEC.
Avant Linux 3.1, ce champ affichait de manière incorrecte la valeur de O_CLOEXEC au moment où le fichier était ouvert à la place de la valeur en cours du drapeau « close-on-exec ».
Ce champ, présent depuis Linux 3.15, est l’ID du montage contenant ce fichier. Consulter la description de /proc/pid/mountinfo.
Pour les descripteurs de fichier eventfd (consulter eventfd(2)), les champs suivants (depuis Linux 3.8) sont affichés :

pos:	0
flags:	02
mnt_id:	10
eventfd-count:               40
    

eventfd-count est la valeur en cours du compteur eventfd, en hexadécimal.
Pour les descripteurs de fichier epoll (consulter epoll(7)), les champs suivants (depuis Linux 3.8) sont affichés :

pos:	0
flags:	02
mnt_id:	10
tfd:        9 events:       19 data: 74253d2500000009
tfd:        7 events:       19 data: 74253d2500000007
    

Chacune des lignes commençant par tfd décrivent un des descripteurs de fichier supervisés à travers le descripteur de fichier epoll (consulter epoll_ctl(2) pour plus de détails). Le champ tfd est le numéro du descripteur de fichier. Le champ events est un masque hexadécimal des évènements supervisés pour ce descripteur de fichier. Le champ data est la valeur des données associées à ce descripteur de fichier.
Pour les descripteurs de fichier signalfd (consulter signalfd(2)), les champs suivants (depuis Linux 3.8) sont affichés :

pos:	0
flags:	02
mnt_id:	10
sigmask:	0000000000000006
    

sigmask est le masque hexadécimal de signaux qui sont acceptés à l’aide du descripteur de fichier signalfd (dans cet exemple, les bits 2 et 3 sont définis, correspondant aux signaux SIGINT et SIGQUIT. Consulter signal(7)).
Pour les descripteurs de fichier inotify (consulter inotify(7)), les champs suivants (depuis Linux 3.8) sont affichés :

pos:	0
flags:	00
mnt_id:	11
inotify wd:2 ino:7ef82a sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:2af87e00220ffd73
inotify wd:1 ino:192627 sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:27261900802dfd73
    

Chacune des lignes commençant par « inotify » affiche des informations sur un fichier ou un répertoire qui est en cours de supervision. Les champs dans ce genre de ligne sont les suivants :
numéro du descripteur de fichier supervisé (en décimal) ;
numéro d’inœud du fichier cible (en hexadécimal) ;
ID du périphérique dans lequel réside le fichier (en hexadécimal) ;
le masque d’évènements supervisés pour le fichier cible (en hexadécimal).
Si le noyau a été construit avec la prise en charge d’exportfs, le chemin du fichier cible est exposé sous forme de gestionnaire de fichiers à travers trois champs hexadécimaux : fhandle-bytes, fhandle-type et f_handle.
Pour les descripteurs de fichier fanotify (consulter fanotify(7)), les champs suivants (depuis Linux 3.8) sont affichés :

pos:	0
flags:	02
mnt_id:	11
fanotify flags:0 event-flags:88002
fanotify ino:19264f sdev:800001 mflags:0 mask:1 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:4f261900a82dfd73
    

La quatrième ligne affiche des informations définies lors de la création du groupe à travers fanotify_init(2) :
l’argument flags indiqué à fanotify_init(2) (exprimé en hexadécimal) ;
l’argument event_f_flags indiqué à fanotify_init(2) (exprimé en hexadécimal).
Chaque ligne supplémentaire montrée dans le fichier contient des informations sur une des marques dans le groupe fanotify. La plupart de ces champs sont comme pour inotify, sauf :
les drapeaux associés à la marque (exprimé en hexadécimal) ;
le masque des évènements pour cette marque (exprimé en hexadécimal) ;
le masque d’évènements ignorés pour cette marque (exprimé en hexadécimal).
Pour plus de détails sur ces champs, consulter fanotify_mark(2).
Pour les descripteurs de fichier timerfd (consulter timerfd(2)), les champs suivants (depuis Linux 3.17) sont affichés :

pos:    0
flags:  02004002
mnt_id: 13
clockid: 0
ticks: 0
settime flags: 03
it_value: (7695568592, 640020877)
it_interval: (0, 0)
    

C’est la valeur numérique de l’ID d’horloge (correspondant à une des constantes CLOCK_* définie à l’aide de <time.h>) qui est utilisée pour marquer la progression du temporisateur (dans cet exemple, 0 est CLOCK_REALTIME).
C’est le nombre d’expirations du temporisateur qui se sont produites (c’est-à-dire la valeur que read(2) exécuté sur lui renverrait).
Ce champ liste les drapeaux avec lesquels le timerfd a été dernièrement armé (consulter timerfd_settime(2)), en octal (dans cet exemple, TFD_TIMER_ABSTIME et TFD_TIMER_CANCEL_ON_SET sont définis).
Ce champ contient la durée avant la prochaine expiration du temporisateur exprimée en secondes et nanosecondes. Cela est toujours exprimé comme valeur relative, même si le temporisateur a été créé en utilisant le drapeau TFD_TIMER_ABSTIME.
Ce champ contient l’intervalle du temporisateur, en secondes et nanosecondes (les champs it_value et it_interval contiennent les valeurs que timerfd_gettime(2) sur ce descripteur de fichier renverrait).
/proc/pid/gid_map (depuis Linux 3.5)
Consulter user_namespaces(7).
/proc/pid/io (depuis Linux 2.6.20)
Ce fichier contient des statistiques d’entrées et sorties pour le processus, par exemple :

# cat /proc/3828/io
rchar: 323934931
wchar: 323929600
syscr: 632687
syscw: 632675
read_bytes: 0
write_bytes: 323932160
cancelled_write_bytes: 0
    

Les champs sont les suivants :
Le nombre d’octets dont cette tâche a provoqué la lecture sur le support de stockage. C’est la somme d’octets que ce processus a passé à read(2) et aux appels système similaires. Cela comprend des choses comme les entrées et sorties du terminal et ne dépend pas du fait que de véritables entrées et sorties du disque physique aient été nécessaires ou non (la lecture pourrait avoir été réalisée à partir du cache de pages).
Le nombre d’octets dont cette tâche a provoqué ou provoquera l'écriture sur le disque. Des limitations similaires à celles de rchar s’appliquent.
Tentative de décompte du nombre d’opérations d’entrées et sorties lues, c’est-à-dire des appels système comme read(2) et pread(2).
Tentative de décompte du nombre d’opérations d’entrées et sorties écrites, c’est-à-dire des appels système comme write(2) et pwrite(2).
Tentative de décompte du nombre d’octets dont l'envoi vers la couche de stockage a été réellement provoqué par ce processus. Cette valeur est précise pour les systèmes de fichiers à base de blocs.
Tentative de décompte du nombre d’octets dont l'envoi vers la couche de stockage a été provoqué par ce processus.
La grosse inexactitude ici est la troncature. Si un processus écrit 1 Mo vers un fichier puis efface ce fichier, il n’aura de fait réalisé aucune écriture. Pourtant, il sera compté comme ayant provoqué 1 Mo d’écriture. Autrement dit, ce champ représente le nombre d’octets que ce processus n’a pas pu écrire, en tronquant le cache de pages. Une tâche peut aussi provoquer des entrées et sorties « négatives ». Si cette tâche tronque un peu de cache de pages sales, certaines des entrées et sorties qui ont été comptabilisées pour une autre tâche (dans son write_bytes) ne se produiront pas.
Remarque : dans l’implémentation actuelle, les choses sont un peu en situation de compétition sur les systèmes 32 bits : si le processus A lit le /proc/pid/io du processus B pendant que ce dernier est en train de mettre à jour un de ces compteurs en 64 bits, le processus A pourrait voir un résultat intermédiaire.
La permission d’accéder à ce fichier est régie par une vérification PTRACE_MODE_READ_FSCREDS de mode d’accès ptrace. Consulter ptrace(2).
/proc/pid/limits (depuis Linux 2.6.24)
Ce fichier indique les limites souples et strictes ainsi que les unités de mesure de chaque limite de ressources du processus (consulter getrlimit(2)). Jusqu'à Linux 2.6.35 inclus, ce fichier est protégé de telle sorte que seul l'UID réel du processus puisse le lire. Depuis Linux 2.6.36, ce fichier est lisible par tous les utilisateurs du système.
/proc/pid/map_files/ (depuis Linux 3.3)
Ce sous-répertoire contient des enregistrements correspondant aux fichiers projetés en mémoire (consulter mmap(2)). Les enregistrements sont nommés par paires d'adresses (exprimées en nombres hexadécimaux) de début et fin de zone mémoire et sont des liens symboliques vers les fichiers projetés. Voici un exemple, avec la sortie coupée et formatée pour tenir sur un affichage en 80 colonnes :

# ls -l /proc/self/map_files/
lr--------. 1 root root 64 Apr 16 21:31

3252e00000-3252e20000 -> /usr/lib64/ld-2.15.so ...

Bien que ces entrées soient présentes pour des zones de mémoire ayant été projetées avec l'attribut MAP_FILE, la façon dont la mémoire partagée anonyme (les zones créées avec les attributs MAP_ANON | MAP_SHARED) est implémentée dans Linux signifie que ce genre de zones apparaissent aussi dans ce répertoire. Voici un exemple où le fichier cible est le /dev/zero effacé :

lrw-------. 1 root root 64 Apr 16 21:33

7fc075d2f000-7fc075e6f000 -> /dev/zero (effacé)

La permission d’accéder à ce fichier est régie par une vérification PTRACE_MODE_READ_FSCREDS de mode d’accès ptrace. Consulter ptrace(2).
Jusqu’à Linux 4.3, ce répertoire n'existe que si l'option de configuration du noyau CONFIG_CHECKPOINT_RESTORE a été activée.
Des capacités sont nécessaires pour lire le contenu des liens symboliques dans ce répertoire : avant Linux 5.9, le processus lecteur nécessitait CAP_SYS_ADMIN dans l’espace de noms initial. Depuis Linux 5.9, le processus lecteur doit avoir soit CAP_SYS_ADMIN ou CAP_CHECKPOINT_RESTORE dans l’espace de noms utilisateur (c’est-à-dire root).
/proc/pid/maps
Ce fichier contient les régions de la mémoire actuellement projetées et leurs autorisations d'accès. Consultez mmap(2) pour de plus amples renseignements sur les projections en mémoire.
La permission d’accéder à ce fichier est régie par une vérification PTRACE_MODE_READ_FSCREDS de mode d’accès ptrace. Consulter ptrace(2).
Le format du fichier est :

adresse          droits posit. périph. inœud      chemin
00400000-00452000 r-xp 00000000 08:02 173521      /usr/bin/dbus-daemon
00651000-00652000 r--p 00051000 08:02 173521      /usr/bin/dbus-daemon
00652000-00655000 rw-p 00052000 08:02 173521      /usr/bin/dbus-daemon
00e03000-00e24000 rw-p 00000000 00:00 0           [heap]
00e24000-011f7000 rw-p 00000000 00:00 0           [heap]
...
35b1800000-35b1820000 r-xp 00000000 08:02 135522  /usr/lib64/ld-2.15.so
35b1a1f000-35b1a20000 r--p 0001f000 08:02 135522  /usr/lib64/ld-2.15.so
35b1a20000-35b1a21000 rw-p 00020000 08:02 135522  /usr/lib64/ld-2.15.so
35b1a21000-35b1a22000 rw-p 00000000 00:00 0
35b1c00000-35b1dac000 r-xp 00000000 08:02 135870  /usr/lib64/libc-2.15.so
35b1dac000-35b1fac000 ---p 001ac000 08:02 135870  /usr/lib64/libc-2.15.so
35b1fac000-35b1fb0000 r--p 001ac000 08:02 135870  /usr/lib64/libc-2.15.so
35b1fb0000-35b1fb2000 rw-p 001b0000 08:02 135870  /usr/lib64/libc-2.15.so
...
f2c6ff8c000-7f2c7078c000 rw-p 00000000 00:00 0    [stack:986]
...
7fffb2c0d000-7fffb2c2e000 rw-p 00000000 00:00 0   [stack]
7fffb2d48000-7fffb2d49000 r-xp 00000000 00:00 0   [vdso]
    

Le champ adresse correspond à l'espace d'adressage dans le processus que la projection occupe. Le champ droits est un ensemble d'autorisations :

r = lecture
w = écriture
x = exécution
s = partage
p = privé (copie lors de l'écriture)
    

Le champ posit. est la position dans le fichier ou autre. périph. correspond à la paire (majeur:mineur). inœud est l'inœud sur ce périphérique. 0 signifie qu'aucun inœud n'est associé à cette zone mémoire, comme c'est le cas avec BSS (données non initialisées).
Le champ chemin sera normalement le fichier sur lequel s'appuie la projection. Pour les fichiers ELF, faire correspondre le champ chemin est facile en regardant le champ Offset des en-têtes du programme ELF (readelf -l).
Des pseudochemins pratiques supplémentaires existent.
[stack]
La pile du processus initial (aussi connu comme le thread principal).
[stack:tid] (de Linux 3.4 à Linux 4.4)
Une pile de thread (où tid est un identifiant de thread). Cela correspond au chemin /proc/pid/task/tid/. Ce champ a été retiré dans Linux 4.5 puisque fournir cette information pour un processus avec un grand nombre de threads coûte cher.
[vdso]
L'objet virtuel partagé lié dynamiquement. Consulter vdso(7).
[heap]
Le tas du processus.
[anon:nom] (depuis Linux 5.17)
Un mappage nommé privé anonyme. Il est défini avec prctl(2) PR_SET_VMA_ANON_NAME.
[anon_shmem:nom] (depuis Linux 6.2)
Un mappage nommé partagé anonyme. Il est défini avec prctl(2) PR_SET_VMA_ANON_NAME.
Si le champ chemin est vide, c'est un mappage anonyme tel qu’obtenu à l’aide de la fonction mmap(2). Faire correspondre cela à une source de processus est compliqué, sauf en l'exécutant à l'aide de gdb(1), strace(1) ou similaire.
chemin est affiché littéralement sauf pour les caractères de nouvelle ligne qui sont remplacés par une séquence d’échappement octale. En conséquence, il n’est pas possible de savoir si le chemin d’origine contenait un caractère de nouvelle ligne ou la séquence de caractères littérale \012.
Si le mappage est une projection de fichier et que le fichier a été supprimé, la chaîne « (deleted) » est ajouté au chemin. Cela est aussi ambigu.
Sous Linux 2.0, aucun champ n'indique le chemin.
/proc/pid/mem
Ce fichier permet d'accéder aux pages de la mémoire d'un processus au travers de open(2), read(2) et lseek(2).
La permission d’accéder à ce fichier est régie par une vérification du mode d’accès ptrace PTRACE_MODE_ATTACH_FSCREDS ; consulter ptrace(2).
/proc/pid/mountinfo (depuis Linux 2.6.26)
Ce fichier contient des informations à propos des montages dans l’espace de noms montage du processus (consulter mount_namespaces(7)). Il fournit diverses informations (par exemple, l’état de propagation, la racine de montage des montages bind, les identifiants pour chaque montage et son parent) qui étaient absentes dans le (ancien) fichier /proc/pid/mounts, et corrige divers autres problèmes avec ce fichier (par exemple, la non extensibilité, l’impossibilité de distinguer entre les options par montage ou par superbloc).
Ce fichier contient des lignes de la forme suivante :
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 parenthèses sont des étiquettes pour les descriptions suivantes :
(1)
ID du montage : identifiant unique du montage (peut être réutilisé après un umount(2)).
(2)
ID du parent ID : identifiant du montage parent (ou de lui-même pour la racine de l’arbre de montage de l’espace de noms).
Si un nouveau montage est empilé sur un montage préexistant (cachant alors le montage préexistant) au chemin P, alors le parent du nouveau montage est le montage préexistant à cet endroit. Par conséquent, lors de l’examen de tous les montages empilés à un endroit particulier, le montage de plus haut niveau est celui qui n’est le parent d’aucun montage à cet endroit (il est à remarquer cependant que ce montage de plus haut niveau ne sera accessible que si le sous-préfixe le plus long de P qui est un point de montage n’est pas lui-même caché par un montage empilé).
Si le montage parent réside en dehors du répertoire racine du processus (consulter chroot(2)), l’ID montré ici n’aura pas un enregistrement correspondant dans mountinfo dont l’ID de montage (champ 1) correspond à l’ID du montage parent (parce que les montages qui résident en dehors du répertoire racine du processus ne sont pas montrés dans mountinfo). Comme cas spécial de ce point, le montage racine du processus peut avoir un montage parent (pour le système de fichiers initramfs) qui réside en dehors du répertoire racine du processus, et un enregistrement pour ce montage n’apparaîtra pas dans mountinfo.
(3)
majeur:mineur : valeur de st_dev pour les fichiers sur ce système de fichiers (consulter stat(2)).
(4)
racine : le chemin du répertoire dans le système de fichiers qui forme la racine de ce montage.
(5)
point de montage : point de montage relatif au répertoire racine du processus.
(6)
options de montage : options par montage (consulter mount(2)).
(7)
champs facultatifs : zéro ou plusieurs champs de la forme « étiquette[:valeur] » (voir ci-après).
(8)
séparateur : la fin des champs facultatifs est marquée par un tiret unique.
(9)
type de système de fichiers : type du système de fichiers de la forme « type[.soustype] ».
(10)
source du montage : informations spécifiques au système de fichiers ou « none ».
(11)
options super : options par superbloc (consulter mount(2)).
Actuellement, les champs facultatifs possibles sont shared, master, propagate_from et unbindable. Consulter mount_namespaces(7) pour leurs descriptions. Les analyseurs syntaxiques devraient ignorer tous les champs facultatifs non reconnus.
Pour plus d'informations sur les propagations de montage, consulter Documentation/filesystems/sharedsubtree.rst (ou Documentation/filesystems/sharedsubtree.txt avant Linux 5.8) dans l'arborescence des sources du noyau Linux.
/proc/pid/mounts (depuis Linux 2.4.19)
Ce fichier liste tous les systèmes de fichiers actuellement montés dans l’espace de noms montage du processus (consulter mount_namespaces(7)). Le format de ce fichier est documenté dans fstab(5).
Depuis Linux 2.6.15, ce fichier peut être consulté : après l’ouverture du fichier en lecture, une modification dans ce fichier (c’est-à-dire un montage ou démontage de système de fichiers) fait que select(2) marque le descripteur de fichier comme ayant une condition exceptionnelle, et poll(2) et epoll_wait(2) marquent le fichier comme ayant un évènement de priorité (POLLPRI) (avant Linux 2.6.30, une modification dans ce fichier était indiquée en marquant le descripteur de fichier comme lisible pour select(2) et comme ayant une condition d’erreur pour poll(2) et epoll_wait(2).)
/proc/pid/mountstats (depuis Linux 2.6.17)
Ce fichier exporte des informations (statistiques, configuration) relatives aux montages dans l'espace de noms montage du processus (consulter mount_namespaces(7)). Les lignes de ce fichier sont de la forme :

device /dev/sda7 mounted on /home with fstype ext3 [stats]
(       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/pid/net (depuis Linux 2.6.25)
Consulter la description de /proc/net.
/proc/pid/ns/ (depuis Linux 3.0)
Il s'agit d'un sous-répertoire contenant un enregistrement pour chaque espace de noms qui peut être manipulé avec setns(2). Pour plus de précisions, consulter namespaces(7).
/proc/pid/numa_maps (depuis Linux 2.6.14)
Consulter numa(7).
/proc/pid/oom_adj (depuis Linux 2.6.11)
Ce fichier permet d'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 valables sont dans l'intervalle de -16 à +15 plus la valeur spéciale -17, qui désactive complètement 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 parent. Un processus doit être privilégié (CAP_SYS_RESOURCE) pour mettre à jour ce fichier, bien qu’un processus puisse accroître son réglage de oom_adjust (depuis Linux 2.6.20).
Depuis Linux 2.6.36, l'utilisation de ce fichier est déconseillée en faveur de /proc/pid/oom_score_adj, et il a finalement été retiré dans Linux 3.7.
/proc/pid/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 est privilégié (-).
Avant Linux 2.6.36 les facteurs suivants étaient aussi utilisés dans le calcul de oom_score :
  • 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 effectue des accès matériel directs (-).
oom_score reflète également l'ajustement indiqué dans les réglages oom_score_adj ou oom_adj du processus.
/proc/pid/oom_score_adj (depuis Linux 2.6.36)
Ce fichier permet d'ajuster l'heuristique de mauvaise conduite (« badness ») utilisée pour sélectionner le processus qui sera tué dans une situation de mémoire saturée.
L'heuristique de mauvaise conduite assigne une valeur à chaque tâche candidate entre 0 (ne jamais tuer) et 1000 (toujours tuer) pour déterminer le processus ciblé. Les unités sont à peu près proportionnelles à la quantité de mémoire allouée dont le processus pourrait bénéficier, à partir de l'estimation de son utilisation actuelle de mémoire et d'espace d'échange. Par exemple si une tâche utilise toute la mémoire allouée, sa notation de mauvaise conduite sera 1000. S'il utilise la moitié de sa mémoire alloué, sa notation sera 500.
Un autre facteur est inclus dans la notation de mauvaise conduite : 3 % de mémoire supplémentaire est allouée aux processus du superutilisateur par rapport aux autres tâches.
La quantité de mémoire « permise » dépend du contexte dans lequel la mise à mort sur mémoire saturée a été effectuée. Si elle est causée par la saturation de mémoire assignée au cpuset de tâche allouant, la mémoire permise représente l'ensemble de mems (accès mémoire) assignés à ce cpuset (consulter cpuset(7)). Si elle est provoquée par la saturation de nœud(s) de mempolicy, la mémoire permise représente l'ensemble de nœuds de mempolicy. Si elle est due à l'atteinte d'une limite de mémoire (ou limite d'espace d'échange), la mémoire allouée est cette limite configurée. Enfin, si la cause est la saturation de mémoire du système complet, la mémoire permise représente toutes les ressources allouables.
La valeur de oom_score_adj est ajoutée à la notation de mauvaise conduite avant qu'elle ne soit utilisée pour déterminer la tâche à tuer. Les valeurs acceptables sont comprises entre -1000 (OOM_SCORE_ADJ_MIN) et +1000 (OOM_SCORE_ADJ_MAX). Cela permet à l'espace utilisateur de contrôler les préférences de mise à mort sur mémoire saturée, entre toujours préférer une tâche en particulier ou désactiver complètement la mise à mort sur mémoire saturée. La plus faible valeur possible, -1000, est équivalente à désactiver complètement la mise à mort sur mémoire saturée pour cette tâche, puisque la notation de mauvaise conduite sera toujours 0.
Par conséquent, il est trivial pour l'espace utilisateur de définir la quantité de mémoire à considérer pour chaque tâche. Configurer une valeur oom_score_adj de +500, par exemple, est à peu près équivalent à permettre au reste des tâches partageant les mêmes ressources du système, de cpuset, de mempolicy ou du contrôleur de mémoire d'utiliser au moins 50 % de mémoire en plus. Une valeur de -500, au contraire, serait à peu près équivalente à ne prendre en compte que la moitié de l'espace mémoire alloué à la tâche pour la notation contre cette tâche.
Pour des raisons de compatibilité ascendante avec les précédents noyaux, /proc/pid/oom_adj peut encore être utilisé pour ajuster la notation de mauvaise conduite. Sa valeur est mise à l'échelle linéairement avec oom_score_adj.
Écrire vers /proc/pid/oom_score_adj ou /proc/pid/oom_adj modifiera l'autre avec sa valeur mise à l'échelle.
Le programme choom(1) fournit une interface en ligne de commande pour ajuster la valeur de oom_score_adj d’un processus en cours d’exécution ou d’une commande nouvellement exécutée.
/proc/pid/pagemap (depuis Linux 2.6.25)
Ce fichier montre le mappage de chacune des pages virtuelles du processus dans les cadres de pages physiques ou de la zone d’échange (swap). Il contient une valeur de 64 bits pour chacune des pages virtuelles, avec les bits définis ainsi :
63
Si défini, la page est présente en RAM.
62
Si défini, la page est dans la zone d’échange.
61 (depuis Linux 3.5)
La page est une page mappée dans un fichier ou une page anonyme partagée.
60–58 (depuis Linux 3.11)
Zéro
57 (depuis Linux 5.14)
Si défini, la page est protégée en écriture à travers userfaultfd(2).
56 (depuis Linux 4.2)
La page est exclusivement mappée.
55 (depuis Linux 3.11)
PTE est « soft-dirty » (consulter le fichier des sources du noyau Documentation/admin-guide/mm/soft-dirty.rst).
54–0
Si la page est présente en RAM (bit 63), alors ces bits fournissent le numéro de cadre de page qui peut être utilisé pour indicer /proc/kpageflags et /proc/kpagecount. Si la page est présente en zone d’échange (bit 62), alors les bits 4–0 donnent le type de swap et les bits 54–5 encodent le décalage de swap.
Avant Linux 3.11, les bits 60–55 étaient utilisés pour encoder le log base 2 de la taille de page.
Pour utiliser /proc/pid/pagemap efficacement, il faut utiliser /proc/pid/maps pour déterminer quelles zones de mémoire sont réellement mappées et chercher à ignorer les régions non mappées.
Le fichier /proc/pid/smaps n'est présent que si l'option de configuration du noyau CONFIG_PROC_PAGE_MONITOR a été activée.
La permission d’accéder à ce fichier est régie par une vérification PTRACE_MODE_READ_FSCREDS de mode d’accès ptrace. Consulter ptrace(2).
/proc/pid/personality (depuis Linux 2.6.28)
Ce fichier en lecture seule expose le domaine d’exécution du processus comme défini par personality(2). La valeur est affichée en notation hexadécimale.
La permission d’accéder à ce fichier est régie par une vérification du mode d’accès ptrace PTRACE_MODE_ATTACH_FSCREDS ; consulter ptrace(2).
/proc/pid/root
UNIX et Linux gèrent une notion de racine du système de fichiers par processus, configurée avec l'appel système chroot(2). Ce fichier est un lien symbolique qui pointe vers le répertoire racine du processus, et se comporte de la même façon que exe et fd/*.
Il est cependant à remarquer que ce fichier n’est pas simplement un lien symbolique. Il fournit la même vue du système de fichiers (incluant les espaces de noms et l’ensemble des montages par processus) que le processus lui-même. Un exemple illustre ce point. Dans un terminal, démarrer un interpréteur de commandes dans des nouveaux espaces de noms utilisateur et montage, et dans cet interpréteur créer quelques nouveaux montages :

$ PS1='sh1# ' unshare -Urnm
sh1# mount -t tmpfs tmpfs /etc  # Montage d’un tmpfs vide à /etc
sh1# mount --bind /usr /dev     # Montage de /usr à /dev
sh1# echo $$
27123
    

Dans une seconde fenêtre de terminal, dans l’espace de noms initial montage, chercher le contenu des montages correspondants dans les espaces de noms initial et nouveau :

$ PS1='sh2# ' sudo sh
sh2# ls /etc | wc -l                  # Dans l’espace de noms initial
309
sh2# ls /proc/27123/root/etc | wc -l  # /etc dans un autre espace de noms
0                                     # Le répertoire vide tmpfs
sh2# ls /dev | wc -l                  # Dans l’espace de noms initial
205
sh2# ls /proc/27123/root/dev | wc -l  # /dev dans un autre espace de noms
11                                    # Réellement monté

# bind dans /usr sh2# ls /usr | wc -l # /usr dans l’espace de noms initial 11

Dans un traitement multiprocessus, le contenu du lien symbolique /proc/pid/root n'est pas disponible si le thread principal est déjà terminé (typiquement par un appel à pthread_exit(3).
La permission de déréférencer ou de lire (readlink(2)) ce lien symbolique est régie par une vérification du mode d’accès ptrace PTRACE_MODE_READ_FSCREDS ; consulter ptrace(2).
/proc/pid/projid_map (depuis Linux 3.7)
Consulter user_namespaces(7).
/proc/pid/seccomp (Linux 2.6.12 à Linux 2.6.22)
Ce fichier permet de lire et modifier le réglage du mode seccomp (secure computing) du processus. Il contient la valeur 0 si le processus n’est pas dans ce mode et 1 si le processus est dans le mode seccomp strict (consulter seccomp(2)). Écrire 1 dans ce fichier place le processus en mode seccomp strict de manière irréversible (des tentatives ultérieures d’écrire dans ce fichier échoueront avec l’erreur EPERM).
Dans Linux_2.6.23, ce fichier a disparu pour être remplacé par les opérations de prctl(2) PR_GET_SECCOMP et PR_SET_SECCOMP (et plus tard par seccomp(2) et le champ Seccomp dans /proc/pid/status).
/proc/pid/setgroups (depuis Linux 3.19)
Consulter user_namespaces(7).
/proc/pid/smaps (depuis Linux 2.6.14)
Ce fichier affiche la mémoire utilisée par chacun des mappages du processus (la commande pmap(1) affiche des informations similaires dans une forme plus propice à une analyse). Pour chacun des mappages, il y a une série de lignes telles que les suivantes :

00400000-0048a000 r-xp 00000000 fd:03 960637       /bin/bash
Size:                552 kB
Rss:                 460 kB
Pss:                 100 kB
Shared_Clean:        452 kB
Shared_Dirty:          0 kB
Private_Clean:         8 kB
Private_Dirty:         0 kB
Referenced:          460 kB
Anonymous:             0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Locked:                0 kB
ProtectionKey:         0
VmFlags: rd ex mr mw me dw
    

La première de ces lignes montre les mêmes informations que celles affichées pour le mappage dans /proc/pid/maps. Les lignes suivantes montrent la taille du mappage, la quantité de mappage actuellement résidente en mémoire vive (« Rss »), le partage équitable (« proportional share ») de ce mappage pour le processus (« Pss »), le nombre de pages partagées propres ou sales du mappage et le nombre de pages privées propres ou sales du mappage. « Referenced » indique la quantité de mémoire actuellement marquée comme référencée ou accédée. « Anonymous » montre la quantité de mémoire qui n’appartient à aucun fichier. « Swap » montre la quantité de mémoire aussi utilisée qui serait anonyme, mais est en espace d’échange.
L’entrée « KernelPageSize » (disponible depuis Linux 2.6.29) est la taille de page utilisée par le noyau pour sauvegarder une zone de mémoire virtuelle (VMA). Cela correspond à la taille utilisée par le MMU dans la majorité des cas. Cependant, un contre-exemple existe sur les noyaux PPC64 où un noyau utilisant 64 K comme taille de page de base pourrait encore utiliser 4 K pages pour le MMU sur les anciens processeurs. Pour différencier les deux attributs, la ligne « MMUPageSize » (disponible aussi depuis Linux 2.6.29) indique la taille de page utilisée par le MMU.
La ligne « Locked » indique si le mappage est verrouillée en mémoire.
La ligne « ProtectionKey » (disponible depuis Linux 4.9, sur x86 seulement) contient la clé de protection mémoire (consulter pkeys(7)) associée avec la zone de mémoire virtuelle. Cet enregistrement est présent seulement si le noyau a été construit avec l’option de configuration CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS (depuis Linux 4.6).
La ligne « VmFlags » (disponible depuis Linux 3.8) représente les attributs du noyau, associés à la zone de mémoire virtuelle, encodés en utilisant les codes de deux lettres suivants :
rd - accessible en lecture
wr - accessible en écriture
ex - exécutable
sh - partagé
mr - peut lire
mw - peut écrire
me - peut exécuter
ms - peut partager
gd - segment de pile diminue
pf - intervalle PFN pur
dw - écriture désactivée sur le fichier projeté
lo - pages verrouillées en mémoire
io - zone E/S mappée en mémoire
sr - avertissement de lecture séquentielle fourni
rr - avertissement de lecture aléatoire fourni
dc - ne pas copier la zone lors d’un fourchage
de - ne pas étendre la zone lors d’un remappage
ac - zone pouvant répondre (accountable)
nr - espace d’échange non réservé pour la zone
ht - zone utilisant des pages tlb volumineuses
sf - accès synchrone aux « page faults » (depuis Linux 4.15)
nl - mappage non linéaire (retiré dans Linux 4.0)
ar - drapeau spécifique à l'architecture
wf - effacement lors d’un fourchage (depuis Linux 4.14)
dd - ne pas inclure la zone lors d’un vidage mémoire
sd - drapeau soft-dirty (depuis Linux 3.13)
mm - zone de mappage mixte
hg - drapeau d’avertissement de page volumineuse
nh - drapeau d’avertissement de page non volumineuse
mg - drapeau d’avertissement de fusionnable
um - suivi d’userfaultfd de pages manquantes (depuis Linux 4.3)
uw - suivi d’userfaultfd de pages wprotect (depuis Linux 4.3)
Le fichier /proc/pid/smaps n'est présent que si l'option de configuration du noyau CONFIG_PROC_PAGE_MONITOR a été utilisée.
/proc/pid/stack (depuis Linux 2.6.29)
Ce fichier fournit une trace symbolique des appels de fonction dans cette pile noyau du processus. Ce fichier n'existe que si le noyau a été compilé avec l'option de configuration CONFIG_STACKTRACE.
La permission d’accéder à ce fichier est régie par une vérification du mode d’accès ptrace PTRACE_MODE_ATTACH_FSCREDS ; consulter ptrace(2).
/proc/pid/stat
Informations sur l'état du processus. Utilisé par ps(1). La définition se trouve dans fs/proc/array.c.
Les champs, dans l’ordre, avec leurs spécificateurs de format scanf(3), sont listés ci-après. Que certains de ces champs affichent une information valable ou non est régi par la vérification du mode d’accès ptrace PTRACE_MODE_READ_FSCREDS | PTRACE_MODE_NOAUDIT (consulter ptrace(2)). Si la vérification refuse l’accès, la valeur affichée est 0. Les champs affectés sont indiqués avec le marquage [PT].
(1) pid  %d

Identifiant du processus.
(2) comm  %s
Nom du fichier exécutable entre parenthèses. Les chaînes plus longues que TASK_COMM_LEN (16) caractères (y compris l’octet NULL final) sont silencieusement tronquées. Cela indique si l'exécutable a été déchargé sur l'espace d'échange (« swappé ») ou pas.
(3) state  %c
Un des caractères suivants, indiquant l’état du processus :
En cours d’exécution
Endormi avec attente interruptible
Attendant dans un sommeil de disque non interruptible
Zombie
Stoppé (par un signal) ou (avant Linux 2.6.33) trace stoppée
Suivi stoppé (depuis Linux 2.6.33)
Paging (seulement avant Linux 2.6.0)
Mort (depuis Linux 2.6.0)
Mort (Linux 2.6.33 à 3.13 seulement)
Wakekill (Linux 2.6.33 à 3.13 seulement)
Waking (Linux 2.6.33 à 3.13 seulement)
Parked (Linux 3.9 à 3.13 seulement)
Idle (à partir de Linux 4.14)
(4) ppid  %d
PID du parent du processus.
(5) pgrp  %d
Identifiant de groupe de processus du processus.
(6) session  %d
Identifiant de session du processus.
(7) tty_nr  %d
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 dans les bits 15 à 8).
(8) tpgid  %d
Identifiant du groupe de processus d'arrière-plan du terminal de contrôle du processus.
(9) flags  %u
Mot contenant les indicateurs du noyau pour le processus. Pour en savoir plus sur la signification des bits, consulter les définitions de PF_* dans le fichier include/linux/sched.hE des sources du noyau Linux. Les détails dépendent de la version du noyau.
Le format de ce champ était %lu avant Linux 2.6.
(10) minflt  %lu
Nombre de fautes mineures que le processus a déclenchées et qui n'ont pas nécessité le chargement d'une page mémoire depuis le disque.
(11) cminflt  %lu
Nombre de fautes mineures que les enfants en attente du processus ont déclenchées.
(12) majflt  %lu
Nombre de fautes majeures que le processus a déclenchées et qui ont nécessité un chargement de page mémoire depuis le disque.
(13) cmajflt  %lu
Nombre de fautes majeures que les enfants en attente du processus ont déclenchées.
(14) utime  %lu
Temps passé en mode utilisateur par le processus, mesuré en top d'horloge (divisé par sysconf(_SC_CLK_TCK)). Cela comprend le temps de client, 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 de client » ne perdent pas ce temps dans leurs calculs.
(15) stime  %lu
Temps passé en mode noyau par le processus, mesuré en top d'horloge (divisé par sysconf(_SC_CLK_TCK)).
(16) cutime  %ld
Temps passé en mode utilisateur par les enfants attendant le processus, mesuré en top d'horloge (divisé par sysconf(_SC_CLK_TCK)). Consulter aussi times(2)). Cela comprend le temps de client, cguest_time (temps passé à exécuter un processeur virtuel, voir plus loin).
(17) cstime  %ld
Temps passé en mode noyau par les enfants attendant le processus, mesuré en top d'horloge (divisé par sysconf(_SC_CLK_TCK)).
(18) priority  %ld
(Explications pour Linux 2.6) Pour les processus s'exécutant sous une politique d'ordonnancement 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'ordonnancement 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 nombres dans 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.
(19) nice  %ld
Valeur de courtoisie (consulter setpriority(2)), une valeur dans l'intervalle 19 (faible priorité) à -19 (haute priorité).
(20) num_threads  %ld
Nombre de threads dans ce processus (depuis Linux 2.6). Avant le noyau 2.6, ce champ était codé en dur à 0 pour remplacer un champ supprimé auparavant.
(21) itrealvalue  %ld
Nombre de jiffies avant que le signal SIGALRM suivant soit envoyé au processus par un temporisateur interne. Depuis le noyau 2.6.17, ce champ n'est plus maintenu et est codé en dur à 0.
(22) starttime  %llu
Moment auquel le processus a démarré après le démarrage du système. Exprimé en jiffies avant le noyau 2.6, il est désormais exprimé en top d'horloge (divisé par sysconf(_SC_CLK_TCK)).
Le format de ce champ était %lu avant Linux 2.6.
(23) vsize  %lu
Taille de la mémoire virtuelle en octets.
(24) rss  %ld
Taille de l'ensemble résident (Resident Set Size) : nombre de pages dont le processus dispose en mémoire réelle. Il ne s'agit que des pages contenant les espaces de code, données et pile. Cela n'inclut ni les pages en attente de chargement ni celles qui ont été déchargées. Cette valeur est imprécise, consulter /proc/pid/statm ci-après.
(25) rsslim  %lu
Limite souple actuelle en octets du RSS du processus ; consulter la description de RLIMIT_RSS dans getrlimit(2).
(26) startcode  %lu  [PT]
Adresse au-dessus de laquelle le code du programme peut s'exécuter.
(27) endcode  %lu  [PT]
Adresse au-dessous de laquelle le code du programme peut s'exécuter.
(28) startstack  %lu  [PT]
Adresse de début (c'est-à-dire le bas) de la pile.
(29) kstkesp  %lu  [PT]
Valeur actuelle du pointeur de pile (ESP), telle qu'on la trouve dans la page de pile du noyau pour ce processus.
(30) kstkeip  %lu  [PT]
EIP actuel (pointeur d'instructions).
(31) signal  %lu
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. Utiliser plutôt /proc/pid/status.
(32) blocked  %lu
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. Utiliser plutôt /proc/pid/status.
(33) sigignore  %lu
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. Utiliser plutôt /proc/pid/status.
(34) sigcatch  %lu
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. Utiliser plutôt /proc/pidstatus.
(35) wchan  %lu  [PT]
« Canal » sur lequel le processus est en attente. C'est l'adresse d’un endroit dans le noyau où le processus est endormi. Le nom symbolique correspondant est dans /proc/pid/wchan.
(36) nswap  %lu
Nombre de pages déplacées sur l'espace d'échange (non maintenu).
(37) cnswap  %lu
Champ nswap cumulé pour les processus enfant (non maintenu).
(38) exit_signal  %d  (depuis Linux 2.1.22)
Signal à envoyer au parent lors de la mort du processus.
(39) processor  %d  (depuis Linux 2.2.8)
Numéro du processeur utilisé lors de la dernière exécution.
(40) rt_priority  %u  (depuis Linux 2.5.19)
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 (consulter sched_setscheduler(2)).
(41) policy  %u  (depuis Linux 2.5.19)
Politique d'ordonnancement (consulter sched_setscheduler(2)). Décoder avec les constantes SCHED_* de linux/sched.h.
Le format de ce champ était %lu avant Linux 2.6.22.
(42) delayacct_blkio_ticks  %llu  (depuis Linux 2.6.18)
Cumul des délais d'entrées et sorties, mesuré en top horloge (centième de seconde).
(43) guest_time  %lu  (depuis Linux 2.6.24)
Temps de client du processus (temps passé à exécuter un processeur virtuel pour un système d'exploitation client), mesuré en top d'horloge (divisé par sysconf(_SC_CLK_TCK)).
(44) cguest_time  %ld  (depuis Linux 2.6.24)
Temps de client des enfants du processus, mesuré en top d'horloge (divisé par sysconf(_SC_CLK_TCK)).
(45) start_data  %lu  (depuis Linux 3.3)  [PT]
Adresse au-dessus de laquelle des données (BSS) initialisées ou non sont placées.
(46) end_data  %lu  (depuis Linux 3.3)  [PT]
Adresse en dessous de laquelle des données (BSS) initialisées ou non sont placées.
(47) start_brk  %lu  (depuis Linux 3.3)  [PT]
Adresse au-dessus de laquelle le tas du programme peut être étendu avec brk(2).
(48) arg_start  %lu  (depuis Linux 3.5)  [PT]
Adresse au-dessus de laquelle les arguments de ligne de commande (argv) sont placés.
(49) arg_end  %lu  (depuis Linux 3.5)  [PT]
Adresse en dessous de laquelle les arguments de ligne de commande (argv) sont placés.
(50) env_start  %lu  (depuis Linux 3.5)  [PT]
Adresse au-dessus de laquelle l’environnement du programme est placé.
(51) env_end  %lu  (depuis Linux 3.5)  [PT]
Adresse en dessous de laquelle l’environnement du programme est placé.
(52) exit_code  %d  (depuis Linux 3.5)  [PT]
Le code de retour du thread dans la forme rapportée par waitpid(2).
/proc/pid/statm
Informations sur l'utilisation de la mémoire, mesurée en pages. Les colonnes représentent :

size       (1) taille totale du programme

(comme pour VmSize dans /proc/pidstatus) resident (2) taille résidant en mémoire
(non précis ; comme pour VmRSS dans /proc/pid/status) share (3) nombre de pages partagées résidentes
(c'est-à-dire sauvegardées dans un fichier)
(non précis ; comme pour RssFile+RssShmem dans
/proc/pid/status) text (4) texte (code) lib (5) bibliothèque (inutilisé dans Linux 2.6) ; toujours 0 data (6) données et pile dt (7) pages sales (inutilisé dans Linux 2.6) ; toujours 0

Certaines de ces valeurs sont imprécises à cause de l’optimisation d’échelle interne au noyau. Si des valeurs précises sont nécessaires, il est préférable d'utiliser /proc/pid/smaps ou /proc/pid/smaps_rollup, ce qui est plus lent, mais fournit des informations détaillées précises.
/proc/pid/status
Essentiel des informations de /proc/pid/stat et /proc/pid/statm dans un format plus facile à lire pour les humains. Voici un exemple :

$ cat /proc/$$/status
Name:   bash
Umask:  0022
State:  S (sleeping)
Tgid:   17248
Ngid:   0
Pid:    17248
PPid:   17200
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    100     100     100     100
FDSize: 256
Groups: 16 33 100
NStgid: 17248
NSpid:  17248
NSpgid: 17248
NSsid:  17200
VmPeak:	  131168 kB
VmSize:	  131168 kB
VmLck:	       0 kB
VmPin:	       0 kB
VmHWM:	   13484 kB
VmRSS:	   13484 kB
RssAnon:	   10264 kB
RssFile:	    3220 kB
RssShmem:	       0 kB
VmData:	   10332 kB
VmStk:	     136 kB
VmExe:	     992 kB
VmLib:	    2104 kB
VmPTE:	      76 kB
VmPMD:	      12 kB
VmSwap:	       0 kB
HugetlbPages:          0 kB		# 4.4
CoreDumping:	0                       # 4.15
Threads:        1
SigQ:   0/3067
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
CapAmb:	0000000000000000
NoNewPrivs:     0
Seccomp:        0
Speculation_Store_Bypass:       vulnerable
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 :
Commande exécutée par ce processus. Les chaînes plus longues que TASK_COMM_LEN (16) caractères (incluant l’octet NULL final) sont silencieusement tronquées.
umask du processus, exprimé en octal avec un zéro en tête (depuis Linux 4.7.). Consulter umask(2).
État actuel du processus parmi les valeurs : « R (running) », « S (sleeping) », « D (disk sleep) », « T (stopped) », « T (tracing stop) », « Z (zombie) » ou « X (dead) ».
ID du groupe de threads (c'est-à-dire ID du processus).
ID de groupe NUMA (0 si absent ; depuis Linux 3.13).
ID de thread (consulter gettid(2)).
PID du processus parent.
PID du processus traçant ce processus (0 s'il n'est pas tracé).
Ensemble des UID (GID) réel, effectif, sauvé et de système de fichiers.
Nombre de slots de descripteurs de fichier actuellement alloués.
Liste des groupes supplémentaires.
ID de groupe de threads (c’est-à-dire PID) dans chacun des espaces de noms PID dont pid est membre. L’enregistrement le plus à gauche affiche la valeur selon l’espace de noms PID du processus ayant monté ce procfs (ou l’espace de noms root si monté par le noyau), suivi de la valeur dans les espaces de noms imbriqués successifs (depuis Linux 4.1).
ID de thread dans chaque espace de noms PID dont pid est membre. Les champs sont ordonnés comme pour NStgid (depuis Linux 4.1).
ID de groupe de processus dans chaque espace de noms PID dont pid est membre. Les champs sont ordonnés comme pour NStgid (depuis Linux 4.1)x
ID de session dans chaque espace de noms PID dont pid est membre. Les champs sont ordonnés comme pour NStgid (depuis Linux 4.1.)
Taille de pic de mémoire virtuelle.
Taille de la mémoire virtuelle.
Taille de mémoire verrouillée (consulter mlock(3)).
Taille de mémoire épinglée (depuis Linux 3.2). Ce sont des pages qui ne peuvent être déplacées parce que quelque chose a besoin d’accéder directement à la mémoire physique.
Taille de pic d’ensemble résident (« high water mark »). Cette valeur est imprécise, consulter /proc/pid/statm ci-dessus.
Taille d’ensemble résident. Il est à remarquer que cette valeur ici est la somme de RssAnon, RssFile et RssShmem. Cette valeur est imprécise, consulter /proc/pid/statm ci-dessus.
Taille de la mémoire anonyme résidente (depuis Linux 4.5). Cette valeur est imprécise, consulter /proc/pid/statm ci-dessus.
Taille des mappages résidents de fichier (depuis Linux 4.5). Cette valeur est imprécise, consulter /proc/pid/statm ci-dessus.
Taille de la mémoire résidente partagée (inclut la mémoire partagée de System V, les mappages de tmpfs(5) et les mappages partagés anonymes) (depuis Linux 4.5).
Taille des données, de pile et des segments de texte. Cette valeur est imprécise, consulter /proc/pid/statm ci-dessus.
Taille du code de bibliothèque partagée.
Taille des enregistrements de table de pages (depuis Linux 2.6.10).
Taille des tables de pages de second niveau (ajouté dans Linux 4.0, retiré dans Linux 4.15).
Taille de mémoire virtuelle mise en espace d’échange par des pages privées anonymes. L’utilisation d’espace d’échange n’est pas incluse (depuis Linux 2.6.34). Cette valeur est imprécise, consulter /proc/pid/statm ci-dessus.
Taille des sections de mémoire hugetlb (depuis Linux 4.4).
Ce champ contient la valeur 1 si le processus réalise actuellement un cliché du système et 0 dans le cas contraire (depuis Linux 4.15). Cette information peut être utilisée par un processus de supervision pour éviter de tuer un processus réalisant actuellement un cliché, ce qui pourrait aboutir à la corruption du fichier de cliché.
Nombre de threads dans le processus contenant ce thread.
Ce champ contient deux nombres séparés par une barre oblique, qui se réfèrent aux signaux en attente pour l'identifiant d'utilisateur réel de ce processus. Le premier est le nombre de signaux en attente pour cet identifiant d'utilisateur réel ; le second est la limite du nombre de signaux pouvant être mis en attente pour ce processus (consulter la description de RLIMIT_SIGPENDING dans getrlimit(2)).
Masque (en hexadécimal) de signaux en attente pour le thread et pour le processus dans son ensemble (consulter pthreads(7) et signal(7)).
Masques (en hexadécimal) indiquant les signaux bloqués, ignorés et interceptés (consulter signal(7)).
Masques (en hexadécimal) des capacités actives dans les ensembles héritables permis et effectifs (consulter capabilities(7)).
Ensemble des limitations de capacité en hexadécimal (depuis Linux 2.6.26, consulter capabilities(7)).
Ensemble ambiant des capacités en hexadécimal (depuis Linux 4.3, consulter capabilities(7)).
Valeur du bit no_new_privs (depuis Linux 4.10, consulter prctl(2)).
Mode seccomp du processus (depuis Linux 3.8, consulter seccomp(2)). 0 signifie SECCOMP_MODE_DISABLED, 1 SECCOMP_MODE_STRICT, 2 SECCOMP_MODE_FILTER. Ce champ est fourni seulement si le noyau a été construit avec l’option de configuration CONFIG_SECCOMP activée.
État de mitigation du défaut « Speculation » (depuis Linux 4.17, consulter prctl(2)).
Masque en hexadécimal des processeurs sur lesquels le processus peut s'exécuter (depuis Linux 2.6.24, consulter cpuset(7)).
Pareil que précédemment, mais au format liste (depuis Linux 2.6.26, consulter cpuset(7)).
Masque des nœuds mémoire autorisés pour ce processus (depuis Linux 2.6.24, consulter cpuset(7)).
Pareil que précédemment, mais au format liste (depuis Linux 2.6.26, consulter cpuset(7)).
Nombre de basculements de contexte, volontaires ou non (depuis Linux 2.6.23).
/proc/pid/syscall (depuis Linux 2.6.27)
Ce fichier expose les numéros d'appel système et les registres d’argument pour l'appel système en cours d’exécution par le processus, suivis des valeurs des registres de pointeur de pile et de compteur de programme. Les valeurs des six registres d’argument sont exposées, bien que la plupart des appels système en utilisent moins.
Si le processus est bloqué, mais pas dans un appel système, alors le fichier affiche -1 à la place du numéro d’appel système, suivi seulement des valeurs du pointeur de pile et du compteur de programme. Si le processus n’est pas bloqué, le fichier ne contient que la chaîne « running ».
Ce fichier n'est présent que si le noyau a été configuré avec l'option CONFIG_HAVE_ARCH_TRACEHOOK.
La permission d’accéder à ce fichier est régie par une vérification du mode d’accès ptrace PTRACE_MODE_ATTACH_FSCREDS ; consulter ptrace(2).
/proc/pid/task (depuis Linux 2.6.0)
C’est un répertoire contenant un sous-répertoire pour chaque thread du processus. Le nom de chaque sous-répertoire est l’ID numérique de thread (tid) du thread (consulter gettid(2)).
Dans chacun de ces sous-répertoires se trouve un ensemble de fichiers ayant les mêmes noms et contenus que ceux des répertoires /proc/pid. Pour les attributs qui sont partagés par tous les processus, le contenu de chacun des fichiers se trouvant dans le sous-répertoire task/tid sera identique à celui correspondant dans le répertoire parent /proc/pid (par exemple, pour une tâche multiprocessus, tous les fichiers task/tid/cwd auront le même contenu que le fichier /proc/pid/cwd dans le répertoire parent, puisque tous les threads d'un processus partagent le même répertoire de travail). Pour les attributs qui sont distincts pour chacun des threads, les fichiers correspondants sous task/tid peuvent être différents (par exemple, certains champs de chacun de fichiers task/tid/status peuvent être différents pour chaque thread) ou peuvent ne pas exister du tout dans proc/pid.
Dans un traitement multiprocessus, le contenu du répertoire /proc/pid/task n'est pas disponible si le processus principal est déjà terminé (typiquement lors de l'appel pthread_exit(3)).
/proc/pid/task/tid/children (depuis Linux 3.5)
C’est une liste de tâches enfant séparées par des espaces, chaque tâche étant représentée par son TID.
Cette option est destinée à une utilisation pour le système CRIU (Checkpoint/Restore In Userspace) et fournit de manière fiable une liste d’enfant seulement si tous les processus enfant sont stoppés ou gelés. Cela ne fonctionne pas correctement si l’enfant de la tâche cible s’arrête tandis que le fichier est en cours de lecture ! L’enfant quittant peut faire que les enfants non quittant soient omis de la liste. Cela rend cette interface encore moins fiable que les approches classiques basées sur les PID si la tâche inspectée et ses enfants ne sont pas gelés, et la plupart des codes n’utiliseront probablement pas cette interface.
Jusqu’à Linux 4.2, la présence de ce fichier était régie par l’option de configuration du noyau CONFIG_CHECKPOINT_RESTORE. Depuis Linux 4.2, elle est régie par l’option CONFIG_PROC_CHILDREN.
/proc/pid/timers (depuis Linux 3.10)
C’est une liste des temporisateurs POSIX pour ce processus. Chaque temporisateur est indiqué par une ligne commençant par la chaîne « ID: ». Par exemple :

ID: 1
signal: 60/00007fff86e452a8
notify: signal/pid.2634
ClockID: 0
ID: 0
signal: 60/00007fff86e452a8
notify: signal/pid.2634
ClockID: 1
    

Les lignes montrées pour chaque temporisateur ont les significations suivantes :
L’identifiant de ce temporisateur. Ce n’est pas la même chose que l’identifiant de temporisateur renvoyé par timer_create(2). C’est plutôt le même identifiant interne au noyau qui est disponible à l’aide du champ si_timerid de la structure siginfo_t (consulter sigaction(2)).
C’est le numéro du signal que ce temporisateur utilise pour délivrer les notifications, suivi d’une barre oblique et de la valeur sigev_value fournie au gestionnaire de signal. Valable uniquement pour les temporisateurs qui notifient à l’aide d’un signal.
La partie qui précède la barre oblique indique le mécanisme que ce temporisateur utilise pour délivrer des notifications, à savoir « thread », « signal » ou « none ». Directement après la barre oblique, c’est soit la chaîne « tid » pour les temporisateurs avec notification SIGEV_THREAD_ID, soit « pid » pour les temporisateurs qui notifient avec d’autres mécanismes. Après le « . », c’est le PID du processus (ou l’ID de thread du noyau du thread) auquel un signal sera délivré si le temporisateur délivre les notifications à l’aide d’un signal.
Ce champ identifie l’horloge utilisée par le temporisateur pour mesurer le temps. Pour la plupart des horloges, c’est un nombre qui correspond à une des constantes CLOCK_* exposées en espace utilisateur à l’aide de <time.h>. Les temporisateurs CLOCK_PROCESS_CPUTIME_ID affichent la valeur -6 dans ce champ. Les temporisateurs CLOCK_THREAD_CPUTIME_ID affichent la valeur -2 dans ce champ.
Ce fichier n'est disponible que si le noyau a été configuré avec l'option CONFIG_CHECKPOINT_RESTORE.
/proc/pid/timerslack_ns (depuis Linux 4.6)
Ce fichier expose la valeur du délai des temporisateurs « actuelle »,exprimée en nanosecondes. Le fichier est éditable, permettant de modifier cette valeur. Inscrire 0 réinitialise la valeur du délai « actuelle » à celle par défaut. Pour davantage de détails, consulter l’explication de PR_SET_TIMERSLACK dans prctl(2).
Initialement la permission d’accéder à ce fichier était régie par une vérification du mode d’accès ptrace PTRACE_MODE_ATTACH_FSCREDS (consulter ptrace(2)). Cependant, cela a été jugé ultérieurement trop strict (et avait l’effet de bord que requérir qu’un processus ait la capacité CAP_SYS_PTRACE l’autoriserait à voir et à modifier n’importe quelle mémoire du processus). Par conséquent, depuis Linux 4.9, seule la capacité (plus faible) CAP_SYS_NICE est requise pour accéder à ce fichier.
/proc/pid/uid_map (depuis Linux 3.5)
Consulter user_namespaces(7).
/proc/pid/wchan (depuis Linux 2.6.0)
Le nom symbolique correspondant à l’endroit dans le noyau où le processus est endormi.
La permission d’accéder à ce fichier est régie par une vérification PTRACE_MODE_READ_FSCREDS de mode d’accès ptrace. Consulter ptrace(2).
/proc/tid
Un sous-répertoire numérique existe pour chaque thread en cours d’exécution qui n’est pas un leader de groupe de threads (c’est-à-dire un thread dont l’ID de thread n’est pas le même que celui son ID de processus). Ce sous-répertoire est nommé selon son ID de thread. Chacun de ces sous-répertoires contient des fichiers et des sous-répertoires exposant des informations à propos du thread ayant l’ID de thread tid. Le contenu de ces répertoires est le même que les répertoires /proc/pid/task/tid correspondants.
Les sous-répertoires /proc/tid ne sont pas visibles lors d’une itération à travers /proc avec getdents(2) (et par conséquent ne sont pas visibles lors d’une utilisation de ls(1) pour voir le contenu de /proc). Cependant, les chemins de ces répertoires sont visibles (c’est-à-dire utilisables comme arguments) pour les appels système qui opèrent sur des chemins.
/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 est définie à la compilation du noyau.
/proc/buddyinfo
Ce fichier contient des informations qui sont utilisées pour le diagnostic de problèmes de fragmentation de mémoire. Chaque ligne commence avec l’identification du nœud et le nom de la zone qui ensemble identifient la région de mémoire. Vient ensuite le compte de blocs (chunks) disponibles d’un certain ordre dans lesquels ces zones sont fragmentées. La taille en octets d’un certain ordre est donnée par la formule :

(2^ordre) * PAGE_SIZE
    

L’algorithme binaire d’allocation du compagnon (« binary buddy allocator algorithm ») à l’intérieur du noyau divisera un bloc en deux blocs d’ordre plus petit (par conséquent de taille moitié) ou combinera deux blocs contigus en un bloc d’ordre plus grand (par conséquent de taille double) pour satisfaire les requêtes d’allocation et pour compter la fragmentation de mémoire. L’ordre correspond au numéro de colonne lors d’un comptage commençant à zéro.
Par exemple, sur un système x86-64 ::
Node 0, zone     DMA     1    1    1    0    2    1    1    0    1    1    3
Node 0, zone   DMA32    65   47    4   81   52   28   13   10    5    1  404
Node 0, zone  Normal   216   55  189  101   84   38   37   27    5    3  587
Dans cet exemple, il y a un nœud contenant trois zones et il y a 11 tailles différentes de bloc. Si la taille de page est de 4 kilooctets, la première zone appelée DMA (sur x86, les 16 premiers mégaoctets de mémoire) possède 1 bloc de 4 kilooctets (ordre 0) disponible et 3 blocs de 4 mégaoctets (ordre 10) disponibles.
Si la mémoire est intensément fragmentée, les compteurs pour des blocs d’ordre plus élevé seront à zéro et l’allocation de grandes zones continues échouera.
Plus d’information sur les zones sont disponibles dans /proc/zoneinfo.
/proc/bus
Répertoire contenant 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
Ce répertoire contient divers sous-répertoires de bus, et des pseudofichiers recelant des informations sur les bus PCI, les périphériques installés et leurs pilotes. Certains de ces fichiers ne sont pas en ASCII.
/proc/bus/pci/devices
Informations sur les périphériques PCI. Elles sont accessibles à l'aide de lspci(8) et setpci(8).
/proc/cgroups (depuis Linux 2.6.24)
Consulter cgroups(7).
/proc/cmdline
Arguments passés au noyau Linux lors de l’amorçage. Cela se fait généralement par l'intermédiaire d'un gestionnaire d’amorçage comme lilo(8) ou grub(8). Tout argument incorporé dans l’image du noyau ou initramfs à l’aide de CONFIG_BOOT_CONFIG sera aussi affiché.
/proc/config.gz (depuis Linux 2.6)
Ce fichier indique les options de configuration qui ont été utilisées pour construire le noyau actuel, dans le même format que celui utilisé pour le fichier .config résultant de la configuration du noyau (en utilisant make xconfig, make config ou autre). Le contenu du fichier est compressé ; parcourez-le ou effectuez des recherches avec zcat(1) et zgrep(1). Tant qu'il n'y a pas de changement dans les fichiers qui suivent, le contenu de /proc/config.gz est identique à celui fourni par :

cat /lib/modules/$(uname -r)/build/.config
    

/proc/config.gz n'est fourni que si le noyau est configuré avec l'option CONFIG_IKCONFIG_PROC.
/proc/crypto
Liste des chiffrements fournis par l’API crypto du noyau. Pour des détails, consulter la documentation Linux Kernel Crypto API du noyau disponible dans le répertoire des sources du noyau Documentation/crypto/ (ou Documentation/DocBook avant Linux 4.10. La documentation peut être construite en utilisant une commande telle que make htmldocs dans le répertoire racine de l’arbre des sources du noyau).
/proc/cpuinfo
Il s'agit d’une collection d'informations dépendantes de l'architecture du système et du processeur, une liste différente pour chaque architecture prise en charge. Les deux enregistrements communs 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 des informations pour chaque processeur. La commande lscpu(1) récupère ses informations depuis ce fichier.
/proc/devices
Liste littérale des groupes de périphériques et des numéros majeurs. Cela 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 et sorties du disque pour chaque périphérique disque. Consultez le fichier des sources du noyau Linux Documentation/admin-guide/iostats.rst (ou Documentation/iostats.txt avant Linux 5.3) pour plus d'informations.
/proc/dma
Liste des canaux DMA (Direct Memory Acess) ISA enregistrés en cours d'utilisation.
/proc/driver
Sous-répertoire vide.
/proc/execdomains
Avant Linux 4.1, liste de « personality » d’ABI, maintenant une chaîne constante pour la compatibilité en espace utilisateur.
/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
Liste textuelle des systèmes de fichiers qui sont pris en charge par le noyau, c'est-à-dire les systèmes de fichiers qui ont été compilés dans le noyau ou dont les modules du noyau sont actuellement chargés (consulter aussi filesystems(5)). Si un système de fichiers est marqué par « nodev », cela signifie qu'il n'a pas besoin d'un périphérique bloc pour être monté (par exemple un système de fichiers virtuel, un système de fichiers réseau).
Ce fichier peut éventuellement être utilisé par mount(8) lorsqu'aucun système de fichiers n'est indiqué et qu'il n'arrive pas à déterminer le type du système de fichiers. Alors, les systèmes de fichiers que comporte ce fichier sont essayés (à l'exception de ceux qui sont marqués par « nodev »).
/proc/fs
Ce répertoire contient des sous-répertoires qui contiennent à leur tour des fichiers contenant des informations sur certains systèmes de fichiers montés.
/proc/ide
Ce répertoire existe sur les systèmes ayant un bus IDE. Il existe des répertoires pour chaque canal IDE et le périphérique attaché. 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 média
model              référence du modèle du fabricant
settings           configuration de périphérique
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
Enregistrement du nombre d'interruptions par CPU et par périphérique d'entrées et sorties. Depuis Linux 2.6.24, pour les architectures i386 et x86_64, au moins, il comprend également les interruptions internes au système (c'est-à-dire pas directement attachées à un périphérique), comme les NMI (« nonmaskable interrupt », interruption non masquable), LOC (« local timer interrupt », interruption de temporisateur local), et pour les systèmes SMP, TLB (« TLB flush interrupt »), RES (« rescheduling interrupt »), CAL (« remote function call interrupt ») et peut-être d'autres. Le format est en ASCII et est très facile à lire.
/proc/iomem
Mappage des entrées et sorties en mémoire dans Linux 2.4.
/proc/ioports
Liste des régions de port d’E/S autorisées 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. Dans Linux 2.5.47 et précédents, 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 core ELF. À l'aide de ce pseudofichier et d'un binaire du noyau non dépouillé (unstrip) (/usr/src/linux/vmlinux), gdb peut être utilisé pour inspecter l'état en cours 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 Kio.
/proc/keys (depuis Linux 2.6.10)
Consulter keyrings(7).
/proc/key-users (depuis Linux 2.6.10)
Consulter keyrings(7).
/proc/kmsg
Ce fichier peut être utilisé à la place de l'appel système syslog(2) pour lire les messages du noyau. Un processus doit avoir les privilèges du superutilisateur pour lire ce fichier, et un seul processus devrait le lire. Ce fichier ne devrait pas être lu si un processus syslog en cours d’exécution utilise l'appel système syslog(2) pour journaliser les messages du noyau.
Les informations de ce fichier sont récupérées à l’aide du programme dmesg(1).
/proc/kpagecgroup (depuis Linux 4.3)
Ce fichier contient un numéro d’inœud en 64 bits du cgroup de mémoire dans lequel chaque page est chargée, indexé par un numéro de trame de pages (consulter les explications de /proc/pid/pagemap).
Le fichier /proc/kpagecgroup n'est présent que si l'option de configuration du noyau CONFIG_MEMCG a été activée.
/proc/kpagecount (depuis Linux 2.6.25)
Ce fichier contient un décompte en 64 bits du nombre de fois que chaque trame de pages physique est mappée, indexé par un numéro de trame de pages (consulter les explications de /proc/pid/pagemap).
Le fichier /proc/kpagecount n'est présent que si l'option de configuration du noyau CONFIG_PROC_PAGE_MONITOR a été activée.
/proc/kpageflags (depuis Linux 2.6.25)
Ce fichier contient des masques en 64 bits correspondant à chaque trame de pages physique, indexés par un numéro de trame de pages (consulter les explications de /proc/pid/pagemap). Les bits sont les suivants :
0 - KPF_LOCKED
1 - KPF_ERROR
2 - KPF_REFERENCED
3 - KPF_UPTODATE
4 - KPF_DIRTY
5 - KPF_LRU
6 - KPF_ACTIVE
7 - KPF_SLAB
8 - KPF_WRITEBACK
9 - KPF_RECLAIM
10 - KPF_BUDDY
11 - KPF_MMAP (depuis Linux 2.6.31)
12 - KPF_ANON (depuis Linux 2.6.31)
13 - KPF_SWAPCACHE (depuis Linux 2.6.31)
14 - KPF_SWAPBACKED (depuis Linux 2.6.31)
15 - KPF_COMPOUND_HEAD (depuis Linux 2.6.31)
16 - KPF_COMPOUND_TAIL (depuis Linux 2.6.31)
17 - KPF_HUGE (depuis Linux 2.6.31)
18 - KPF_UNEVICTABLE (depuis Linux 2.6.31)
19 - KPF_HWPOISON (depuis Linux 2.6.31)
20 - KPF_NOPAGE (depuis Linux 2.6.31)
21 - KPF_KSM (depuis Linux 2.6.32)
22 - KPF_THP (depuis Linux 3.4)
23 - KPF_BALLOON (depuis Linux 3.18)
24 - KPF_ZERO_PAGE (depuis Linux 4.0)
25 - KPF_IDLE (depuis Linux 4.3)
26 - KPF_PGTABLE (depuis Linux 4.18)
Pour de plus amples détails sur la signification de ces bits, consulter le fichier Documentation/admin-guide/mm/pagemap.rst des sources du noyau. Avant Linux 2.6.29, KPF_WRITEBACK, KPF_RECLAIM, KPF_BUDDY et KPF_LOCKED ne fournissaient pas d'informations correctes.
Le fichier /proc/kpageflags n'est présent que si l'option de configuration du noyau CONFIG_PROC_PAGE_MONITOR a été activée.
/proc/ksyms (Linux 1.1.23–2.5.47)
Consulter /proc/kallsyms.
/proc/loadavg
Les trois premiers champs de ce fichier sont des valeurs de charge moyenne donnant le nombre de travaux dans la file d'exécution (état R) ou en attente d'E/S disque (état D) moyennées sur 1, 5 ou 15 minutes. Ils sont identiques aux valeurs de charge moyenne données par uptime(1) et d'autres programmes. Le quatrième champ est constitué de deux nombres séparés par une barre oblique (/). Le premier d'entre eux est le nombre d'entités d'ordonnancement du noyau (tâches, processus) actuellement exécutables. La valeur qui suit la barre oblique est le nombre d'entités d'ordonnancement du noyau qui existent actuellement sur le système. Le cinquième champ est le PID du processus le plus récemment créé sur le système.
/proc/locks
Ce fichier montre les verrouillages actuels des fichiers (flock(2) et fcntl(2)) et les baux (fcntl(2)).
Un exemple du contenu affiché dans ce fichier est le suivant :

1: POSIX  ADVISORY  READ  5433 08:01:7864448 128 128
2: FLOCK  ADVISORY  WRITE 2001 08:01:7864554 0 EOF
3: FLOCK  ADVISORY  WRITE 1568 00:2f:32388 0 EOF
4: POSIX  ADVISORY  WRITE 699 00:16:28457 0 EOF
5: POSIX  ADVISORY  WRITE 764 00:16:21448 0 0
6: POSIX  ADVISORY  READ  3548 08:01:7867240 1 1
7: POSIX  ADVISORY  READ  3548 08:01:7865567 1826 2335
8: OFDLCK ADVISORY  WRITE -1 08:01:8713209 128 191
    

Les champs affichés dans chaque ligne sont les suivants :
[1]
La position ordinale du verrou dans la liste.
[2]
Le type de verrou. Les valeurs pouvant apparaitre ici comprennent :
C’est un verrou BSD de fichier créé en utilisant flock(2).
C’est un verrou OFD (open file descriptor) créé en utilisant fcntl(2).
C’est un verrou d’intervalle de bits POSIX créé en utilisant fcntl(2).
[3]
Les chaînes suivantes font partie de celles qui peuvent apparaître ici :
C’est un verrou d’avertissement.
C’est un verrou obligatoire.
[4]
Le type de verrou. Les valeurs pouvant apparaitre ici sont :
C’est un verrou de lecture POSIX ou OFD, ou un verrou partagé BSD.
C’est un verrou d’écriture POSIX ou OFD, ou un verrou exclusif BSD.
[5]
Le PID du processus qui possède le verrou.
La valeur -1 est affichée dans ce champ pour les verrous OFD parce que les verrous OFD ne sont pas la propriété d'un seul processus (puisque plusieurs processus peuvent avoir des descripteurs de fichier qui se réfèrent à la même description de fichier ouvert). Avant Linux 4.14, un bogue signifiait que c'était le PID du processus qui avait initialement acquis le verrou qui était affiché au lieu de la valeur -1.
[6]
Trois sous-champs séparés par des deux-points qui identifient l’ID majeur et mineur de périphérique du périphérique contenant le système de fichiers où le fichier verrouillé réside, suivis du numéro d’inœud du fichier verrouillé.
[7]
Le décalage de bits du premier bit du verrou. Pour les verrous BSD, cette valeur est toujours 0.
[8]
Le décalage de bits du dernier bit du verrou. EOF dans ce champ signifie que le verrou s’étend jusqu’à la fin du fichier. Pour les verrous BSD, la valeur affichée est toujours EOF.
Depuis Linux 4.9, la liste des verrous affichés dans /proc/locks est filtrée pour montrer seulement les verrous du processus dans l’espace de noms PID (consulter pid_namespaces(7)) pour lequel le système de fichiers /proc est monté (dans l’espace de noms PID initial, il n’y a aucun filtrage des enregistrements affichés dans ce fichier).
La commande lslocks(8) fournit un peu plus d’informations à propos de chaque verrou.
/proc/malloc (seulement jusqu'à Linux 2.2 inclus)
Ce fichier n'est présent que si CONFIG_DEBUG_MALLOC a été défini lors de la compilation du noyau.
/proc/meminfo
Ce fichier fournit des statistiques sur l'utilisation de la mémoire du système. Il permet au programme free(1) d'indiquer la quantité de mémoire (physique et d'échange) libre et utilisée, ainsi que la mémoire partagée et les tampons utilisés par le noyau. Chaque ligne du ficher contient un nom de paramètre, suivi d'un deux-points, la valeur du paramètre et une unité facultative de mesure (par exemple « kB » pour « ko »). La liste suivante décrit les noms de paramètre et le spécificateur de format nécessaire pour lire la valeur du champ. Sauf si précisé autrement, tous les champs sont présents depuis au moins Linux 2.6.0. Certains champs ne sont affichés que si le noyau a été configuré avec plusieurs options ; ces dépendances sont notées dans la liste.
Total de RAM utilisable (c'est-à-dire la RAM physique moins quelques bits réservés et le code binaire du noyau).
Somme de LowFree et HighFree.
Estimation de la quantité de mémoire disponible pour démarrer de nouvelles applications sans utiliser d’espace d’échange.
Stockage relativement temporaire pour les blocs de disque bruts qui ne devraient pas devenir trop gros (environ 20 Mo).
Cache en mémoire pour les fichiers sur le disque (le cache de pages). N'inclut pas SwapCached.
Mémoire qui avait été placée en espace d'échange (« swap »), qui en a été retirée, mais qui est toujours dans le fichier d'échange (si la pression en mémoire est importante, ces pages n'ont pas besoin d'être de nouveau placées dans l'espace d'échange, car elles sont déjà dans le fichier d'échange. Cela évite des E/S).
Mémoire qui a été utilisée plus récemment, mais qui en général n'est pas réclamée tant que ce n'est pas absolument nécessaire.
Mémoire qui a été utilisée moins récemment. Elle est plus éligible à être réclamée pour autre chose.
[À documenter].
[À documenter].
[À documenter].
[À documenter].
(De Linux 2.6.28 à Linux 2.6.30, CONFIG_UNEVICTABLE_LRU était nécessaire.) [À documenter.]
(De Linux 2.6.28 à Linux 2.6.30, CONFIG_UNEVICTABLE_LRU était nécessaire.) [À documenter.]
(Depuis Linux 2.6.19, CONFIG_HIGHMEM est nécessaire.) Quantité totale de mémoire haute. La mémoire haute correspond à toute la mémoire située au-delà d'environ 860 Mo de mémoire physique. Les espaces de mémoire haute sont pour les programmes en espace utilisateur ou pour le cache de pages. Le noyau doit utiliser des astuces pour utiliser cette mémoire, la rendant plus lente d'accès que la mémoire basse.
(Depuis Linux 2.6.19, CONFIG_HIGHMEM est nécessaire.) Quantité de mémoire haute libre.
(Depuis Linux 2.6.19, CONFIG_HIGHMEM est nécessaire.) Quantité totale de mémoire basse. La mémoire basse peut être utilisée pour les mêmes choses que la mémoire haute, mais est aussi disponible pour le noyau pour ses propres structures de données. Entre autres choses, c'est là qu'est alloué tout Slab. Des problèmes peuvent survenir en cas d'épuisement de mémoire basse.
(Depuis Linux 2.6.19, CONFIG_HIGHMEM est nécessaire.) Quantité de mémoire basse libre.
(CONFIG_MMU est nécessaire.) [À documenter.]
Quantité totale d'espace d'échange disponible.
Quantité d'espace d'échange non utilisée.
Mémoire en attente d'être réécrite sur disque.
Mémoire en cours de réécriture sur disque.
Pages sauvegardées sous une autre forme qu'un fichier, mappées dans des tables de pages en espace utilisateur.
Fichiers qui ont été mappés en mémoire (avec mmap(2)), comme les bibliothèques.
Quantité de mémoire utilisée par les systèmes de fichiers tmpfs(5).
Allocations pour le noyau que celui-ci peut essayer de réclamer lorsque la mémoire est sous pression. Cela inclut SReclaimable (ci-après) et d’autres allocations directes avec un « shrinker ».
Cache de structures de données dans le noyau (consulter slabinfo(5)).
Partie de Slab qui pourrait être réclamée, comme les caches.
Partie de Slab qui ne peut pas être réclamée lorsque la mémoire est sous pression.
Quantité de mémoire allouée aux piles du noyau.
Quantité de mémoire dédiée au plus bas niveau des tables de pages.
(CONFIG_QUICKLIST est nécessaire.) [À documenter.]
Pages NFS envoyées au serveur, mais pas encore envoyées vers un stockage stable.
Mémoire utilisée pour les « tampons de rebond » des périphériques blocs.
Mémoire utilisée par FUSE pour les tampons de réécriture temporaire.
Quantité totale de mémoire actuellement disponible à l'allocation sur le système, exprimée en kilooctets. Cette limite est respectée si la comptabilité « overcommit » stricte est activée (mode 2 dans /proc/sys/vm/overcommit_memory). Cette limite est calculée selon la formule décrite dans /proc/sys/vm/overcommit_memory. Pour de plus amples détails, consulter le fichier Documentation/vm/overcommit-accounting.rst des sources du noyau.
Quantité de mémoire actuellement allouée dans le système. Cette mémoire est la somme de toute la mémoire qui a été allouée par les processus, même s'ils ne l'ont pas encore « utilisée ». Un processus qui alloue 1 Go de mémoire (en utilisant malloc(3) ou équivalent), mais ne touche qu'à 300 Mo de cette mémoire, sera vu comme n'utilisant que 300 Mo de mémoire, même s'il a l'espace d'adresses alloué pour 1 Go.
Ce 1 Go est la mémoire qui a été « réservée » par la mémoire virtuelle et peut être utilisée n'importe quand par l'application d'allocation. Avec la gestion stricte du dépassement activée (overcommit) (mode 2 dans /proc/sys/vm/overcommit_memory), les allocations qui pourraient dépasser CommitLimit ne sont pas permises. C'est utile s'il est nécessaire de garantir que les processus ne vont pas échouer à cause d’un manque de mémoire une fois la mémoire allouée correctement.
Taille totale d'allocation de mémoire virtuelle.
Montant de la zone de vmalloc utilisée. Depuis Linux 4.4, ce champ n’est pas calculé et est codé en dur à zéro. Consulter /proc/vmallocinfo.
Bloc contigu le plus large de la zone vmalloc libre. Depuis Linux 4.4, ce champ n’est pas calculé et est codé en dur à zéro. Consulter /proc/vmallocinfo.
(CONFIG_MEMORY_FAILURE est nécessaire.) [À documenter.]
Quantité de mémoire marquée par madvise(2) MADV_FREE.
(CONFIG_TRANSPARENT_HUGEPAGE est nécessaire.) Pages volumineuses sauvées sous une autre forme qu'un fichier, mappées dans des tables de pages en espace utilisateur.
(CONFIG_TRANSPARENT_HUGEPAGE est nécessaire.) Mémoire utilisée par la mémoire partagée (shmem) et tmpfs(5) allouée avec les pages volumineuses.
(CONFIG_TRANSPARENT_HUGEPAGE est nécessaire.) Mémoire partagée mappée en espace utilisateur avec les pages volumineuses.
Pages CMA (Contiguous Memory Allocator) totales (CONFIG_CMA est nécessaire).
Pages CMA (Contiguous Memory Allocator) libres (CONFIG_CMA est nécessaire).
(CONFIG_HUGETLB_PAGE est nécessaire.) Taille de la réserve (pool) pour les pages volumineuses.
(CONFIG_HUGETLB_PAGE est nécessaire.) Nombre de pages volumineuses de la réserve (pool) qui ne sont pas encore allouées.
(CONFIG_HUGETLB_PAGE est nécessaire.) Nombre de pages volumineuses pour lesquelles un engagement a été fait pour les allouer à partir de la réserve, alors qu’aucune allocation n’a été faite. Ces pages volumineuses réservées garantissent qu'une application pourra allouer une page volumineuse à partir de la réserve de pages volumineuses au moment de la faute.
(CONFIG_HUGETLB_PAGE est nécessaire.) Nombre de pages volumineuses dans la réserve au-delà de la valeur de /proc/sys/vm/nr_hugepages. Le nombre maximal de pages volumineuses en excès est contrôlé par /proc/sys/vm/nr_overcommit_hugepages.
(CONFIG_HUGETLB_PAGE est nécessaire.) Taille des pages volumineuses.
Nombre d’octets de RAM mappés linéairement par le noyau en pages de 4 ko (x86).
Nombre d’octets de RAM mappés linéairement par le noyau en pages de 4 Mo (x86 avec CONFIG_X86_64 ou CONFIG_X86_PAE activé).
Nombre d’octets de RAM mappés linéairement par le noyau en pages de 2 Mo (x86 avec ni CONFIG_X86_64 ni CONFIG_X86_PAE activé).
(x86 avec CONFIG_X86_64 ou CONFIG_X86_DIRECT_GBPAGES activé).
/proc/modules
Liste littérale des modules qui ont été chargés par le système. Consultez lsmod(8).
/proc/mounts
Avant le noyau 2.4.19, ce fichier était une liste de tous les systèmes de fichiers actuellement montés sur le système. Avec l'introduction des espaces de noms montage par processus dans Linux 2.4.19 (consulter mount_namespaces(7)), ce fichier est devenu un lien vers /proc/self/mounts qui liste les points de montage de l'espace de noms montage du processus. Le format de ce fichier est documenté dans fstab(5).
/proc/mtrr
Memory Type Range Registers. Consulter dans les sources du noyau Documentation/x86/mtrr.rst (ou Documentation/x86/mtrr.txt avant Linux 5.2, ou Documentation/mtrr.txt avant Linux 2.6.28) pour plus de détails.
/proc/net
Ce répertoire regroupe divers fichiers et sous-répertoires contenant des informations sur la couche réseau. Ces fichiers contiennent des structures ASCII et sont par conséquent lisibles avec cat(1). Cependant la suite standard netstat(8) fournit un accès plus propre à ces fichiers.
Avec l’arrivée des espaces de noms réseau, diverses informations sur la pile réseau sont virtualisées (consulter network_namespaces(7)). Par conséquent, depuis Linux 2.6.25, /proc/net est un lien symbolique vers le répertoire /proc/self/net qui contient les mêmes fichiers et les mêmes répertoires comme listés ci-après. Cependant, ces fichiers et ces répertoires exposent désormais des informations pour l’espace de noms réseau dont le processus est membre.
/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ù « adresse IP » est l'adresse IPv4 de la machine, matériel est le type issu de la RFC 826. L'attribut correspond aux attributs de la structure ARP (définie dans /usr/include/linux/if_arp.h) et l'adresse matérielle est celle de la couche de liaison de données correspondant à l'adresse IP (si elle est connue).
/proc/net/dev
Ce pseudofichier contient des informations d'état sur les périphériques réseau. Il contient le nombre de paquets émis et reçus, le nombre d'erreurs et de collisions, ainsi que d'autres données statistiques basiques. Elles sont utilisées par le programme ifconfig(8) pour rapporter l’état du périphérique. 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éfini dans /usr/src/linux/net/core/dev_mcast.c :

indx interface_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 utilise le même format que le fichier arp et contient la base de données de mappage inverse 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
Contenu de la table des sockets RAW (bruts). La plupart des informations ne servent que pour le débogage. La valeur « sl » est l'emplacement du socket dans le slot de hachage du noyau. Le champ « local_address » contient l'adresse locale ainsi que la paire de numéros associée au protocole. « St » est l'état interne du socket. « tx_queue » et « rx_queue » représentent les files d'attente en émission et en réception en ce qui concerne l'utilisation de la mémoire par le noyau. Les champs « tr », « tm->when » et « rexmits » ne sont pas utilisés par « RAW ». Le champ uid contient l’UID effectif du créateur du socket.
/proc/net/snmp
Ce fichier contient les données ASCII nécessaires pour les bases d'informations d'IP, ICMP, TCP et UDP pour un agent SNMP.
/proc/net/tcp
Contenu de la table des sockets TCP. La plupart des informations ne servent que pour le débogage. La valeur « sl » est l'emplacement du socket dans le slot de hachage du noyau. Le champ « local_address » contient l'adresse locale ainsi que la paire de numéros de port. Le champ « rem_address » contient l'adresse distante et la paire de numéros de port (si connecté). « St » est l'état interne du socket. « tx_queue » et « rx_queue » représentent les files d'attente en émission et en réception en ce qui concerne l'utilisation de la mémoire par le noyau. Les champs « tr », « tm->when » et « rexmits » contiennent des informations sur l’état du socket de noyau et ne sont utiles que pour le débogage. Le champ uid contient l’UID effectif du créateur du socket.
/proc/net/udp
Contenu de la table des sockets UDP. La plupart des informations ne servent que pour le débogage. La valeur « sl » est l'emplacement du socket dans le slot de hachage du noyau. Le champ « local_address » contient l'adresse locale ainsi que la paire de numéros de port. Le champ « rem_address » contient l'adresse distante et la paire de numéros de port (si connecté). « St » est l'état interne du socket. « tx_queue » et « rx_queue » représentent les files d'attente en émission et en réception en ce qui concerne l'utilisation de la mémoire par le noyau. Les champs « tr », « tm->when » et « rexmits » ne sont pas utilisés par UDP. Le champ uid contient l’UID effectif du créateur du 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 de domaine UNIX présents sur le système et leurs états. Le format est :
Num RefCount Protocol Flags    Type St Inode Path

0: 00000002 00000000 00000000 0001 03 42
1: 00000001 00000000 00010000 0001 01 1948 /dev/printer
Les champs sont les suivants :
numéro de slot de table du noyau.
nombre d’utilisateurs du socket.
actuellement toujours 0
drapeau interne du noyau détenant l’état du socket.
type de socket. Pour les sockets SOCK_STREAM c’est 0001, pour les sockets SOCK_DGRAM c’est 0002 et pour les sockets SOCK_SEQPACKET c’est 0005.
état interne du socket.
numéro d’inœud du socket.
nom de chemin lié (si existant) du socket. Les sockets dans l’espace de noms abstrait sont inclus dans la liste et sont affichés avec un Path qui débute avec le caractère « @ ».
/proc/net/netfilter/nfnetlink_queue
Ce fichier contient des informations sur les mises en attente en espace utilisateur de netfilter s’il est utilisé. Chaque ligne représente une file d’attente. Les files d’attente dont un espace utilisateur n’a pas demandé de notifications ne sont pas affichées.


1 4207 0 2 65535 0 0 0 1
(1) (2) (3)(4) (5) (6) (7) (8)

Les champs de chaque ligne sont :
(1)
ID de la file d’attente. Cet identifiant correspond à ce qui est spécifié dans les options --queue-num ou --queue-balance de la cible NFQUEUE de iptables(8). Consulter iptables-extensions(8) pour plus d’informations.
(2)
L’ID de port netlink abonné à la file d'attente.
(3)
Le nombre de paquets actuellement dans la file d’attente et à traiter par l’application.
(4)
Le mode de copie de la file d’attente. Il a pour valeur 1 (métadonnées seulement) ou 2 (copie aussi des données de charge en espace utilisateur).
(5)
Intervalle à copier. Il s’agit de la quantité maximale d’octets de la charge utile des paquets à copier dans l’espace utilisateur.
(6)
Abandons de file d’attente. Il s’agit du nombre de paquets que le noyau a dû abandonner parce que trop de paquets attendent déjà que l’espace utilisateur renvoie les jugements obligatoires acceptation/abandon.
(7)
Abandons de file d’attente d’utilisateur. Il s’agit du nombre de paquets qui ont été abandonnés dans le sous-système netlink. De tels abandons se produisent habituellement quand le tampon de socket correspondant est plein, c’est-à-dire que l’espace utilisateur n’est pas capable de lire les messages assez rapidement.
(8)
Numéro de séquence. Chaque paquet mis en attente est associé à un numéro (32 bits) de séquence croissant de manière monotone. Ce numéro indique l’ID du paquet le plus récent mis en attente.
Le dernier nombre existe seulement pour des raisons de compatibilité et est toujours 1.
/proc/partitions
Ce fichier contient les numéros majeur et mineur de chaque partition, ainsi que le nombre de blocs de 1024 octets 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 du noyau et de leur configuration.
Ce fichier est devenu obsolète et a été remplacé par une nouvelle interface /proc pour le bus PCI (/proc/bus/pci). Il est devenu facultatif dans Linux 2.2 (disponible par l'intermédiaire de CONFIG_PCI_OLD_PROC activé à la compilation du noyau). Il est redevenu non facultatif dans Linux 2.4. Ensuite, il est redevenu obsolète dans Linux 2.6 (il reste disponible par l'intermédiaire du positionnement de CONFIG_PCI_LEGACY_PROC), et il a finalement été entièrement supprimé depuis Linux 2.6.17.
/proc/profile (depuis Linux 2.4)
Ce fichier n'est présent que si le noyau a été démarré avec l'option profile=1. Il met à disposition des informations de profilage du noyau sous une forme binaire lisible par readprofile(1). Une écriture (par exemple, d'une chaîne vide) dans le fichier réinitialise les compteurs de profilage. Dans certaines architectures, l'écriture d'un entier binaire « multiplicateur de profilage » de taille sizeof(int) configure la fréquence d'interruption du profilage.
/proc/scsi
Répertoire regroupant les pseudofichiers du niveau scsi intermédiaire et divers sous-répertoires pour les pilotes SCSI de bas niveau. Ils contiennent un fichier pour chaque hôte SCSI du système, chacun d'entre eux donnant l'état d'une partie du sous-système d'E/S SCSI. Les fichiers contiennent des structures sous forme ASCII et sont donc lisibles avec cat(1).
Il est aussi possible d’é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 ressemble à 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 connu à cette adresse ou si l'adresse n’est pas valable, 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 apparaissent pour tous les pilotes qui ont enregistré au moins un contrôleur de bus 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 permet 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 caches du noyau. Consulter slabinfo(5) pour plus de précisions.
/proc/stat
Statistiques du noyau et du système. Ce fichier varie avec l'architecture. Les enregistrements courants sont les suivants :
Temps, mesuré en unités de USER_HZ (centième de seconde sur la plupart des architectures, utiliser sysconf(_SC_CLK_TCK) pour connaître la valeur correcte), que le système (ligne « cpu ») ou le CPU particulier (ligne « cpuN ») a passé dans les différents états suivants :
(1) Temps passé en mode utilisateur.
(2) Temps passé en mode utilisateur avec une priorité basse (courtoisie élevée : « nice »).
(3) Temps passé en mode système.
(4) Temps passé en tâche inactive. Cette valeur doit correspondre à USER_HZ fois le deuxième enregistrement du pseudofichier /proc/uptime.
(5) Temps d’attente pour que l’E/S soit achevée. Cette valeur n’est pas fiable pour les raisons suivantes :
  • le CPU n’attend pas que l’E/S soit achevée. iowait est la durée pendant laquelle une tâche attend que l’E/S soit achevée. Quand un CPU entre dans un état inactif pour des tâches d’E/S en suspens, une autre tâche est programmée sur ce CPU ;
  • sur un CPU multicœur, la tâche attendant que l’E/S soit achevée n’est en cours d’exécution sur aucun CPU, aussi la durée iowait de chaque CPU est difficile à calculer ;
  • la valeur de ce champ peut décroître dans certaines conditions.
(6) Temps d'entretien des interruptions.
(7) Temps d'entretien des softirq.
Temps volé, qui est le temps passé dans d'autres systèmes d'exploitation lorsqu'un environnement virtualisé est actif
(9) Temps passé à exécuter un processeur virtuel pour des systèmes d'exploitation clients sous le contrôle du noyau Linux.
(10) Temps passé à exécuter un client avec une priorité basse (processeur virtuel pour des systèmes d'exploitation clients sous le contrôle du noyau Linux).
Les nombres de pages que le système a paginées en entrée et en sortie (du disque).
Les nombres de pages de swap que le système a échangées en entrée et en sortie.
Cette ligne contient le nombre d'interruptions qui ont été prises en compte depuis le démarrage du système, pour chacune des interruptions possibles. La première colonne est le total de toutes les interruptions ayant été prises en compte, y compris les interruptions non numérotées spécifiques à l’architecture ; chacune des colonnes suivantes représente le total pour cette interruption numérotée particulière. Les interruptions non numérotées ne sont pas montrées et seulement comptées dans le total.
(major,disk_idx):(noinfo, read_io_ops, blks_read, write_io_ops, blks_written)
(Linux 2.4 seulement)
Le nombre de changements de contexte effectués par le système.
La date de démarrage du système en secondes écoulées depuis l'Époque, 1er janvier 1970 à 00:00:00 (UTC).
Le nombre de processus exécutés sur le système depuis le démarrage.
Nombre de processus dans un état exécutable (à partir de Linux 2.5.45).
Nombre de processus bloqués en attente de fin d'E/S (à partir de Linux 2.5.45).
Cette ligne affiche le nombre de softirq pour tous les CPU. La première colonne est le nombre total des softirq et chaque colonne suivante est le nombre total pour un softirq particulier (à partir de Linux 2.6.31).
/proc/swaps
Zones de swap utilisées. Consulter 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 pseudosystème de fichiers /proc et en utilisant l'appel système (obsolète) sysctl(2).
Les valeurs des chaînes peuvent être terminées par « \0 » ou « \n ».
Les valeurs de type « long » et entier peuvent être écrites en notation décimale ou hexadécimale (par exemple, 0x3FFF). Lors de l’écriture de plusieurs valeurs « long » ou d’entier, celles-ci peuvent être séparées par n’importe quel caractère blanc suivant : «   », « \t » ou « \n ». L’utilisation d’autres caractères génère l’erreur EINVAL.
/proc/sys/abi (depuis Linux 2.4.10)
Ce répertoire peut contenir des fichiers d'informations sur l'exécutable de l'application. Consulter le fichier Documentation/sysctl/abi.rst des sources du noyau Linux (ou Documentation/sysctl/abi.txt avant Linux 5.3) 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
Ce répertoire contient les fichiers et sous-répertoires pour les variables du noyau relatives aux systèmes de fichiers.
/proc/sys/fs/aio-max-nr et /proc/sys/fs/aio-nr (depuis Linux 2.6.4)
aio-nr est le nombre total d’évènements en cours spécifiés par les appels io_setup(2) pour tous les contextes AIO actuellement actifs. Si aio-nr atteint aio-max-nr, io_setup(2) échouera avec l’erreur EAGAIN. Augmenter aio-max-nr ne provoque la préallocation ou le redimensionnement d’aucune structure de données du noyau.
/proc/sys/fs/binfmt_misc
La documentation concernant les fichiers de ce répertoire se trouve dans le fichier Documentation/admin-guide/binfmt-misc.rst des sources du noyau (ou dans Documentation/binfmt_misc.txt pour les noyaux plus anciens).
/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 (âge 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 dcache de répertoire libres.
  • age_limit est l'âge en seconde après lequel les entrées dcache peuvent être réclamées quand la mémoire est faible.
  • 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é réduit.
/proc/sys/fs/dir-notify-enable
Ce fichier permet d'activer ou d’inhiber l'interface dnotify décrite dans fcntl(2) au niveau système. Une valeur 0 dans ce fichier désactive cette interface et la valeur 1 l'active.
/proc/sys/fs/dquot-max
Ce fichier montre le nombre maximal d'entrées de quota de disque en cache. Sur certains systèmes (2.4), il est absent. Si le nombre d’entrées de quota 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/epoll (depuis Linux 2.6.28)
Ce répertoire contient le fichier max_user_watches qui peut être utilisé pour limiter la quantité de mémoire du noyau utilisée par l'interface epoll. Consulter epoll(7) pour davantage d'informations.
/proc/sys/fs/file-max
Ce fichier est la limite pour tout le système du nombre de fichiers ouverts par tous les processus. Les appels système qui échouent à cause de cette limite échouent avec l’erreur ENFILE (consulter aussi setrlimit(2) qui permet de définir la limite par processus, RLIMIT_NOFILE, du nombre de fichiers qu’il peut ouvrir). Si de nombreux messages d'erreurs dans le journal du noyau indiquent un manque de gestionnaires de fichiers (descripteurs de fichier ouvert – rechercher « VFS: file-max limit <number> reached »), essayez d'augmenter cette valeur.

echo 100000 > /proc/sys/fs/file-max
    

Les processus privilégiés (CAP_SYS_ADMIN) peuvent écraser la limite file-max.
/proc/sys/fs/file-nr
Ce fichier en lecture seule contient trois nombres : le nombre de gestionnaires de fichiers alloués (c'est-à-dire le nombre de descriptions de fichier ouverts, consulter open(2)), le nombre de gestionnaires de fichier libres et le nombre maximal de gestionnaires de fichier (c'est-à-dire la même valeur que /proc/sys/fs/file-max). Si le nombre de gestionnaires alloués est proche du maximum, le nombre maximal doit être augmenté. Avant Linux 2.6, le noyau allouait les gestionnaires dynamiquement, mais en retour ne les libérait pas. Au lieu de cela, les gestionnaires de fichier libres étaient stockés dans une liste pour être réalloués, le nombre « gestionnaires de fichier libres » se référant à la taille de cette liste. Un nombre élevé de gestionnaires de fichier libres était l'indication qu'un pic d'utilisation s'était produit. Depuis Linux 2.6, le noyau désalloue les gestionnaires de fichier libres, et le nombre « gestionnaires de fichier libres » est toujours zéro.
/proc/sys/fs/inode-max (avant Linux 2.2)
Ce fichier contient le nombre maximal d'inœuds en mémoire. Cette valeur devrait être 3 à 4 fois plus grande que le nombre file-max, car stdin, stdout et les sockets réseau nécessitent aussi des inœuds pour les gérer. En cas de manque régulier d’inœuds, cette valeur doit être augmentée.
Depuis Linux 2.4, il n'y a plus de limite statique du nombre d'inœuds et ce fichier n'existe plus.
/proc/sys/fs/inode-nr
Ce fichier contient les deux premières valeurs d'inode-state.
/proc/sys/fs/inode-state
Ce fichier contient sept nombres : nr_inodes, nr_free_inodes, preshrink et quatre valeurs non significatives (toujours zéro).
nr_inodes est le nombre d'inœuds alloués par le système. nr_free_inodes représente le nombre d'inœuds libres.
preshrink est non nul lorsque nr_inodes > inode-max et que le système doit purger la liste d'inœuds plutôt qu'en allouer davantage. Ce champ n'est plus significatif depuis Linux 2.4 (toujours zéro).
/proc/sys/fs/inotify (depuis Linux 2.6.13)
Ce répertoire contient les fichiers max_queued_events, max_user_instances et max_user_watches, qui permettent de limiter la quantité de mémoire du noyau utilisée par l'interface inotify. Consulter inotify(7) pour davantage d'informations.
/proc/sys/fs/lease-break-time
Ce fichier indique le délai de grâce que le noyau accorde à un processus détenant un bail de fichier (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 bail ne le supprime pas ou ne le réduit pas, le noyau cassera le bail d’autorité.
/proc/sys/fs/leases-enable
Ce fichier permet d'activer ou désactiver les baux de fichier (fcntl(2)) pour tout le système. Si ce fichier contient la valeur 0, les baux sont cassés. Une valeur non nulle active les baux.
/proc/sys/fs/mount-max (depuis Linux 4.9)
La valeur dans ce fichier indique le nombre maximal de montages pouvant exister dans l’espace de noms montage. La valeur par défaut est 100 000.
/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. Consulter mq_overview(7) pour davantage d'informations.
/proc/sys/fs/nr_open (depuis Linux 2.6.25)
Ce fichier impose un plafond à la valeur que la limite RLIMIT_NOFILE peut atteindre (consulter getrlimit(2)). Ce plafond est imposé pour les processus, qu’ils soient privilégiés ou non. La valeur par défaut dans ce fichier est 1048576 (avant Linux 2.6.25, le plafond pour RLIMIT_NOFILE était codé en dur à la même valeur).
/proc/sys/fs/overflowgid et /proc/sys/fs/overflowuid
Ces fichiers permettent de changer la valeur des GID et UID fixes – par défaut 65534. Certains systèmes de fichiers ne gèrent que des UID et GID de 16 bits, bien que les UID et GID dans Linux soient de 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/pipe-max-size (depuis Linux 2.6.35)
Consulter pipe(7).
/proc/sys/fs/pipe-user-pages-hard (depuis Linux 4.5)
Consulter pipe(7).
/proc/sys/fs/pipe-user-pages-soft (depuis Linux 4.5)
Consulter pipe(7).
/proc/sys/fs/protected_fifos (depuis Linux 4.19)
La valeur dans ce fichier est/peut être une des valeurs suivantes :
0
Écriture dans des FIFO non restreinte.
1
Ne pas autoriser O_CREAT open(2) dans des FIFO que l’appelant ne possède pas dans ses répertoires « sticky » éditables par tout le monde, à moins que le propriétaire du répertoire ne soit le propriétaire d’une FIFO.
2
Comme pour la valeur 1, mais les restrictions s’appliquent aussi aux répertoires « sticky » éditables par le groupe.
Le but des protections précédentes est d’éviter des écritures accidentelles dans une FIFO contrôlée par un attaquant quand le programme avait l'intention de créer un fichier normal.
/proc/sys/fs/protected_hardlinks (depuis Linux 3.6)
Quand la valeur dans ce fichier est 0, aucune restriction n'empêche la création de liens physiques (c'est-à-dire le comportement historique avant Linux 3.6). Quand la valeur de ce fichier est 1, un lien physique ne peut être créé vers un fichier cible que si une des conditions suivantes est vraie :
  • Le processus appelant a la capacité CAP_FOWNER dans son espace de noms utilisateur et l’UID du fichier a un mappage dans l’espace de noms.
  • L'UID de système de fichiers du processus créant le lien correspond au propriétaire (UID) du fichier cible (conformément à la description dans credentials(7), l'UID de système de fichiers d'un processus est normalement le même que son UID effectif).
  • Toutes les conditions suivantes sont vraies :
  • la cible est un fichier normal ;
  • le fichier cible n'a pas son bit set-user-ID activé ;
  • le fichier cible n'a aucun de ses bits set-group-ID et de mode exécutable activé ;
  • l'appelant a le droit de lire et écrire le fichier cible (soit à travers le masque des droits du fichier, soit parce qu’il dispose de la capacité nécessaire).
La valeur par défaut dans ce fichier est 0. Définir cette valeur à 1 empêche une classe de problèmes de sécurité anciens provoqués par des situations de compétition d’instant de vérification basé sur des liens physiques ou d’instant d’utilisation, rencontrés le plus souvent dans des répertoires accessibles en écriture à tous comme /tmp. La méthode habituelle pour exploiter ce défaut est de croiser les limites de droits lors du suivi d'un lien physique donné (c'est-à-dire qu'un processus du superutilisateur suit un lien créé par un autre utilisateur). De plus, sur les systèmes sans partitions séparées, cela empêche les utilisateurs non autorisés d'« épingler » les fichiers set-user-ID et set-group-ID vulnérables, pour les empêcher d'être mis à jour par l'administrateur ou d'être liés vers des fichiers spéciaux.
/proc/sys/fs/protected_regular (depuis Linux 4.19)
La valeur dans ce fichier est/peut être une des valeurs suivantes :
0
Écriture dans des fichiers normaux non restreinte.
1
Ne pas autoriser O_CREAT open(2) dans des fichiers normaux dont l’appelant n’est pas le propriétaire dans ses répertoires « sticky » éditables par tout le monde, à moins que le propriétaire du répertoire ne soit le propriétaire du fichier normal.
2
Comme pour la valeur 1, mais les restrictions s’appliquent aussi aux répertoires « sticky » éditables par le groupe.
Le but des protections précédentes est similaire à protected_fifos, mais permet à une application d’éviter des écritures dans un fichier normal contrôlé par un attaquant quand le programme avait l'intention d’en créer un.
/proc/sys/fs/protected_symlinks (depuis Linux 3.6)
Quand la valeur dans ce fichier est 0, aucune restriction n'empêche le suivi de liens symboliques (c'est-à-dire le comportement historique avant Linux 3.6). Quand la valeur de ce fichier est 1, les liens symboliques ne sont suivis que dans l'une des circonstances suivantes :
  • l'UID de système de fichiers du processus suivant le lien correspond au propriétaire (UID) du lien symbolique (conformément à la description dans credentials(7), l'UID de système de fichiers d'un processus est normalement le même que son UID effectif) ;
  • le lien n'est pas dans un répertoire « sticky » accessible en écriture à tous ;
  • le lien symbolique et son répertoire parent ont le même propriétaire (UID).
Un appel système qui n'arrive pas à suivre un lien symbolique à cause des restrictions ci-dessus renvoie l'erreur EACCES dans errno.
La valeur par défaut dans ce fichier est 0. Définir cette valeur à 1 empêche une classe de problèmes de sécurité anciens basés sur des situations de compétition d’instant de vérification ou d’instant d'utilisation lors de l'accès aux liens symboliques.
/proc/sys/fs/suid_dumpable (depuis Linux 2.6.13)
La valeur dans ce fichier est assignée à un drapeau « dumpable » de processus dans les circonstances décrites dans prctl(2). En effet, la valeur dans ce fichier détermine si les fichiers de vidage mémoire sont produits pour des binaires set-user-ID ou pour des binaires protégés/corrompus. Le réglage « dumpable » affecte aussi l’appartenance de fichiers dans un répertoire /proc/pid de processus comme cela est décrit ci-dessus.
Trois valeurs d’entier différentes peuvent être indiquées :
0 (par défaut)
Cette valeur correspond au comportement traditionnel (antérieur à Linux 2.6.13). Une image mémoire ne sera pas produite pour un processus qui a modifié ses droits (en appelant seteuid(2), setgid(2), ou autre, ou en exécutant un programme set-user-ID ou set-group-ID) ou dont le binaire n'a pas le droit de lecture activé.
1 (« débogage »)
Des images mémoire de tous les processus seront faites si possible (les raisons pour lesquelles des images mémoire sont néanmoins possibles sont décrites dans core(5)). L'image mémoire appartient à l'ID utilisateur du système de fichiers du processus dont l'image a été créée et aucune mesure de sécurité n'est prise. Cette valeur n'est prévue que pour des raisons de débogage, ce mode n’étant pas sécurisé ; il permet en effet aux utilisateurs non privilégiés d’examiner le contenu de la mémoire des processus privilégiés.
2 (« suidsafe »)
L'image mémoire d'un binaire qui n'aurait normalement pas été vidée (voir « 0 » ci-dessus) est sauvegardée et lisible par le superutilisateur (root) seulement. Cela permet à l'utilisateur de pouvoir supprimer l'image mémoire mais pas de la lire. Pour des raisons de sécurité, les images mémoire prises dans ce mode n'en écraseront pas une autre ou d'autres fichiers. Ce mode est adéquat lorsque l'administrateur essaie de déboguer des problèmes dans un environnement normal.
De plus, depuis Linux 3.6, /proc/sys/kernel/core_pattern doit être soit un chemin absolu, soit une commande de tube (« pipe »), comme précisé dans core(5). Des avertissements seront écrits dans le journal du noyau si core_pattern ne suit pas ces règles et aucune image mémoire ne sera produite.
Pour plus de détails sur les effets du réglage « dumpable » d’un processus sur la vérification du mode d’accès ptrace, consulter ptrace(2).
/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 super-max que si vous désirez monter plus de systèmes de fichiers que ce que la valeur actuelle de super-max vous permet.
/proc/sys/fs/super-nr
Ce fichier contient le nombre de systèmes de fichiers montés actuellement.
/proc/sys/kernel
Ce répertoire contient des fichiers contrôlant toute une série de paramètres du noyau, comme décrits ci-dessous.
/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, ces valeurs déterminent son comportement. Si l'espace disque libre sur le système de fichiers accueillant les statistiques descend sous le seuil bas, (en pourcentage), la comptabilité est suspendue. Si l'espace libre remonte au-dessus du seuil haut, elle reprend. La période (en secondes) 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 à partir de 4 % et la vérification a lieu toutes les 30 secondes.
/proc/sys/kernel/auto_msgmni (Linux 2.6.27 à Linux 3.18)
De Linux 2.6.27 à Linux 3.18, ce fichier était utilisé pour contrôler le recalcul de la valeur dans /proc/sys/kernel/msgmni lors de l’ajout ou du retrait de mémoire, ou lors de la création ou suppression d’espaces de noms IPC. Inscrire « 1 » dans ce fichier activait le recalcul automatique de msgmni (et déclenchait le recalcul de msgmni basé sur le montant actuel de mémoire disponible et le nombre d’espaces de noms IPC). Inscrire « 0 » désactivait le recalcul automatique (celui-ci était aussi désactivé si une valeur était explicitement assignée à /proc/sys/kernel/msgmni). La valeur par défaut de auto_msgmni était 1.
Depuis Linux_3.19, le contenu de ce fichier n’a pas d’effet (parce que msgmni par défaut est proche de la valeur maximale possible) et lire ce fichier renverra toujours la valeur « 0 ».
/proc/sys/kernel/cap_last_cap (depuis Linux 3.2)
Consulter capabilities(7).
/proc/sys/kernel/cap-bound (de Linux 2.2 à 2.6.24)
Ce fichier contient la valeur de limitation de capacités 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, la limitation de capacités à l'échelle du système a disparu pour être remplacée par une limitation par thread. Consulter capabilities(7).
/proc/sys/kernel/core_pattern
Consulter core(5).
/proc/sys/kernel/core_pipe_limit
Consulter core(5).
/proc/sys/kernel/core_uses_pid
Consulter 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-Suppr est capturé et envoyé au programme init(1) pour relancer le système correctement. Si la valeur est supérieure à zéro, la réaction de Linux à cette « prise de Vulcain » est un redémarrage immédiat, sans même écrire le contenu des tampons en attente. Remarque : lorsqu'un programme (comme dosemu) utilise le clavier en mode « raw » (brut), la séquence Ctrl-Alt-Suppr est interceptée par le programme avant même d'atteindre la couche tty du noyau, et c'est à ce programme de décider quoi en faire.
/proc/sys/kernel/dmesg_restrict (depuis Linux 2.6.37)
La valeur de ce fichier détermine qui peut voir le contenu du journal système du noyau. Une valeur nulle dans ce fichier n'impose aucune restriction. Si la valeur est 1, seuls les utilisateurs privilégiés peuvent lire le journal système du noyau (consulter syslog(2) pour plus de précisions). Depuis Linux 3.4, seuls les utilisateurs avec la capacité CAP_SYS_ADMIN peuvent modifier la valeur de ce fichier.
/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). C'est-à-dire que :

# 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 domaine sont généralement différents. Pour plus de détails, consultez la page hostname(1).
/proc/sys/kernel/hotplug
Ce fichier contient le chemin de l'agent de politique de branchement à chaud. La valeur par défaut est /sbin/hotplug.
/proc/sys/kernel/htab-reclaim (avant Linux 2.4.9.2)
(PowerPC seulement) Si ce fichier contient une valeur différente de zéro, 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/keys/*
Ce répertoire contient divers fichiers qui définissent les paramètres et les limites pour la fonction de gestion de clés. Ces fichiers sont décrits dans keyrings(7).
/proc/sys/kernel/kptr_restrict (depuis Linux 2.6.38)
La valeur de ce fichier détermine si des adresses du noyau sont exposées par l'intermédiaire de fichiers /proc et d'autres interfaces. Une valeur nulle dans ce fichier n'impose aucune restriction. Si la valeur est 1, les pointeurs du noyau affichés en utilisant le spécificateur de format %pK seront remplacés par des zéros sauf si l'utilisateur a la capacité CAP_SYSLOG. Si la valeur est 2, les pointeurs du noyau affichés en utilisant le spécificateur de format %pK seront remplacés par des zéros quelles que soient les capacités de l'utilisateur. La valeur par défaut pour ce fichier était 1 initialement, mais la valeur par défaut a été changée à zéro avec Linux 2.6.39. Depuis Linux 3.4, seuls les utilisateurs avec la capacité CAP_SYS_ADMIN peuvent modifier la valeur de ce fichier.
/proc/sys/kernel/l2cr
(PowerPC seulement) Ce fichier contient un indicateur commandant le cache L2 des cartes à processeur G3. Le cache est désactivé si la valeur est nulle, activé sinon.
/proc/sys/kernel/modprobe
Ce fichier comporte le chemin du chargeur de modules du noyau. Sa valeur par défaut est /sbin/modprobe. Ce fichier n'est présent que si le noyau est construit avec l'option CONFIG_MODULES activée (CONFIG_KMOD dans les versions 2.6.26 et antérieures). Ce fichier est décrit dans le fichier Documentation/kmod.txt des sources du noyau Linux (il n'est présent que dans Linux 2.4 et les versions antérieures).
/proc/sys/kernel/modules_disabled (depuis Linux 2.6.31)
Une valeur de bascule indiquant si les modules peuvent être chargés dans un noyau par ailleurs modulaire. La valeur par défaut est non (0), mais peut être définie à oui (1). Une fois définie à oui, les modules ne peuvent ni être chargés, ni déchargés, et la bascule ne peut plus être redéfinie à non. Le fichier n'est présent que si le noyau est construit avec l'option CONFIG_MODULES activée.
/proc/sys/kernel/msgmax (disponible depuis Linux 2.2)
Ce fichier définit une limite pour l'ensemble du système précisant le nombre maximal d'octets par message écrit dans une file de messages System V.
/proc/sys/kernel/msgmni (disponible depuis Linux 2.4)
Ce fichier définit la limite pour le système du nombre d'identifiants de files de messages. Consulter aussi /proc/sys/kernel/auto_msgmni.
/proc/sys/kernel/msgmnb (depuis Linux 2.2)
Ce fichier définit un paramètre valable pour l'ensemble du système utilisé pour initialiser la valeur msg_qbytes pour la création ultérieure de files de messages. La valeur msg_qbytes indique le nombre maximal d'octets qui pourront être écrits dans une file de messages.
/proc/sys/kernel/ngroups_max (depuis Linux 2.6.4)
Ce fichier est en lecture seule et affiche la limite supérieure du nombre d’appartenances à un groupe pour un processus.
/proc/sys/kernel/ns_last_pid (depuis Linux 3.3)
Consulter pid_namespaces(7).
/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 indique que le noyau devra redémarrer de lui-même après le nombre de secondes qu'elle contient. Si vous utilisez le pilote de périphérique logiciel de surveillance watchdog, la valeur recommandée est de 60.
/proc/sys/kernel/panic_on_oops (depuis Linux 2.5.68)
Ce fichier contrôle le comportement du noyau lorsqu'un oops (erreur non fatale) ou un bogue est rencontré. Si ce fichier contient 0, le système tente de continuer à travailler. S'il contient 1, 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 différent de zéro, la machine redémarrera.
/proc/sys/kernel/pid_max (depuis Linux 2.5.34)
Ce fichier indique la valeur à partir de laquelle la numérotation des PID reprendra à sa valeur initiale (ce qui signifie que la valeur dans ce fichier est celle du PID maximal plus un). Aucun PID supérieur à cette valeur n'est alloué, ainsi la valeur de ce fichier agit également comme une limite système du nombre maximal de processus et de threads. La valeur par défaut est 32768, ce qui correspond à la même plage de PID que sur les noyaux antérieurs. Pour les plates-formes 32 bits, la valeur maximale de pid_max est de 32768. Pour les systèmes 64 bits, pid_max peut avoir n'importe quelle valeur jusqu'à 2^22 (PID_MAX_LIMIT, approximativement 4 millions).
/proc/sys/kernel/powersave-nap (PowerPC seulement)
Ce fichier contient un drapeau. S'il est activé, Linux-PPC utilisera le mode « nap » (sieste) d'économie d'énergie, sinon il utilisera le mode « doze » (somnolence).
/proc/sys/kernel/printk
Consulter syslog(2).
/proc/sys/kernel/pty (depuis Linux 2.6.4)
Ce répertoire contient deux fichiers relatifs au nombre de pseudoterminaux UNIX 98 (consulter pts(4)) sur le système.
/proc/sys/kernel/pty/max
Ce fichier définit le nombre maximal de pseudoterminaux.
/proc/sys/kernel/pty/nr
Ce fichier, en lecture seule, indique le nombre de pseudoterminaux en cours d'utilisation.
/proc/sys/kernel/random
Ce répertoire contient divers paramètres contrôlant le fonctionnement du fichier /dev/random. Consulter random(4) pour davantage d'informations.
/proc/sys/kernel/random/uuid (disponible depuis Linux 2.4)
Chaque lecture de ce fichier en lecture seule renvoie un UUID aléatoire de 128 bits, sous forme de chaîne au format UUID normalisé.
/proc/sys/kernel/randomize_va_space (depuis Linux 2.6.12)
Sélection de la politique ASLR (adress space layout randomization – distribution aléatoire de l'espace d'adressage) pour le système (sur les architectures la gérant). Trois valeurs sont gérées dans ce fichier :
0
ASLR désactivée. C’est la valeur par défaut pour les architectures qui ne gèrent pas l’ASLR, et quand le noyau est amorcé avec le paramètre norandmaps.
1
Randomiser les adresses d’allocations de mmap(2), de la pile et des pages VDSO (virtual dynamic shared object). Entre autres choses, cela signifie que les bibliothèques partagées seront chargées à des adresses aléatoires. Le segment de code des binaires liés PIE sera aussi chargé à une adresse aléatoire. Cette valeur est celle par défaut si le noyau a été configuré avec CONFIG_COMPAT_BRK.
2
(Depuis Linux 2.6.25) Prendre aussi en charge la randomisation du tas. Cette valeur est celle par défaut si le noyau a été configuré avec CONFIG_COMPAT_BRK.
/proc/sys/kernel/real-root-dev
Ce fichier est documenté dans le fichier Documentation/admin-guide/initrd.rst (ou Documentation/initrd.txt avant Linux 4.10) des sources du noyau Linux.
/proc/sys/kernel/reboot-cmd (Sparc seulement)
Ce fichier permet apparemment de fournir un argument au chargeur d’amorçage ROM/Flash de SPARC. Peut-être indique-t-il quoi faire après un redémarrage ?
/proc/sys/kernel/rtsig-max
(Jusqu’à Linux 2.6.7 inclus ; consulter setrlimit(2)). Ce fichier peut être utilisé pour ajuster le nombre maximal de signaux POSIX temps réel (en file d'attente) pouvant se trouver en attente sur le système.
/proc/sys/kernel/rtsig-nr
(Jusqu’à Linux 2.6.7 inclus). Ce fichier indique le nombre de signaux POSIX temps réel actuellement en file attente.
/proc/pid/sched_autogroup_enabled (depuis Linux 2.6.38)
Consulter sched(7).
/proc/sys/kernel/sched_child_runs_first (depuis Linux 2.6.23)
Si ce fichier contient la valeur zéro, alors, après un fork(2), le parent est le premier programmé sur le CPU. Si le fichier contient une valeur différente, l’enfant est programmé en premier sur le CPU (bien évidemment sur un système multiprocesseur, le parent et l’enfant peuvent être tous les deux programmés sur le CPU).
/proc/sys/kernel/sched_rr_timeslice_ms (disponible depuis Linux 3.9)
Consulter sched_rr_get_interval(2).
/proc/sys/kernel/sched_rt_period_us (depuis Linux 2.6.25)
Consulter sched(7).
/proc/sys/kernel/sched_rt_runtime_us (depuis Linux 2.6.25)
Consulter sched(7).
/proc/sys/kernel/seccomp (depuis Linux 4.14)
Ce répertoire fournit une configuration et des informations supplémentaires sur seccomp. Consulter seccomp(2) pour plus de détails.
/proc/sys/kernel/sem (disponible depuis Linux 2.4)
Ce fichier contient 4 limites pour les sémaphores System V. Ces valeurs sont respectivement :
Le nombre maximal de sémaphores par ensemble de sémaphores.
Une limite générale au système pour le nombre de sémaphores dans tous les ensembles de sémaphores.
Le nombre maximal d'opérations qui peuvent être indiquées dans un appel semop(2).
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 périphérique SCSI générique (sg). Vous ne pouvez 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/shm_rmid_forced (disponible depuis Linux 3.1)
Si ce fichier est configuré à la valeur 1, tous les segments de mémoire partagée System V seront marqués pour destruction dès que le nombre de processus attachés tombe à zéro. Autrement dit, il n'est plus possible de créer des segments de mémoire partagée qui existent indépendamment des autres processus attachés.
L’effet est identique à celui de la réalisation d’un IPC_RMID shmctl(2) sur tous les segments existants ainsi que sur tous les segments créés dans le futur (jusqu’à que ce fichier soit réinitialisé à zéro). Il est à remarquer que les segments existants qui ne sont attachés à aucun processus sont immédiatement détruits quand ce fichier est configuré à la valeur 1. Définir cette option détruira aussi les segments qui ont été créés, mais jamais attachés, à la terminaison du processus qui a créé le segment avec shmget(2).
Définir ce fichier à la valeur 1 fournit un moyen de s'assurer que tous les segments de mémoire partagée System V sont comptés par rapport à l'utilisation et les limites de ressources (consulter la description de RLIMIT_AS dans getrlimit(2)) d'au moins un processus.
Puisque définir ce fichier à la valeur 1 produit un comportement non normalisé et pourrait aussi casser des applications existantes, la valeur par défaut est 0. Ne configurez la valeur de ce fichier à 1 que si vous avez une bonne compréhension des sémantiques des applications utilisant la mémoire partagée System V sur votre système.
/proc/sys/kernel/shmall (disponible depuis Linux 2.2)
Ce fichier contient le nombre maximal de pages de mémoire partagée (IPC System V) au niveau du système.
/proc/sys/kernel/shmmax (disponible depuis Linux 2.2)
Ce fichier permet de lire ou modifier la limite d’exécution pour la taille maximale des segments de mémoire partagée (IPC System V) qui peuvent être créés. Jusqu’à 1 Go de segments de mémoire partagée 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 System V qui peuvent être créés sur tout le système.
/proc/sys/kernel/sysctl_writes_strict (depuis Linux 3.16)
La valeur dans ce fichier détermine comment le décalage (offset) dans le fichier affecte le comportement de mise à jour des enregistrements dans les fichiers sous /proc/sys. Ce fichier a trois valeurs possibles :
-1
Cette valeur fournit la gestion patrimoniale, sans avertissement de la fonction printk. Chaque write(2) doit entièrement contenir la valeur à écrire, et plusieurs écritures sur le même descripteur de fichier écraseront sa valeur entièrement, sans tenir compte de la position dans le fichier.
0
(Par défaut) Cette valeur fournit le même comportement que pour -1, mais les avertissements de ̣printk sont écrits pour les processus qui réalisent des écritures quand le décalage dans le fichier n’est pas 0.
1
Respect du décalage dans le fichier lors d’écriture de chaînes dans les fichiers /proc/sys. Plusieurs écritures s’ajouteront dans le tampon de valeur. Tout ce qui est écrit au-delà de la longueur maximale du tampon de valeur sera ignoré. Les écritures sur les entrées numériques de /proc/sys doivent l’être au décalage 0 et la valeur doit être entièrement contenue dans le tampon fourni à write(2).
/proc/sys/kernel/sysrq
Ce fichier contrôle les fonctions qui peuvent être appelées avec la touche de clavier SysRq (Syst). Par défaut, le fichier contient un « 1 », ce qui signifie que toute demande SysRq est autorisée (dans les anciennes versions du noyau, SysRq était désactivé par défaut, et il fallait l'activer explicitement lors de l'exécution, mais ce n'est plus le cas). Les valeurs possibles dans ce fichier sont :
0
Désactivation totale de cette touche ;
1
Activer toutes les fonctions de cette touche ;
> 1
Masque de bits des fonctions de SysRq autorisées :
  2
Activation du contrôle du niveau de journalisation de la console,
  4
Activation des contrôles avec le clavier (SAK, unraw),
  8
Activation du débogage des vidages de processus, etc.,
 16
Activation de la commande sync,
 32
Activation du remontage en lecture seule,
 64
Activation de l’envoi de signaux aux processus (tern, kill, oon-kill),
128
Permission de redémarrer/arrêter,
256
Permission de réglage de la valeur nice de toutes les tâches temps réel.
Ce fichier n'est présent que si l'option de configuration du noyau CONFIG_MAGIC_SYSRQ a été activée. Pour plus d'informations, consulter le fichier Documentation/admin-guide/sysrq.rst (ou Documentation/sysrq.txtavant Linux 4.10) des sources du noyau.
/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/threads-max (disponible depuis Linux 2.3.11)
Ce fichier contient le nombre maximal de threads (tâches) qui peuvent être créés sur le système.
Depuis Linux 4.1, la valeur pouvant être écrite pour threads-max est limitée. Sa valeur minimale est 20. Sa valeur maximale est donnée par la constante FUTEX_TID_MASK (0x3fffffff). Si la valeur indiquée se situe en dehors de cet intervalle, une erreur EINVAL survient.
Cette valeur écrite est confrontée avec les pages de RAM disponibles. Si les structures de thread veulent occuper trop de (plus d’un huitième des) pages de RAM disponibles, threads-max est réduit en conséquence.
/proc/sys/kernel/yama/ptrace_scope (depuis Linux 3.5)
Consulter ptrace(2).
/proc/sys/kernel/zero-paged (PowerPC seulement)
Ce fichier contient un drapeau. S'il est activé (différent de zéro), 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 éléments relatifs au réseau. Des explications pour certains des fichiers de ce répertoire peuvent être trouvées dans tcp(7) et ip(7).
/proc/sys/net/core/bpf_jit_enable
Consulter bpf(2).
/proc/sys/net/core/somaxconn
Ce fichier définit une valeur plafond pour le paramètre backlog de listen(2). Consulter la page de manuel listen(2) pour plus de précisions.
/proc/sys/proc
Ce répertoire peut être vide.
/proc/sys/sunrpc
Ce répertoire gère l’appel de procédure à distance (RPC) de Sun sur un système de fichiers réseau (NFS). Sur certains systèmes, il est absent.
/proc/sys/user (depuis Linux 4.9)
Consulter namespaces(7).
/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/admin_reserve_kbytes (depuis Linux 3.10)
Ce fichier définit le montant de mémoire libre (en Kio) qui doit être réservée sur le système pour les utilisateurs ayant la capacité CAP_SYS_ADMIN.
La valeur par défaut dans ce fichier est le minimum de [3 % de pages libres, 8 Mio] exprimé en Kio. La valeur par défaut est destinée à en fournir assez pour que le superutilisateur puisse se connecter et tuer un processus si nécessaire, en utilisant le mode « guess » d’allocation excessive de mémoire (overcommit – c’est-à-dire 0 dans /proc/sys/vm/overcommit_memory).
Les systèmes qui s'exécutent dans le mode « overcommit never » (c’est-à-dire 2 dans /proc/sys/vm/overcommit_memory) doivent augmenter la valeur dans ce fichier pour prendre en compte la taille totale de mémoire virtuelle pour les programmes utilisés pour récupérer (par exemple, login(1), ssh(1) et top(1)). Sinon le superutilisateur pourrait ne pas être capable de se connecter pour récupérer le système. Par exemple, pour x86-64 une valeur acceptable est 131072 (128 Mio réservés).
Le changement de la valeur dans ce fichier prend effet dès qu’une application requiert de la mémoire.
/proc/sys/vm/compact_memory (depuis Linux 2.6.35)
Lorsque 1 est inscrit dans ce fichier, toutes les zones sont compactées de façon à ce que toute la mémoire libre soit constituée de blocs contigus si possible. L’effet de cette action est visible en examinant /proc/buddyinfo.
Ce fichier n’est présent que si le noyau est configuré avec l'option CONFIG_COMPACTION.
/proc/sys/vm/drop_caches (depuis Linux 2.6.16)
Écrire dans ce fichier force le noyau à libérer les caches, entrées de répertoire et inœuds propres de la mémoire, en libérant ainsi cette mémoire. Ce peut être utile pour les tests de gestion de mémoire et la réalisation de tests reproductibles de performance de systèmes de fichiers. Puisqu’une écriture dans ce fichier fait perdre tous les avantages du cache, cela peut dégrader l’intégralité des performances du système.
Pour libérer les pages de cache, utilisez :

echo 1 > /proc/sys/vm/drop_caches
    

Pour libérer les entrées de répertoire et les inœuds, utilisez :

echo 2 > /proc/sys/vm/drop_caches
    

Pour libérer les pages de cache, entrées de répertoire et inœuds, utilisez :

echo 3 > /proc/sys/vm/drop_caches
    

Parce que l’écriture dans ce fichier est non destructive, et que les objets sales ne sont pas libérables, l'utilisateur devrait utiliser la commande sync(8) au préalable.
/proc/sys/vm/sysctl_hugetlb_shm_group (depuis Linux 2.6.7)
Ce fichier éditable contient un ID de groupe autorisé à allouer de la mémoire en utilisant des pages volumineuses. Si un processus à un ID de groupe de système de fichiers ou tout autre ID de groupe supplémentaire qui correspond à cet ID de groupe, il peut réaliser des allocations de pages volumineuses sans détenir la capacité CAP_IPC_LOCK. Consulter memfd_create(2), mmap(2) et shmget(2).
/proc/sys/vm/legacy_va_layout (depuis Linux 2.6.9)
S'il est différent de zéro, cela désactive la nouvelle disposition de carte mémoire 32 bits. Le noyau utilisera alors la disposition patrimoniale (2.4) pour tous les processus.
/proc/sys/vm/memory_failure_early_kill (depuis Linux 2.6.32)
Contrôler comment tuer les processus lorsqu'une erreur mémoire non corrigée (typiquement une erreur sur 2 bits dans un module de mémoire), qui ne peut pas être gérée par le noyau, est détectée en tâche de fond par le matériel. Dans certains cas (par exemple s'il existe une copie valable de la page sur disque), le noyau est capable de gérer cette erreur de manière transparente sans qu'aucune application ne soit touchée. Mais si le noyau n'a pas de copie à jour des données, il va tuer des processus afin d'empêcher la propagation de la corruption des données.
Ce fichier peut contenir l'une des valeurs suivantes :
1
Tuer dès que la corruption est détectée tous les processus qui ont une projection de la page corrompue et non rechargeable. Notez que cela n'est pas possible avec quelques types de pages, comme les données allouées en interne par le noyau ou le cache d'échange (swap), mais cela fonctionne avec la majorité des pages utilisateur.
0
Supprimer la projection de la page corrompue dans tous les processus, et ne tuer les processus que s'ils essaient d'y accéder.
L'action de tuer le processus est effectuée en envoyant un signal SIGBUS avec si_code mis à BUS_MCEERR_AO. Les processus peuvent gérer cette situation s'ils le souhaitent ; consulter sigaction(2) pour plus de précisions.
Cette fonctionnalité n'est disponible que sur les architectures/plateformes avec une gestion avancée de vérification de la machine et dépend des possibilités du matériel.
Les applications peuvent modifier individuellement le paramètre memory_failure_early_kill avec l'opération PR_MCE_KILL de prctl(2).
Ce fichier n'est disponible que si le noyau est configuré avec l'option CONFIG_MEMORY_FAILURE.
/proc/sys/vm/memory_failure_recovery (depuis Linux 2.6.32)
Activer la récupération d’une erreur mémoire (si la plateforme le permet).
1
Tenter une récupération.
0
Toujours sortir en mode panique sur une erreur mémoire.
Ce fichier n'est disponible que si le noyau est configuré avec l'option CONFIG_MEMORY_FAILURE.
/proc/sys/vm/oom_dump_tasks (depuis Linux 2.6.25)
Activer la production d'une image des tâches du système (à l'exception des threads du noyau) lors des mises à mort sur mémoire saturée (OOM-killing). L'image contient les informations suivantes pour chaque tâche (thread ou processus) : ID de thread, ID utilisateur réel, ID groupe de threads (ID du processus), taille de la mémoire virtuelle, taille de la mémoire résidente, CPU sur lequel la tâche était ordonnancée, valeur de oom_adj (voir la description de /proc/pid/oom_adj) et le nom de la commande. La production de cette image est utile pour trouver la raison de la mise à mort sur mémoire saturée et pour identifier la tâche défectueuse qui en est la cause.
Avec la valeur zéro, l'information est supprimée. Sur les très gros systèmes avec des milliers de tâches, il peut être impossible de créer l'image avec les informations d’état de la mémoire pour chacune d'entre elles. Ces systèmes ne doivent pas être obligés de pénaliser leurs performances dans ces cas de pénurie de mémoire si ces informations ne sont pas souhaitées.
Pour toute valeur différente de zéro, ces informations sont présentées à chaque fois que le système (OOM-killer) de mise à mort sur mémoire saturée tue réellement une tâche monopolisation la mémoire (memory-hogging).
La valeur par défaut est 0.
/proc/sys/vm/oom_kill_allocating_task (depuis Linux 2.6.24)
Ce fichier active ou désactive la mise à mort de la tâche qui a créé le dépassement de mémoire dans les situations de mémoire saturée.
Avec une valeur de zéro, l’OOM-killer parcourra la liste entière des tâches et celle à tuer sera sélectionnée en fonction d'heuristiques. Cette valeur sélectionne normalement une tâche monopolisant une grosse quantité de mémoire et qui libérera beaucoup de mémoire lorsqu'elle sera tuée.
Avec une valeur différente de zéro, l’OOM-killer tuera simplement la tâche provoquant le dépassement de mémoire. Cela évite un parcours potentiellement coûteux de la liste des tâches.
Si /proc/sys/vm/panic_on_oom est différent de zéro, il est prioritaire sur toute valeur utilisée dans /proc/sys/vm/oom_kill_allocating_task.
La valeur par défaut est 0.
/proc/sys/vm/overcommit_kbytes (depuis Linux 3.14)
Ce fichier éditable fournit une alternative à /proc/sys/vm/overcommit_ratio pour contrôler CommitLimit quand /proc/sys/vm/overcommit_memory a pour valeur 2. Il permet de spécifier la quantité de mémoire réservée en plus sous forme de valeur absolue (en ko), plutôt qu’en pourcentage comme ce qui est fait pour overcommit_ratio. Cela permet un contrôle plus fin de CommitLimit sur les systèmes ayant des tailles de mémoire extrêmement importantes.
Seul un des deux fichiers overcommit_kbytes ou overcommit_ratio peut avoir un effet. Si overcommit_kbytes a une valeur différente de zéro, il est utilisé pour calculer CommitLimit, sinon c'est overcommit_ratio qui est utilisé. Écrire une valeur dans un de ces fichiers fera que la valeur dans l’autre fichier sera définie à zéro.
/proc/sys/vm/overcommit_memory
Ce fichier contient le mode pour le comptage de la mémoire virtuelle du noyau. Les valeurs sont :
0 : gestion heuristique du dépassement d'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) utilisant MAP_NORESERVE ne sont pas vérifiés et le niveau de vérification par défaut est très faible, avec le risque d'avoir un processus tué à cause du manque de mémoire (« OOM-killed »).
Dans le mode 1, le noyau prétend qu’il y a toujours assez de mémoire, jusqu’à ce que la mémoire soit réellement épuisée. Un cas d’utilisation de ce mode est celui des applications de calcul scientifique utilisant de grands tableaux creux. Avant Linux 2.6.0, toute valeur différente de zéro impliquait le mode 1.
Dans le mode 2 (disponible depuis Linux 2.6), l’espace total d’adresses virtuelles pouvant être alloué (CommitLimit dans /proc/meminfo) est calculé ainsi :

CommitLimit = (total_RAM - total_huge_TLB) *
	      overcommit_ratio / 100 + total_swap
    

où :
  • total_RAM est la quantité totale de RAM sur le système ;
  • total_huge_TLB est la quantité de mémoire réservée pour les pages volumineuses ;
  • overcommit_ratio est la valeur dans /proc/sys/vm/overcommit_ratio ;
  • total_swap est la quantité d’espace d’échange.
Par exemple, sur un système ayant 16 Go de RAM physique et 16 Go d'espace d'échange, aucun espace réservé pour les pages volumineuses et avec un overcommit_ratio de 50, cette formule renvoie un CommitLimit de 24 Go.
Depuis Linux 3.14, si la valeur dans /proc/sys/vm/overcommit_kbytes est différente de zéro, CommitLimit est calculé ainsi :

CommitLimit = overcommit_koctets + total_swap
    

Consulter aussi la description dans /proc/sys/vm/admin_reserve_kbytes et /proc/sys/vm/user_reserve_kbytes.
/proc/sys/vm/overcommit_ratio (depuis Linux 2.6.0)
Ce fichier éditable définit un pourcentage de dépassement de mémoire. La valeur par défaut dans ce fichier est 50. Consulter la description de /proc/sys/vm/overcommit_memory.
/proc/sys/vm/panic_on_oom (depuis Linux 2.6.18)
Ce fichier active ou désactive le déclenchement d'une panique dans les situations de mémoire saturée.
Si ce fichier est configuré à la valeur 0, l’OOM-killer du noyau tuera un processus perturbateur. En général, il peut tuer un processus perturbateur sans tuer le système.
Si ce fichier est configuré à la valeur 1, le noyau paniquera dans une situation de mémoire saturée. Cependant, si un processus limite les allocations à certains nœuds en utilisant des politiques de mémoire (MPOL_BIND de mbind(2)) ou des ensembles de processeurs (cpuset(7)), et si ces nœuds voient leur mémoire saturée, un processus peut être tué par l’OOM-killer. Aucune panique ne survient dans ce cas. Comme de la mémoire est disponible sur d'autres nœuds, le système n'a pas entièrement atteint une situation de mémoire saturée.
Si ce fichier est configuré à la valeur 2, le noyau panique toujours dans une situation de mémoire saturée.
La valeur par défaut est 0. Les valeurs 1 et 2 sont utilisées pour la récupération en cas d'erreur de groupements. Sélectionner l'un ou l'autre en fonction de la politique de récupération en cas d'erreur.
/proc/sys/vm/swappiness
La valeur dans ce fichier contrôle le niveau d'agressivité utilisé par le noyau pour déplacer des pages mémoire dans l'espace d'échange. Les valeurs élevées indiquent une agressivité plus importante. La valeur par défaut est de 60.
/proc/sys/vm/user_reserve_kbytes (depuis Linux 3.10)
Ce fichier indique une quantité de mémoire (en Kio) à réserver pour les processus d’utilisateur. Cela permet d’empêcher un utilisateur de démarrer un seul processus monopolisateur de mémoire et qu’il ne puisse récupérer (tuer le monopolisateur). La valeur dans ce fichier a un effet seulement quand /proc/sys/vm/overcommit_memory est défini à 2 (mode « overcommit never »). Dans ce cas, le système réserve une quantité de mémoire qui est le minimum de [3 % de la taille du processus en cours, user_reserve_kbytes].
La valeur par défaut dans ce fichier est le minimum de [3 % des pages libres, 128 Mio] exprimé en Kio.
Si la valeur dans ce fichier est définie à zéro, l’utilisateur pourra allouer toute la mémoire libre pour un seul processus (moins la quantité réservée par /proc/sys/vm/admin_reserve_kbytes). Tout essai ultérieur d’exécuter une commande aboutira dans un « fork: Cannot allocate memory ».
Le changement de la valeur dans ce fichier prend effet dès qu’une application requiert de la mémoire.
/proc/sys/vm/unprivileged_userfaultfd (depuis Linux 5.2)
Ce fichier (éditable) expose un drapeau qui contrôle si les processus non privilégiés sont autorisés à employer userfaultfd(2). Si ce fichier a pour valeur 1, alors ils le peuvent, si la valeur est 0, seuls les processus ayant la capacité CAP_SYS_PTRACE peuvent utiliser userfaultfd(2). La valeur par défaut dans ce fichier est 1.
/proc/sysrq-trigger (depuis Linux 2.4.21)
L'écriture d'un caractère dans ce fichier déclenche la même fonction SysRq que la saisie de la combinaison ALT-SysRq-<caractère> (consulter la description de /proc/sys/kernel/sysrq). Ce fichier est normalement accessible en écriture seulement pour root. Pour plus d'informations, consulter le fichier Documentation/admin-guide/sysrq.rst (ou Documentation/sysrq.txt avant Linux 4.10) des sources du noyau.
/proc/sysvipc
Sous-répertoire contenant les pseudofichiers msg, sem et shm. Ces fichiers listent les objets d'IPC de System V (respectivement les files de messages, les sémaphores et la mémoire partagée) existant actuellement sur le système, en donnant les mêmes informations que celles disponibles par la commande ipcs(1). Ces fichiers ont des en-têtes et sont formatés (à raison d'un objet IPC par ligne) de façon à être lus facilement. La page sysvipc(7) donne davantage d'informations concernant les données fournies par ces fichiers.
/proc/thread-self (depuis Linux 3.17)
Ce répertoire se rapporte au thread accédant au système de fichiers /proc, et est identique au sous-répertoire de /proc/self/tasktid ayant pour nom l’Id de thread (tid) du même thread.
/proc/timer_list (depuis Linux 2.6.21)
Ce fichier en lecture seule expose la liste de tous les temporisateurs (haute résolution) en attente, de toutes les sources d'évènement d'horloge, ainsi que leurs paramètres sous une forme lisible par un humain.
/proc/timer_stats (de Linux 2.6.21 jusqu’à Linux 4.10)
Il s'agit d'une fonctionnalité de débogage offrant aux développeurs noyau et espace utilisateur la visibilité sur l'utilisation ou l'abus des temporisateurs. Elle permet aux développeurs noyau et espace utilisateur de vérifier que leur code ne fait pas un usage injustifié des temporisateurs. L'objectif est d'éviter les réveils inutiles et ainsi d'optimiser la consommation d'énergie.
Si cette fonctionnalité est activée dans le noyau (CONFIG_TIMER_STATS) mais n'est pas utilisée, le surcoût de temps de traitement est quasiment nul et plutôt faible sur la taille des structures. Même lorsque la collecte est activée au moment de l’exécution, son surcoût est faible : tous les verrous sont par CPU et la recherche est hachée.
Le fichier /proc/timer_stats est utilisé à la fois pour contrôler la fonction d'échantillonnage et lire les informations échantillonnées.
La fonction timer_stats n'est pas active au démarrage. La commande suivante démarre l'échantillonnage :

# echo 1 > /proc/timer_stats
    

La commande suivante arrête l'échantillonnage :

# echo 0 > /proc/timer_stats
    

La commande suivante récupère les statistiques :

$ cat /proc/timer_stats
    

Lorsque l'échantillonnage est activé, chaque lecture depuis /proc/timer_stats fournira des statistiques nouvellement mises à jour. Une fois l'échantillonnage désactivé, les informations échantillonnées sont conservées jusqu'au démarrage d'une nouvelle période de collecte. Cela autorise plusieurs lectures.
Exemple de sortie de /proc/timer_stats :

$ cat /proc/timer_stats
Timer Stats Version: v0.3
Sample period: 1.764 s
Collection: active

255, 0 swapper/3 hrtimer_start_range_ns (tick_sched_timer)
71, 0 swapper/1 hrtimer_start_range_ns (tick_sched_timer)
58, 0 swapper/0 hrtimer_start_range_ns (tick_sched_timer)
4, 1694 gnome-shell mod_delayed_work_on (delayed_work_timer_fn)
17, 7 rcu_sched rcu_gp_kthread (process_timeout) ...
1, 4911 kworker/u16:0 mod_delayed_work_on (delayed_work_timer_fn)
1D, 2522 kworker/0:0 queue_delayed_work_on (delayed_work_timer_fn) 1029 total events, 583.333 events/sec

Les colonnes produites représentent :
[1]
le nombre d'évènements, suivi éventuellement (depuis Linux 2.6.23) de la lettre « D » s'il s'agit d'un temporisateur différable ;
[2]
le PID du processus qui a initialisé le temporisateur ;
[3]
le nom du processus qui a initialisé le temporisateur ;
[4]
la fonction où le temporisateur a été initialisé, et, entre parenthèses, la fonction de rappel associée au temporisateur.
Durant le cycle de développement de Linux 4.11, ce fichier a été supprimé pour des raisons de sécurité, car il exposait des informations à travers les espaces de noms. De plus, il est possible d’obtenir les mêmes informations à l’aide des fonctions internes de traçage du noyau telles que ftrace.
/proc/tty
Sous-répertoire contenant les pseudofichiers et les sous-répertoires pour les pilotes de tty et les disciplines de ligne (LDISC).
/proc/uptime
Ce fichier contient deux nombres (valeurs en secondes) : la durée de fonctionnement (uptime) et le temps écoulé à ne rien faire (idle).
/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 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994
    

/proc/vmstat (depuis Linux 2.6.0)
Ce fichier affiche diverses statistiques sur la mémoire virtuelle. Chaque ligne de ce fichier contient une seule paire nom-valeur, délimitée par un espace blanc. Certaines lignes sont présentes seulement si le noyau a été configuré avec les options appropriées (dans certains cas, les options nécessaires pour certains fichiers ont changé à travers les versions du noyau, aussi elles ne sont pas listées ici ; plus de détails sont disponibles en consultant le code source du noyau). Les champs suivants peuvent être présents :
Quantité de mémoire allouée aux piles du noyau.
Pages utilisées par shmem et tmpfs(5).
Nombre de pages CMA (Contiguous Memory Allocator) libres.
Consulter le fichier Documentation/admin-guide/mm/transhuge.rst des sources du noyau.
Consulter le fichier Documentation/admin-guide/mm/transhuge.rst des sources du noyau.
Consulter le fichier Documentation/admin-guide/mm/transhuge.rst des sources du noyau.
Consulter le fichier Documentation/admin-guide/mm/transhuge.rst des sources du noyau.
Consulter le fichier Documentation/admin-guide/mm/transhuge.rst des sources du noyau.
Consulter le fichier Documentation/admin-guide/mm/transhuge.rst des sources du noyau.
Consulter le fichier Documentation/admin-guide/mm/transhuge.rst des sources du noyau.
Consulter le fichier Documentation/admin-guide/mm/transhuge.rst des sources du noyau.
Consulter le fichier Documentation/admin-guide/mm/transhuge.rst des sources du noyau.
Consulter le fichier Documentation/admin-guide/mm/transhuge.rst des sources du noyau.
/proc/zoneinfo (depuis Linux 2.6.13)
Ce fichier affiche des informations concernant les zones de mémoire. Il permet d’analyser le comportement de la mémoire virtuelle.

NOTES

De nombreux fichiers contiennent des chaînes (par exemple, l'environnement et la ligne de commande) dans un format interne avec des sous-champs terminés par un octet NULL « \0 ». Pour inspecter de tels fichiers, les résultats peuvent être plus lisibles en utilisant la commande suivante :


$ cat file | tr '\000' '\n'

Cette page de manuel est incomplète, peut être imprécise, et devrait être mise à jour très souvent.

VOIR AUSSI

cat(1), dmesg(1), find(1), free(1), htop(1), init(1), ps(1), pstree(1), tr(1), uptime(1), chroot(2), mmap(2), readlink(2), syslog(2), slabinfo(5), sysfs(5), hier(7), namespaces(7), time(7), arp(8), hdparm(8), ifconfig(8), lsmod(8), lspci(8), mount(8), netstat(8), procinfo(8), route(8), sysctl(8)

Les fichiers des sources du noyau Linux : Documentation/filesystems/proc.rst, Documentation/admin-guide/sysctl/fs.rst, Documentation/admin-guide/sysctl/kernel.rst, Documentation/admin-guide/sysctl/net.rst et Documentation/admin-guide/sysctl/vm.rst.

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr> et Lucien Gentis <lucien.gentis@waika9.com>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

8 juillet 2023 Pages du manuel de Linux 6.05.01