Comment vérifier si les paramètres ulimit sont appliqués sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si les paramètres ulimit sont correctement appliqués sous Linux. Vous explorerez différentes méthodes pour vérifier les limites de ressources, en commençant par l'affichage des limites du shell actuel à l'aide de la commande ulimit -a.

Ensuite, vous examinerez le fichier de configuration système /etc/security/limits.conf pour comprendre comment les limites sont définies pour les utilisateurs et les groupes. Enfin, vous apprendrez à vérifier les limites réelles appliquées à un processus en cours d'exécution en inspectant son entrée /proc. Cette approche pratique vous permettra de comprendre de manière approfondie le fonctionnement des limites de ressources et de résoudre les problèmes liés à ces limites dans un environnement Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/echo -.-> lab-558811{{"Comment vérifier si les paramètres ulimit sont appliqués sous Linux"}} linux/help -.-> lab-558811{{"Comment vérifier si les paramètres ulimit sont appliqués sous Linux"}} linux/cat -.-> lab-558811{{"Comment vérifier si les paramètres ulimit sont appliqués sous Linux"}} linux/env -.-> lab-558811{{"Comment vérifier si les paramètres ulimit sont appliqués sous Linux"}} end

Afficher les limites avec ulimit -a

Dans cette étape, vous allez apprendre à connaître les limites de ressources sous Linux en utilisant la commande ulimit. Les limites de ressources contrôlent la quantité maximale de ressources système qu'un processus peut utiliser. Cela est important pour la stabilité du système et pour empêcher qu'un seul processus consomme toutes les ressources disponibles.

La commande ulimit vous permet de visualiser et de définir ces limites pour la session shell actuelle et tous les processus lancés depuis celle-ci.

Pour afficher toutes les limites de ressources actuelles, ouvrez votre terminal et tapez la commande suivante :

ulimit -a

Appuyez sur Entrée.

Vous verrez une sortie similaire à celle-ci :

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) <placeholder>
max locked memory       (kbytes, -l) <placeholder>
max memory size         (kbytes, -m) unlimited
open files                      (-n) <placeholder>
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) <placeholder>
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) <placeholder>
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

La sortie montre diverses limites de ressources, telles que le nombre maximal de fichiers ouverts (-n), le nombre maximal de processus utilisateur (-u) et la taille maximale de la pile (-s). La valeur unlimited signifie qu'il n'y a pas de limite imposée pour cette ressource.

Comprendre ces limites est essentiel pour diagnostiquer les problèmes de performance ou le comportement inattendu d'un programme. Par exemple, si un programme échoue parce qu'il ne peut pas ouvrir assez de fichiers, vérifier la limite open files avec ulimit -a serait une bonne première étape.

Vous pouvez également afficher des limites individuelles en spécifiant l'option. Par exemple, pour voir la limite sur le nombre de fichiers ouverts :

ulimit -n

Cela affichera un seul nombre représentant la limite actuelle pour les fichiers ouverts.

Expérimentez avec la commande ulimit -a dans votre terminal. Familiarisez-vous avec les différents types de limites affichées.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier la configuration des limites avec cat /etc/security/limits.conf

Dans l'étape précédente, vous avez utilisé ulimit -a pour voir les limites de ressources actuelles de votre session shell. Ces limites sont souvent configurées au niveau du système dans un fichier appelé /etc/security/limits.conf.

Ce fichier fait partie du cadre des Pluggable Authentication Modules (PAM) et permet aux administrateurs de définir des limites de ressources pour les utilisateurs et les groupes lors de la connexion.

Voyons le contenu de ce fichier de configuration en utilisant la commande cat. cat est une commande simple utilisée pour afficher le contenu des fichiers.

Ouvrez votre terminal et tapez la commande suivante :

cat /etc/security/limits.conf

Appuyez sur Entrée.

Vous verrez le contenu du fichier limits.conf. La sortie ressemblera à ceci (les commentaires et les entrées spécifiques peuvent varier) :

## /etc/security/limits.conf
#
#This file sets the limits for the resources available to the login session of
#users and groups. It is used together with the pam_limits module.
#
## (it is recommended to use #include files from /etc/security/limits.d/)
#

#*               soft    core            0
#root            hard    core            unlimited
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           unlimited
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

Ce fichier utilise un format simple :

