Introduzione
ulimit
è un comando shell Linux integrato che consente di visualizzare o limitare le quantità di risorse di sistema che i singoli utenti consumano. Limitare l'utilizzo delle risorse è prezioso in ambienti con più utenti e problemi di prestazioni del sistema.
In questo tutorial imparerai a usare ulimit
comando in Linux con esempi.

Prerequisiti
- Un sistema che esegue Linux
- Accesso a un terminale
- Privilegi di sudo
Cos'è limit.conf?
Il limits.conf file è un file di configurazione che definisce le impostazioni di allocazione delle risorse di sistema ulimit
usi. Il percorso completo del file di configurazione è /etc/security/limits.conf .
La modifica dei valori nel file persiste dopo il riavvio del sistema. Per modificare limits.conf sono necessarie le autorizzazioni di superutente file.
La prima sezione di limits.conf il file ha questo aspetto:

Ulimit, Soft Limit e Hard Limit in Linux spiegati
Le sezioni seguenti spiegano ulimit
sintassi e la differenza tra due tipi di limitazione delle risorse:un limite morbido e limite rigido .
Sintassi ulimit
Il ulimit
il comando accetta la seguente sintassi generale:
ulimit [flags][limit]
Ad esempio, per impostare la dimensione della memoria fisica in kilobyte, inserisci:
ulimit -m 15000
Bandiere
Usa il ulimit
flag per visualizzare o limitare i singoli valori per varie risorse di sistema. Quando un [limit]
è dato, è il nuovo valore della risorsa specificata.
I flag disponibili sono:
Bandiera | Descrizione |
---|---|
-H | Il limite rigido per la risorsa data. Solo gli utenti root possono aumentare il limite rigido e qualsiasi processo può abbassarlo. |
-S | Il limite morbido per la risorsa data. Qualsiasi processo può modificare il limite morbido. |
-a | Elenca tutti i limiti di risorse correnti. |
-b | La dimensione massima del buffer del socket. |
-c | La dimensione del core dump, espressa nel numero di blocchi da 512 byte. |
-d | La dimensione dell'area dati, in kilobyte. |
-e | La massima priorità di pianificazione del processo (bello). |
-f | Il limite delle dimensioni del file in blocchi quando si utilizza il [limit] parametro. Non si specifica un [limit] indica al comando di segnalare il limite di dimensione del file. |
-i | Il limite del numero di segnali in sospeso. |
-k | Il limite del numero di allocazione della coda. |
-l | La dimensione massima consentita per il blocco della memoria. |
-m | La dimensione della memoria fisica, in kilobyte. |
-n | Il numero massimo di descrittori di file che può avere un processo. |
-p | La dimensione del buffer della pipe. |
-P | Il numero massimo di pseudoterminali. |
-q | Il numero massimo di byte nelle code di messaggi POSIX. |
-r | Il numero massimo di thread che un processo può avere. |
-R | Il tempo massimo di esecuzione del processo, espresso in microsecondi. |
-s | La dimensione dello stack, in kilobyte. |
-t | Specifica il tempo di esecuzione massimo di un processo, in secondi. |
-T | Il limite del numero di thread. |
-u | Specifica quanti processi può creare un utente. |
-v | La memoria virtuale massima disponibile per i processi. |
-x | Il numero massimo di blocchi di file. |
[limit]
Parametro
Aggiunta di un [limit]
passa il nuovo valore per le risorse specificate. Se omesso, il comando stampa il valore del limite software corrente per la risorsa specificata, a meno che non specifichi il -H
bandiera.
Il limite si applica sia al limite soft che a quello hard se nessuno dei due è -H
né -S
i flag sono specificati.
Valori di uscita
Il ulimit
comando ha due valori di uscita:
0
. Segna un completamento riuscito.>0
. Una richiesta per un limite superiore è stata rifiutata o si è verificato un errore.
Limite soft
I limiti delle risorse software sono valori applicati dal kernel per la risorsa corrispondente. Il limite soft è gestibile da qualsiasi utente e il suo valore massimo non può superare il limite hard. Il limite rigido funge da tetto per il limite morbido.
Per visualizzare i limiti software dettagliati per l'utente corrente, eseguire:
ulimit -Sa

