Il comando ulimit consente agli utenti di visualizzare o ridurre i propri limiti per la shell corrente. Solo l'utente root può aumentare le restrizioni oltre il limite fisso specificato I limiti impostati si applicano anche a qualsiasi processo figlio della shell. La pagina man della shell fornisce maggiori informazioni sull'uso del comando ulimit, un estratto dalla pagina man di bash è di seguito:
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 sintassi del comando ulimit è:
# ulimit [options] [limit]
Gli utenti utilizzano raramente il comando ulimit per limitare il proprio account, quindi le opzioni per questo comando non sono importanti quanto la comprensione di ciò che viene visualizzato nell'output. Inoltre, alcuni dei limiti vengono utilizzati molto raramente. I limiti comunemente usati sono descritti nella tabella seguente:
Limite | Descrizione |
---|---|
fsize | Dimensione massima consentita per il file in memoria |
cpu | Tempo massimo di CPU consentito |
nproc | Numero massimo di processi in esecuzione contemporaneamente |
maxlogin | Numero massimo di accessi simultanei |
Ad esempio, per impostare un limite per il numero massimo di descrittori di file aperti:
# ulimit -n 512
Puoi visualizzare tutti i limiti attuali emettendo:
# ulimit -a
Se riscontri un errore di seguito durante l'esecuzione del comando ulimit:
ulimit: command not found
puoi provare a installare il pacchetto seguente secondo la tua scelta di distribuzione:
Distribuzione | Comando |
---|---|
OS X | brew install bash |
Debian | apt-get install bash |
Ubuntu | apt-get install bash |
Alpino | apk aggiungi bash |
Arch Linux | pacman -S bash |
Kali Linux | apt-get install bash |
CentOS | yum install bash |
Fedora | dnf install bash |
Raspbian | apt-get install bash |
Esempi di comando ulimit
1. Ottieni le proprietà di tutti i limiti utente:
# ulimit -a
2. Ottieni un limite rigido per il numero di file aperti contemporaneamente:
# ulimit -H -n
3. Ottieni un limite software per il numero di file aperti contemporaneamente:
# ulimit -S -n
4. Imposta il limite massimo di processi per utente:
# ulimit -u 30
5. Imposta il limite della dimensione del dump principale su n blocchi da 512 byte:
# ulimit –c n
6. Impostare il limite della dimensione dell'area dati su n kilobyte:
# ulimit -d n
7. Impostare il limite di scrittura del file di processo figlio su n blocchi da 512 byte (predefinito):
# ulimit -f n
8. Imposta il limite della dimensione della memoria fisica su n kilobyte:
# ulimit -m n
9. Imposta il limite della dimensione dell'area dello stack su n kilobyte:
# ulimit -s n
10. Impostare il limite di tempo del processo su n secondi:
# ulimit -t n