<domain> <type> <item> <value>

  • <domain> : Spécifie l'utilisateur ou le groupe auquel la limite s'applique. Cela peut être un nom d'utilisateur, un nom de groupe (précédé de @), ou * pour tous les utilisateurs.
  • <type> : Peut être soft ou hard.
    • Les limites soft sont les limites actuelles qui peuvent être augmentées par l'utilisateur (jusqu'à la limite hard).
    • Les limites hard sont les limites maximales que les utilisateurs non-root ne peuvent pas dépasser.
  • <item> : L'élément de ressource qui est limité (par exemple, nproc pour le nombre de processus, nofile pour le nombre de fichiers ouverts).
  • <value> : La valeur de la limite.

Les lignes commençant par # sont des commentaires et sont ignorées.

Remarquez la ligne ## (it is recommended to use #include files from /etc/security/limits.d/). Cela indique que les limites spécifiques au système ou à l'application sont souvent placées dans des fichiers séparés dans le répertoire /etc/security/limits.d/. Cela permet de garder le fichier principal limits.conf propre et organisé.

Bien que vous ne modifiiez pas ce fichier dans ce laboratoire (lab), il est important de comprendre sa structure et son objectif pour l'administration système. Les limites que vous avez vues avec ulimit -a sont souvent dérivées des paramètres de ce fichier et des fichiers dans limits.d.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier les limites des processus avec cat /proc/self/limits

Dans les étapes précédentes, vous avez appris à utiliser ulimit pour afficher les limites de la session actuelle et /etc/security/limits.conf pour la configuration au niveau du système. Maintenant, examinons comment un processus en cours d'exécution indique ses propres limites.

Linux propose un système de fichiers virtuel appelé /proc qui contient des informations sur les processus en cours d'exécution et le noyau du système. Chaque processus en cours d'exécution a un répertoire sous /proc nommé d'après son identifiant de processus (Process ID - PID).

Le répertoire spécial /proc/self est un lien symbolique qui pointe vers le répertoire /proc du processus qui l'accède. Ainsi, lorsque vous êtes dans votre terminal et que vous accédez à /proc/self, vous consultez les informations relatives au processus shell actuel.

À l'intérieur du répertoire /proc/self, il y a un fichier nommé limits qui contient les limites de ressources pour ce processus spécifique.

Voyons les limites pour votre processus shell actuel en utilisant cat :

cat /proc/self/limits

Appuyez sur Entrée.

Vous verrez une sortie similaire à celle-ci :

Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             unlimited            unlimited            processes
Max open files            1048576              1048576              files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       <placeholder>        <placeholder>        signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

Cette sortie montre la Soft Limit (limite souple) et la Hard Limit (limite rigide) pour chaque ressource, de manière similaire à ce que vous avez vu avec ulimit -a. Les valeurs ici reflètent les limites réelles appliquées au processus qui a exécuté la commande cat (votre shell).

Comparez la sortie de cat /proc/self/limits avec celle de ulimit -a de la première étape. Vous devriez constater que les valeurs sont cohérentes, car ulimit -a indique les limites du processus shell actuel.

Le système de fichiers /proc est un outil puissant pour inspecter l'état de votre système Linux et de ses processus. Le fichier limits dans le répertoire de chaque processus offre un moyen direct de vérifier les limites de ressources en vigueur pour ce processus spécifique.

Vous avez maintenant appris trois façons différentes d'interagir avec les limites de ressources sous Linux : afficher les limites de la session actuelle avec ulimit -a, examiner la configuration au niveau du système dans /etc/security/limits.conf et vérifier les limites pour un processus spécifique via /proc/<PID>/limits (ou /proc/self/limits).

Cliquez sur Continuer pour terminer ce laboratoire (lab).

Résumé

Dans ce laboratoire (lab), vous avez appris à vérifier si les paramètres ulimit sont appliqués sous Linux. Vous avez commencé par utiliser la commande ulimit -a pour afficher les limites de ressources actuelles de la session shell, en comprenant les diverses limites telles que le nombre de fichiers ouverts, le nombre de processus utilisateur et la taille de la pile (stack size). Cette commande fournit un aperçu rapide des limites héritées par les processus lancés depuis le shell actuel.

Ensuite, vous avez exploré le fichier de configuration système /etc/security/limits.conf en utilisant cat. Ce fichier définit les limites de ressources par défaut pour les utilisateurs et les groupes, qui sont appliquées lors de la connexion. Enfin, vous avez vérifié les limites de ressources réelles d'un processus en cours d'exécution en examinant /proc/self/limits, qui montre les limites effectives pour le processus actuel, démontrant ainsi comment vérifier les limites appliquées à une instance de processus spécifique.