Dans ce tutoriel pour débutant, vous découvrirez la commande ulimit sous Linux. Vous apprendrez à l'utiliser pour contrôler les allocations de ressources système.
Qu'est-ce que ulimit sous Linux ?
Ulimit est une commande shell intégrée conçue pour afficher, allouer et limiter les ressources. Il est essentiel que tout système réglemente ces types de contrôles.
Ce type de contrôle peut être appliqué aux niveaux global, groupe et utilisateur. En plus d'assurer un traitement fluide des tâches, il empêche les processus indésirables de dévorer les ressources système telles que la RAM et la puissance du processeur.
Ulimit est lié à un fichier de configuration de sécurité. Votre emplacement exact peut varier, mais il s'agit généralement de quelque chose comme /etc/security/limits.conf
. Ulimit nous permet de modifier rapidement cette configuration.
Limites souples ou strictes
En tant qu'utilisateur, vous pouvez réellement ajuster vos paramètres ulimit.
Vous vous demandez peut-être pourquoi même fixer une limite si un utilisateur peut l'ajuster. C'est là que les limites souples et dures entrent en jeu.
Ainsi, du point de vue de l'administrateur, vous préférerez peut-être que votre utilisateur survole une certaine valeur. Ce serait votre limite souple (disons 25).
Ensuite, vous pouvez établir une limite stricte qui ne peut pas être dépassée par cet utilisateur (50). L'utilisateur serait autorisé à augmenter sa limite de 25 à 50.
Utiliser ulimit sous Linux
Voici la syntaxe de la commande ulimit :
ulimit <options>
Afficher toutes les limites pour n'importe quel utilisateur
Vous pouvez afficher tous les types de limites pour un utilisateur spécifié de cette manière :
ulimit -a user_name
Le -a
affichera toutes les options et leur configuration pour votre nom d'utilisateur spécifique.
Si vous omettez le nom d'utilisateur, il affiche des limites pour vous. Laissez-moi vous montrer les limites définies pour moi par défaut :
[email protected]:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31503
max locked memory (kbytes, -l) 65536
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31503
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Vos valeurs par défaut peuvent être différentes des miennes, bien sûr. Cette vue affiche une description, l'indicateur attribué (qui peut être utilisé pour modifier les limites) et la configuration.
Afficher les limites matérielles et logicielles
Il est également possible de voir l'une ou l'autre de ces limites respectives avec un drapeau.
Pour afficher les limites souples, utilisez l'option -S :
ulimit -S
Pour afficher les limites strictes, utilisez l'option -H :
ulimit -H
Il est plus utile de les combiner avec des drapeaux spécifiques d'en haut. Ainsi, si vous souhaitez vérifier la limite stricte du nombre maximum de processus utilisateur, vous devez taper :
[email protected]:~$ ulimit -Hu
31503
Modifier les limites (temporairement)
Maintenant, changeons cette valeur en 31500 à des fins de démonstration et vérifions à nouveau la limite stricte.
[email protected]:~$ ulimit -u 31500
[email protected]:~$ ulimit -Hu
31500
Il convient de noter que tout changement autorisé par vos privilèges ne sera que temporairement écrit et affectera votre shell actuel.
Pour confirmer cela, j'ai quitté mon shell et créé un nouveau terminal et j'ai obtenu la valeur par défaut d'origine.
[email protected]:~$ ulimit -Hu
31503
La section suivante montre comment rendre les modifications permanentes.
Apporter des modifications permanentes à ulimit
Comme je l'ai mentionné au début de l'article, ulimit est régi par /etc/security/limits.conf. Si vous souhaitez apporter des modifications permanentes aux ulimits d'un utilisateur, vous devrez apporter des modifications au fichier de sécurité en tant que root.
Lors de l'édition, vous devez inclure ces quatre éléments :
<domain> <type> <item> <value>
Voici le texte que j'ai ajouté au fichier pour définir la limite stricte du nombre de processus pour l'utilisateur christoper (c'est-à-dire mon propre compte) :
christopher hard nproc 2000
Gardez à l'esprit qu'il est recommandé de ne pas activer le compte root à moins que vous ne soyez pleinement conscient des conséquences potentielles. Je l'ai fait sur une machine virtuelle pour que vous n'ayez pas à le faire vous-même.
[email protected]:~$ su
Password:
[email protected]:/home/christopher# nano /etc/security/limits.conf
[email protected]:/home/christopher# exit
exit
[email protected]:~$ ulimit -u
20000
Comme vous pouvez le voir, la limite pour 'christopher' a été changée à 20000.
Comment savez-vous quel mot-clé utiliser pour éditer le fichier /etc/security/limits.conf ? Eh bien, voici un tableau qui comprend les mots-clés possibles des articles et leurs descriptions :
Mot clé de l'article | Description |
---|---|
noyau | limite la taille du fichier principal (Ko) |
données | taille maximale des données (Ko) |
fsize | taille de fichier maximale (Ko) |
memlock | espace d'adressage maximal en mémoire verrouillée (Ko) |
aucun fichier | nombre maximum de descripteurs de fichiers ouverts |
rss | taille maximale de l'ensemble résident (Ko) |
pile | taille maximale de la pile (Ko) |
processeur | temps CPU maximum (MIN) |
nproc | nombre maximum de processus |
comme | limite d'espace d'adressage (Ko) |
maxlogins | nombre maximum de connexions pour cet utilisateur |
maxsyslogins | nombre maximum de connexions sur le système |
priorité | la priorité d'exécution du processus utilisateur |
verrouille | nombre maximum de verrous de fichiers que l'utilisateur peut détenir |
signe en attente | nombre maximum de signaux en attente |
msgqueue | – mémoire maximale utilisée par les files d'attente de messages POSIX (octets) |
sympa | priorité max nice autorisée à monter à des valeurs :[-20, 19] |
rtprio | priorité maximale en temps réel |
chrooter | changer la racine en répertoire (spécifique à Debian) |
Type de limite | Description |
---|---|
difficile | limite stricte |
doux | limite souple |
– | limite stricte et souple |
Modifier ulimit pour les groupes
La modification d'une stratégie de groupe est très similaire à ce que vous avez vu dans la section précédente, mais vous incluez un @
symbole devant le nom du groupe.
Voici un exemple où j'ai défini le nombre maximum de connexions pour le groupe étudiant à 4 en modifiant le fichier /etc/security/limits.conf :
@student - maxlogins 4
Conclusion
J'espère que vous avez aimé cette introduction rapide à la commande ulimit Linux.
Si vous avez des commentaires ou des questions, laissez-les ci-dessous. Si vous avez des suggestions de sujets que vous aimeriez voir abordés, n'hésitez pas à les laisser également.