Présentation
ulimit
est une commande shell Linux intégrée qui permet d'afficher ou de limiter les quantités de ressources système que les utilisateurs individuels consomment. Limiter l'utilisation des ressources est utile dans les environnements avec plusieurs utilisateurs et des problèmes de performances du système.
Dans ce didacticiel, vous apprendrez à utiliser le ulimit
commande sous Linux avec des exemples.
Prérequis
- Un système exécutant Linux
- Accès à une borne
- Privilèges Sudo
Qu'est-ce que limits.conf ?
Le limits.conf file est un fichier de configuration qui définit les paramètres d'allocation des ressources système ulimit
les usages. Le chemin complet du fichier de configuration est /etc/security/limits.conf .
La modification des valeurs dans le fichier persiste après le redémarrage du système. Des autorisations de superutilisateur sont requises pour modifier le limits.conf fichier.
La première section du limits.conf le fichier ressemble à ceci :
ulimit, Soft Limit et Hard Limit sous Linux expliqués
Les sections suivantes expliquent le ulimit
syntaxe et la différence entre deux types de limitation de ressources - une limite souple et limite stricte .
Syntaxe ulimit
Le ulimit
La commande prend la syntaxe générale suivante :
ulimit [flags][limit]
Par exemple, pour définir la taille de la mémoire physique en kilo-octets, saisissez :
ulimit -m 15000
Drapeaux
Utilisez le ulimit
flags pour afficher ou limiter les valeurs individuelles de diverses ressources système. Lorsqu'un [limit]
est donnée, il s'agit de la nouvelle valeur de la ressource spécifiée.
Les drapeaux disponibles sont :
Signal | Description |
---|---|
-H | La limite stricte pour la ressource donnée. Seuls les utilisateurs root peuvent augmenter la limite stricte, et n'importe quel processus peut la réduire. |
-S | La limite douce pour la ressource donnée. Tout processus peut modifier la limite souple. |
-a | Répertorie toutes les limites de ressources actuelles. |
-b | La taille maximale du tampon de socket. |
-c | La taille du core dump, exprimée en nombre de blocs de 512 octets. |
-d | La taille de la zone de données, en kilo-octets. |
-e | La priorité de planification de processus la plus élevée (nice). |
-f | La limite de taille de fichier en blocs lors de l'utilisation de [limit] paramètre. Ne pas spécifier de [limit] demande à la commande de signaler la limite de taille de fichier. |
-i | La limite du nombre de signaux en attente. |
-k | Le nombre limite d'allocation de file d'attente. |
-l | La taille maximale autorisée pour le verrouillage en mémoire. |
-m | La taille de la mémoire physique, en kilo-octets. |
-n | Le nombre maximum de descripteurs de fichiers qu'un processus peut avoir. |
-p | La taille de la mémoire tampon du tube. |
-P | Le nombre maximum de pseudoterminaux. |
-q | Le nombre maximum d'octets dans les files d'attente de messages POSIX. |
-r | Le nombre maximum de threads qu'un processus peut avoir. |
-R | Le temps d'exécution maximal du processus, exprimé en microsecondes. |
-s | La taille de la pile, en kilo-octets. |
-t | Spécifie la durée d'exécution maximale d'un processus, en secondes. |
-T | La limite du nombre de threads. |
-u | Spécifie le nombre de processus qu'un utilisateur peut créer. |
-v | La mémoire virtuelle maximale disponible pour les processus. |
-x | Le nombre maximum de verrous de fichiers. |
[limit]
Paramètre
Ajouter un [limit]
transmet la nouvelle valeur pour les ressources spécifiées. Lorsqu'elle est omise, la commande imprime la valeur de limite souple actuelle pour la ressource spécifiée, sauf si vous spécifiez le -H
drapeau.
La limite s'applique à la fois à la limite souple et à la limite dure si ni le -H
ni -S
les drapeaux sont spécifiés.
Valeurs de sortie
Le ulimit
La commande a deux valeurs de sortie :
0
. Marque une réussite.>0
. Une demande de limite supérieure a été rejetée ou une erreur s'est produite.
Limite souple
Les limites souples des ressources sont des valeurs appliquées par le noyau pour la ressource correspondante. La limite souple est gérable par n'importe quel utilisateur et sa valeur maximale ne peut pas dépasser la limite stricte. La limite stricte agit comme un plafond pour la limite souple.
Pour afficher les limites flexibles détaillées pour l'utilisateur actuel, exécutez :
ulimit -Sa
Limite stricte
La limite de ressources matérielles définit la limite de ressources physiques pour un utilisateur. Dans le même temps, la limite stricte est la valeur maximale de la limite souple. Seuls les utilisateurs root sont autorisés à modifier la limite stricte .
Pour afficher les limites strictes détaillées pour l'utilisateur actuel, exécutez :
ulimit -Ha
Comment utiliser ulimit
Exécutez le ulimit
commande en saisissant le nom de la commande dans le terminal :
ulimit
La sortie affiche la quantité de ressources à laquelle l'utilisateur actuel a accès. Dans cet exemple, l'utilisateur dispose de ressources système illimitées. Pour afficher ou définir des limites de ressources individuelles, utilisez le ulimit
disponible drapeaux.
Les sections suivantes répertorient les utilisations les plus courantes de ulimit
commande.
Rapport de limite détaillé
Obtenez un rapport détaillé avec toutes les limites de ressources pour l'utilisateur actuel en spécifiant le -a
drapeau :
ulimit -a
La sortie contient un rapport détaillé sur les limites de ressources pour l'utilisateur actuel.
Limiter le nombre de processus
Limitez le nombre maximum de processus d'un utilisateur en spécifiant le -u
flag et le nombre de processus.
Par exemple, nous limiterons le nombre de processus à 10 :
ulimit -u 10
Restreindre le nombre maximum de processus par utilisateur les empêche d'utiliser toutes les ressources du système. La limitation du nombre de processus empêche également les effets néfastes d'attaques potentielles telles que la bombe à fourche.
Par exemple :
Dans l'exemple ci-dessus, nous avons d'abord limité le nombre de processus à 10, puis exécuté une bombe fork. Sinon, la bombe à fourche utiliserait toutes les ressources et rendrait le système insensible.
Limiter la taille du fichier
Le -f
flag définit la taille de fichier maximale qu'un utilisateur peut créer. Par exemple, la commande suivante limite la taille du fichier à 50 Ko :
ulimit -f 50
Testez si la limite fonctionne en créant un fichier plus volumineux. Par exemple, nous avons utilisé la commande cat pour rediriger le /dev/zero sortie dans un fichier, qui serait beaucoup plus grand que 50 Ko :
La sortie indique que la limite de taille de fichier a été dépassée. Vérifiez la taille du fichier en exécutant :
ls -lh file
La sortie de la commande ls indique que la taille du fichier est exactement de 50 Ko, ce qui correspond à la limite que nous avons précédemment définie.
Limiter la mémoire virtuelle maximale
Utilisez le -v
flag pour définir la quantité maximale de mémoire virtuelle disponible pour un processus. Limiter la mémoire virtuelle d'un processus l'empêche d'utiliser toute la mémoire et empêche le thrashing.
Par exemple, la commande suivante limite la mémoire virtuelle disponible pour un processus à 1 000 Ko :
ulimit -v 1000
Limiter le nombre de fichiers ouverts
Le -n
flag limite le nombre de fichiers ouverts simultanément (descripteurs de fichiers). L'exemple suivant définit le nombre de fichiers ouverts sur cinq :
ulimit -n 5
Pour tester cela, nous allons essayer d'ouvrir plusieurs fichiers texte, ce qui génère une erreur :
Modifiez le fichier limits.conf pour modifier la limite souple ou stricte
Pour modifier la limite souple ou stricte, modifiez les valeurs dans limits.conf dossier.
Suivez les étapes ci-dessous :
1. Ouvrez une fenêtre de terminal et changez le répertoire en /etc/security
:
cd /etc/security
2. Ouvrez le limits.conf fichier à l'aide d'un éditeur de texte, tel que l'éditeur vim.
vim limits.conf
3. Modifiez les valeurs limites en modifiant les entrées existantes ou en en ajoutant une nouvelle. Chaque entrée de limitation comporte quatre parties :
<domain>
. Définit un utilisateur, un groupe ou contient un caractère générique (*
ou%
).<type>
. Accepte deux valeurs -soft
ouhard
.<item>
. Accepte toutes les valeurs répertoriées dans le fichier de configuration.<value>
. Une valeur entière exprimée dans une unité associée à<item>
.
Par exemple :
Assurez-vous de décommenter la ligne lors de la modification du fichier de configuration.