GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser la commande Linux ulimit

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 ou hard .
  • <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.


Linux
  1. Comment utiliser la commande Linux sed

  2. Comment utiliser la commande Linux grep

  3. Comment utiliser la commande history sous Linux

  4. Comment utiliser la commande Su sous Linux

  5. Comment utiliser la commande "screen" sous Linux

Comment utiliser la commande fd sur le système Linux

Comment utiliser la commande ulimit sous Linux

Comment utiliser la commande wget sous Linux ?

Comment utiliser la commande xargs sous Linux ?

Comment utiliser la commande RPM sous Linux

Comment utiliser la commande which sous Linux