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.