La commande ulimit permet aux utilisateurs d'afficher ou de réduire leurs limites pour le shell actuel. Seul l'utilisateur root peut augmenter les restrictions au-delà de la limite stricte spécifiée. Les limites définies s'appliquent également à tout processus enfant du shell. La page de manuel du shell fournit plus d'informations sur l'utilisation de la commande ulimit, un extrait de la page de manuel bash est ci-dessous :
ulimit [-HSTabcdefilmnpqrstuvx [limit]] Provides control over the resources available to the shell and to processes started by it, on systems that allow such control. Options are interpreted as follows: -a All current limits are reported -b The maximum socket buffer size -c The maximum size of core files created -d The maximum size of a process’s data segment -e The maximum scheduling priority ("nice") -f The maximum size of files written by the shell and its children -i The maximum number of pending signals -l The maximum size that may be locked into memory -m The maximum resident set size (many systems do not honor this limit) -n The maximum number of open file descriptors (most systems do not allow this value to be set) -p The pipe size in 512-byte blocks (this may not be set) -q The maximum number of bytes in POSIX message queues -r The maximum real-time scheduling priority -s The maximum stack size -t The maximum amount of cpu time in seconds -u The maximum number of processes available to a single user -v The maximum amount of virtual memory available to the shell -x The maximum number of file locks -T The maximum number of thread
La syntaxe de la commande ulimit est :
# ulimit [options] [limit]
Les utilisateurs utilisent rarement la commande ulimit pour limiter leur propre compte, les options de cette commande ne sont donc pas aussi importantes que la compréhension de ce que la sortie affiche. De plus, certaines des limites sont très rarement utilisées. Les limites couramment utilisées sont décrites dans le tableau suivant :
Limite | Description |
---|---|
fsize | Taille de fichier maximale autorisée en mémoire |
processeur | Temps CPU maximal autorisé |
nproc | Nombre maximal de processus exécutés simultanément |
maxlogins | Nombre maximal de connexions simultanées |
Par exemple, pour définir une limite pour le nombre maximum de descripteurs de fichiers ouverts :
# ulimit -n 512
Vous pouvez afficher toutes les limites actuelles en émettant :
# ulimit -a
Si vous rencontrez l'erreur ci-dessous lors de l'exécution de la commande ulimit :
ulimit: command not found
vous pouvez essayer d'installer le package ci-dessous selon votre choix de distribution :
Répartition | Commande |
---|---|
OS X | brew install bash |
Debian | apt-get install bash |
Ubuntu | apt-get install bash |
Alpin | apk ajouter bash |
Arch Linux | pacman -S bash |
Kali Linux | apt-get install bash |
CentOS | yum installer bash |
Fédora | bash d'installation dnf |
Raspbian | apt-get install bash |
Exemples de commande ulimit
1. Obtenez les propriétés de toutes les limites d'utilisateur :
# ulimit -a
2. Obtenez une limite stricte pour le nombre de fichiers ouverts simultanément :
# ulimit -H -n
3. Obtenez une limite souple pour le nombre de fichiers ouverts simultanément :
# ulimit -S -n
4. Définissez la limite maximale de processus par utilisateur :
# ulimit -u 30
5. Définissez la limite de taille de vidage mémoire sur n blocs de 512 octets :
# ulimit –c n
6. Définissez la taille limite de la zone de données sur n kilo-octets :
# ulimit -d n
7. Définissez la limite d'écriture du fichier de processus enfant sur n blocs de 512 octets (par défaut) :
# ulimit -f n
8. Définissez la taille limite de la mémoire physique sur n Ko :
# ulimit -m n
9. Définissez la limite de taille de la zone de pile à n kilo-octets :
# ulimit -s n
10. Définissez la limite de temps de traitement à n secondes :
# ulimit -t n