![OnePlus ha lanciato ufficialmente OnePlus 10R 5G in India](/f/7b301d8f988646cbd6c64d335966245c.jpg?width=100&height=100)
Nel Parte 13 di questo Serie LFCS (Linux Foundation Certified Sysadmin) abbiamo spiegato come usare GRUB per modificare il comportamento del sistema passando le opzioni al kernel per il processo di avvio in corso.
Allo stesso modo, è possibile utilizzare la riga di comando in un sistema Linux in esecuzione per modificare determinati parametri del kernel di runtime come modifica una tantum o in modo permanente modificando un file di configurazione.
Pertanto, è consentito abilitare o disabilitare al volo i parametri del kernel senza troppe difficoltà quando è necessario a causa di un cambiamento richiesto nel modo in cui si prevede che il sistema funzioni.
L'ultima specifica del Standard della gerarchia del file system indica che /proc
rappresenta il metodo predefinito per la gestione delle informazioni sul processo e sul sistema, nonché altre informazioni sul kernel e sulla memoria. In particolar modo, /proc/sys
è dove puoi trovare tutte le informazioni su dispositivi, driver e alcune funzionalità del kernel.
L'attuale struttura interna di /proc/sys
dipende molto dal kernel utilizzato, ma è probabile che all'interno trovi le seguenti directory. A loro volta, ognuna di esse conterrà altre sottodirectory in cui vengono mantenuti i valori per ciascuna categoria di parametri:
sviluppo
: parametri per dispositivi specifici collegati alla macchina.fs
: configurazione del filesystem (quote e inode, per esempio).rete
: configurazione di rete.vm
: utilizzo della memoria virtuale del kernel.Per modificare i parametri di runtime del kernel useremo il sistema
comando. Il numero esatto di parametri modificabili può essere visualizzato con:
# sysctl -a | wc -l.
Se vuoi visualizzare l'elenco completo dei parametri del kernel, fai semplicemente:
# sysctl -a
Poiché l'output del comando sopra sarà composto da MOLTE righe, possiamo usare una pipeline seguita da less per ispezionarla più attentamente:
# sysctl -a | meno.
Diamo un'occhiata alle prime righe. Si prega di notare che i primi caratteri in ogni riga corrispondono ai nomi delle directory all'interno /proc/sys
:
Ad esempio, la riga evidenziata:
dev.cdrom.info = nome unità: sr0.
indica che sr0
è un alias per l'unità ottica. In altre parole, è così che il kernel "vede” quell'unità e usa quel nome per riferirsi ad essa.
Nella sezione seguente spiegheremo come modificare altri parametri di runtime del kernel "più importanti" in Linux.
In base a quanto spiegato finora, è facile vedere che il nome di un parametro corrisponde alla struttura della directory all'interno /proc/sys
dove si può trovare.
Per esempio:
dev.cdrom.autoclose → /proc/sys/dev/cdrom/autoclose. net.ipv4.ip_forward → /proc/sys/net/ipv4/ip_forward.
Detto questo, possiamo visualizzare il valore di un particolare parametro del kernel Linux usando entrambi sistema
seguito dal nome del parametro o leggendo il file associato:
# sysctl dev.cdrom.autoclose. # cat /proc/sys/dev/cdrom/autoclose. # sysctl net.ipv4.ip_forward. # cat /proc/sys/net/ipv4/ip_forward.
Per impostare il valore di un parametro del kernel possiamo anche usare sistema
, ma usando il -w
opzione e seguito dal nome del parametro, dal segno di uguale e dal valore desiderato.
Un altro metodo consiste nell'usare eco
per sovrascrivere il file associato al parametro. In altre parole, i seguenti metodi equivalgono a disabilitare la funzionalità di inoltro dei pacchetti nel nostro system (che, tra l'altro, dovrebbe essere il valore predefinito quando una casella non dovrebbe passare traffico tra reti):
# echo 0 > /proc/sys/net/ipv4/ip_forward. # sysctl -w net.ipv4.ip_forward=0.
È importante notare che i parametri del kernel impostati utilizzando sistema
verrà applicato solo durante la sessione corrente e scomparirà al riavvio del sistema.
Per impostare questi valori in modo permanente, modifica /etc/sysctl.conf
con i valori desiderati. Ad esempio, per disabilitare l'inoltro dei pacchetti in /etc/sysctl.conf assicurati che questa riga appaia nel file:
net.ipv4.ip_forward=0.
Quindi eseguire il comando seguente per applicare le modifiche alla configurazione in esecuzione.
# sysctl -p.
Altri esempi di importanti parametri di runtime del kernel sono:
fs.file-max
specifica il numero massimo di handle di file che il kernel può allocare per il sistema. A seconda dell'uso previsto del tuo sistema (web/database/file server, per citare alcuni esempi), potresti voler modificare questo valore per soddisfare le esigenze del sistema.
In caso contrario, riceverai un "Troppi file aperti” messaggio di errore nella migliore delle ipotesi e potrebbe impedire al sistema operativo di avviarsi nella peggiore delle ipotesi.
Se a causa di un errore innocente ti trovi in quest'ultima situazione, avvia in modalità utente singolo (come spiegato in Parte 13 – Configurazione e risoluzione dei problemi del boot loader di Linux Grub) e modifica /etc/sysctl.conf come indicato in precedenza. Per impostare la stessa restrizione in base all'utente, fare riferimento a Parte 14 – Monitorare e impostare l'utilizzo del limite di processo Linux di questa serie.
kernel.sysrq
viene utilizzato per abilitare il SysRq sulla tastiera (noto anche come tasto di stampa dello schermo) in modo da consentire a determinate combinazioni di tasti di richiamare azioni di emergenza quando il sistema non risponde.
Il valore predefinito (16) indica che il sistema onorerà il Alt+SysRq+tasto
combinazione ed eseguire le azioni elencate nella sysrq.c documentazione trovata in kernel.org (dove chiave è una lettera nell'intervallo b-z). Per esempio, Alt+SisRq+b
riavvierà il sistema forzatamente (usalo come ultima risorsa se il tuo server non risponde).
Avvertimento! Non tentare di premere questa combinazione di tasti su una macchina virtuale perché potrebbe forzare il riavvio del sistema host!
Quando impostato su 1, net.ipv4.icmp_echo_ignore_all ignorerà le richieste di ping e le rilascerà a livello di kernel. Questo è mostrato nell'immagine qui sotto: nota come le richieste di ping vengono perse dopo aver impostato questo parametro del kernel:
Un modo migliore e più semplice per impostare i parametri di runtime individuali sta usando .conf file all'interno /etc/sysctl.d
, raggruppandoli per categorie.
Ad esempio, invece di impostare net.ipv4.ip_forward=0 e net.ipv4.icmp_echo_ignore_all=1 in /etc/sysctl.conf, possiamo creare un nuovo file chiamato net.conf
dentro /etc/sysctl.d:
# echo "net.ipv4.ip_forward=0" > /etc/sysctl.d/net.conf. # echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.d/net.conf.
Se scegli di utilizzare questo approccio, non dimenticare di rimuovere quelle stesse righe da /etc/sysctl.conf
.
In questo articolo abbiamo spiegato come modificare i parametri di runtime del kernel, persistenti e non persistenti, utilizzando sistema, /etc/sysctl.confe file all'interno /etc/sysctl.d.
Nel sistema docs puoi trovare maggiori informazioni sul significato di più variabili. Questi file rappresentano la fonte più completa di documentazione sui parametri che possono essere impostati tramite sysctl.
Hai trovato questo articolo utile? Speriamo sicuramente che tu l'abbia fatto. Non esitare a farci sapere se hai domande o suggerimenti per migliorare.