Limite limite
Il limite di risorse fisiche definisce il limite di risorse fisiche per un utente. Allo stesso tempo, l'hard limit è il valore massimo per il soft limit. Solo gli utenti root possono modificare il limite rigido .
Per visualizzare i limiti rigidi dettagliati per l'utente corrente, eseguire:
ulimit -Ha

Come usare ulimit
Esegui ulimit
comando inserendo il nome del comando nel terminale:
ulimit

L'output mostra la quantità di risorse a cui l'utente corrente ha accesso. In questo esempio, l'utente dispone di risorse di sistema illimitate. Per visualizzare o impostare limiti di risorse individuali, utilizza il ulimit
disponibile bandiere.
Le sezioni seguenti elencano gli usi più comuni di ulimit
comando.
Rapporto dettagliato sui limiti
Ottieni un rapporto dettagliato con tutti i limiti di risorse per l'utente corrente specificando il -a
bandiera:
ulimit -a

L'output contiene un rapporto dettagliato sui limiti delle risorse per l'utente corrente.
Numero processo limite
Limita il numero massimo di processi di un utente specificando il -u
flag e il numero di processi.
Ad esempio, limiteremo il numero del processo a 10:
ulimit -u 10
La limitazione del numero massimo di processi per utente impedisce loro di utilizzare tutte le risorse del sistema. La limitazione del numero di processi previene anche gli effetti negativi di potenziali attacchi come fork bomb.
Ad esempio:

Nell'esempio sopra, abbiamo prima limitato il numero del processo a 10, quindi abbiamo eseguito una fork bomb. La bomba fork altrimenti consumerebbe tutte le risorse e renderebbe il sistema non rispondente.
Limita la dimensione del file
Il -f
flag imposta la dimensione massima del file che un utente può creare. Ad esempio, il comando seguente limita la dimensione del file a 50 KB:
ulimit -f 50
Verifica se il limite funziona creando un file più grande. Ad esempio, abbiamo usato il comando cat per reindirizzare /dev/zero output in un file, che sarebbe molto più grande di 50 KB:

L'output indica che il limite di dimensione del file è stato superato. Verifica la dimensione del file eseguendo:
ls -lh file

L'output del comando ls mostra che la dimensione del file è esattamente 50 KB, che è il limite che abbiamo impostato in precedenza.
Limite di memoria virtuale massima
Usa il -v
flag per impostare la quantità massima di memoria virtuale disponibile per un processo. La limitazione della memoria virtuale di un processo impedisce che esaurisca tutta la memoria e previene il thrashing.
Ad esempio, il comando seguente limita la memoria virtuale disponibile per un processo a 1000 KB:
ulimit -v 1000
Limita il numero di file aperti
Il -n
flag limita il numero di file aperti contemporaneamente (descrittori di file). L'esempio seguente imposta il numero di file aperti su cinque:
ulimit -n 5
Per verificarlo, proveremo ad aprire più file di testo, che genera un errore:

Modifica il file limit.conf per modificare il limite soft o hard
Per modificare il limite soft o hard, modifica i valori in limits.conf file.
Segui i passaggi seguenti:
1. Apri una finestra del terminale e cambia la directory in /etc/security
:
cd /etc/security
2. Apri limits.conf file utilizzando un editor di testo, come l'editor vim.
vim limits.conf
3. Modificare i valori limite modificando le voci esistenti o aggiungendone una nuova. Ogni voce di limitazione ha quattro parti:
<domain>
. Definisce un utente, un gruppo o contiene un carattere jolly (*
o%
).<type>
. Accetta due valori:soft
ohard
.<item>
. Accetta tutti i valori elencati nel file di configurazione.<value>
. Un valore intero espresso in un'unità associata a<item>
.
Ad esempio:

Assicurati di decommentare la riga quando modifichi il file di configurazione.