Scopri i valori predefiniti di sysctl? (senza riavviare)


10

Ho modificato il valore di net.core.rmem_maxwith sysctle ora vorrei ripristinarlo al valore predefinito.

Se riavvio, net.core.rmem_maxtornerà al suo valore predefinito (perché non viene sostituito /etc/sysctl.conf), ma posso conoscere questo valore senza riavviare?

Idealmente avrei dovuto correre sysctl net.core.rmem_maxa leggere il valore prima di modificarlo, ma ho dimenticato ...

Risposte:


4

Questo non è possibile in generale: il kernel non mantiene i valori originali (almeno in Linux non lo è, e questo è probabilmente vero per altre varianti unix). Il valore dell'impostazione è memorizzato in una variabile; quando si modifica l'impostazione, la memoria contenente la variabile viene aggiornata irreversibilmente.

Per la maggior parte delle impostazioni, il valore iniziale della variabile è una costante che viene determinata in fase di compilazione e memorizzata nel file binario del kernel. Quindi, in linea di principio, è possibile ispezionare il file binario del kernel per trovare il valore predefinito. Dovresti individuare il simbolo corrispondente all'impostazione che ti interessa e seguire l'indirizzo di quel simbolo nel file binario del kernel. L'avvio del kernel in una macchina virtuale richiederebbe meno lavoro.

Per la maggior parte delle impostazioni, puoi consultare il sorgente del kernel kernel/sysctl.ce altri file. Vedrai definizioni come

    {
            .procname       = "rmem_max",
            .data           = &sysctl_rmem_max,
            …
    },

(in net/core/sysctl_net_core.c), da cui è possibile tracciare l'inizializzazione della sysctl_rmem_maxvariabile . Mentre questo è inizializzato da una costante, ci vuole un po 'di lettura del codice C per espandersi.


0

Sulla mia macchina OpenBSD, /etc/sysctl.conf elenca un gruppo di valori sysctl predefiniti, ma questo elenco non è esaustivo.

Probabilmente il modo migliore è leggere il codice sysctl o chiedere a un amico che esegue lo stesso sistema operativo per i suoi valori :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.