Descobrir os valores padrão do sysctl? (sem reiniciar)

10

Modifiquei o valor de net.core.rmem_maxwith sysctle agora gostaria de configurá-lo novamente para seu valor padrão.

Se eu reiniciar, net.core.rmem_maxvoltarei ao seu valor padrão (porque não é substituído /etc/sysctl.conf), mas posso saber esse valor sem reiniciar?

Idealmente, eu deveria ter corrido sysctl net.core.rmem_maxpara ler o valor antes de modificá-lo, mas esqueci ...

Nicolas Raoul
fonte

Respostas:

4

Isso não é possível em geral: o kernel não mantém os valores originais (pelo menos no Linux, não, e isso provavelmente ocorre com outras variantes do unix). O valor da configuração é armazenado em uma variável; Quando você altera a configuração, a memória que contém a variável é irreversivelmente atualizada.

Para a maioria das configurações, o valor inicial da variável é uma constante que é determinada no tempo de compilação e armazenada no binário do kernel. Assim, você poderia, em princípio, inspecionar o binário do seu kernel para encontrar o valor padrão. Você precisaria localizar o símbolo correspondente à configuração em que está interessado e seguir o endereço desse símbolo no binário do kernel. Iniciar seu kernel em uma máquina virtual seria menos trabalhoso.

Para a maioria das configurações, você pode procurar na fonte do kernel - kernel/sysctl.ce em outros arquivos. Você verá definições como

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

(in net/core/sysctl_net_core.c), a partir do qual você pode rastrear a inicialização da sysctl_rmem_maxvariável . Embora este seja inicializado a partir de uma constante, é necessário um pouco de leitura do código C para expandir.

Gilles 'SO- parar de ser mau'
fonte
0

Na minha máquina OpenBSD, o /etc/sysctl.conf lista vários valores padrão do sysctl, mas essa lista não é completa.

Provavelmente, a melhor maneira é ler o código sysctl ou perguntar a um amigo que está executando o mesmo sistema operacional por seus valores :)

Edd Barrett
fonte