Introduzione
Come amministratore di sistema Linux, a volte potrebbe essere necessario modificare il comportamento del kernel predefinito. Ad esempio, potrebbe essere necessario abilitare la magic key SysRq o aumentare il numero di connessioni accettate da Kernel. I parametri del kernel possono essere impostati durante la compilazione del kernel, all'avvio del sistema o in fase di esecuzione.
Questo articolo spiega come utilizzare il comando sysctl
per visualizzare e modificare i parametri del kernel in fase di esecuzione.
Utilizzare sysctl per visualizzare i parametri del kernel
Per visualizzare tutti i parametri del kernel correnti invocare il comando sysctl
con l'opzione -a
:
sysctl -a
Questo produrrà un grande elenco che assomiglia al seguente in cui ogni riga include il nome del parametro e il suo valore:
abi.vsyscall32 = 1
debug.exception-trace = 1
debug.kprobes-optimization = 1
dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 0
dev.cdrom.check_media = 0
dev.cdrom.debug = 0
dev.cdrom.info = CD-ROM information, Id: cdrom.c 3.20 2003/12/17
dev.cdrom.info =
dev.cdrom.info = drive name: sr0
dev.cdrom.info = drive speed: 4
dev.cdrom.info = drive # of slots: 1
...
Tutti gli utenti possono visualizzare gli attuali parametri del kernel; solo l'utente root può modificare i propri valori.
È possibile verificare il valore di un singolo parametro passando il suo nome come argomento a sysctl
. Ad esempio, per verificare l'attuale valore di swapiness digitare:
sysctl vm.swappiness
vm.swappiness = 60
Swappiness è una proprietà del kernel Linux che definisce la frequenza con cui il sistema utilizzerà lo spazio di swap.
Il comando sysctl
legge le informazioni dalla directory /proc/sys
. /proc/sys
è una directory virtuale che contiene file che possono essere utilizzati per visualizzare e impostare i parametri correnti del kernel.
È inoltre possibile visualizzare un valore di un parametro visualizzando il contenuto del file appropriato. L'unica differenza è come viene rappresentato il file. Ad esempio, entrambi i comandi sysctl vm.swappiness
e cat /proc/sys/vm/swappiness
daranno lo stesso output. Quando si usano le directory sysctl
, le barre vengono sostituite da punti e la parte proc.sys
viene assunta.
Usare sysctl per modificare i parametri del kernel
Per impostare un parametro del kernel in fase di esecuzione, eseguire il comando sysctl
seguito dal nome e dal valore del parametro nel seguente formato:
sysctl -w parameter=value
Se il valore contiene spazio vuoto o caratteri speciali, racchiuderlo tra virgolette doppie. Puoi anche passare più coppie parameter=value
nello stesso comando.
Prestare particolare attenzione quando si modificano le impostazioni del kernel su un sistema di produzione poiché potrebbe rendere instabile il kernel e sarà necessario riavviare il sistema.
Ad esempio, per abilitare l'inoltro di pacchetti IPv4 dovresti eseguire:
sysctl -w net.ipv4.ip_forward=1
La modifica ha effetto immediato, ma non è persistente. Dopo il riavvio del sistema, viene caricato il valore predefinito.
Per impostare un parametro in modo permanente, è necessario scrivere le impostazioni nel file /etc/sysctl.conf
o in un altro file di configurazione nella directory /etc/sysctl.d
:
sysctl -w net.ipv4.ip_forward=1 >> /etc/sysctl.conf
Un altro modo per modificare i parametri è utilizzare il comando echo
per scrivere le impostazioni nei file nella directory /proc/sys
. Ad esempio, invece di eseguire il comando sopra, puoi usare:
echo 1 > /proc/sys/net/ipv4/ip_forward
L'opzione -p
consente di caricare le impostazioni da un file di configurazione:
sysctl -p /etc/sysctl.d/file_name.conf
Quando non viene fornito alcun file, sysctl
legge il file /etc/sysctl.conf
.
Conclusione
Il comando sysctl
consente di visualizzare e modificare i parametri del kernel Linux.