Como ler e alterar o valor dos parâmetros do kernel usando sysctl
- 1121
- 24
- Loren Botsford
SYSCTL é um utilitário instalado por padrão em todas as distribuições modernas do Linux. É usado para ler e escrever o valor dos parâmetros do kernel no tempo de execução; Os parâmetros disponíveis são os listados no /Proc
Pseudo-Filesystem, e especificamente sob o /proc/sys
diretório. Neste artigo, aprendemos a usar esse utilitário, como fazer as mudanças persistirem uma reinicialização e como carregar configurações de um arquivo "manualmente".
Neste tutorial, você aprenderá:
- Como ler o valor dos parâmetros do kernel
- Como modificar o valor dos parâmetros do kernel em tempo de execução
- Como fazer as mudanças persistirem uma reinicialização
- Como carregar configurações de um arquivo manualmente
Requisitos de software e convenções usadas
Categoria | Requisitos, convenções ou versão de software usada |
---|---|
Sistema | Distribuição Independente |
Programas | sysctl |
Outro | Privilégios de raiz para modificar os parâmetros do kernel |
Convenções | # - requer que os comandos linux -comidos sejam executados com privilégios de raiz diretamente como usuário root ou por uso de sudo comando$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular |
Lendo valores do kernel
O comportamento do kernel Linux pode ser alterado modificando o valor de alguns parâmetros, mesmo em tempo de execução. Os parâmetros disponíveis são aqueles que podem ser acessados através do /Proc
Pseudo-Filesystem, sob o /proc/sys
diretório. Podemos usar o árvore
comando para ter uma idéia de seu conteúdo:
$ árvore /proc /sys /proc /sys ├── abi │ └── vsysCall32 ├── cripto │ ├── CDROM │ │ ├── AUTOCLOSE AUTOCLOSE │ │ ├── Autoeject │ │ ├── Check_media │ │ ├── Debug │ │ ├─— Informações │ │ └─ LoCk │sto ─ max-user-freq │ ├── i915 │ │ ├── oa_max_sample_rate │ │ └── perf_stream_paranoid │ ├── mac_hid │ │ ├── mouse_button2_keycode │ │ ├── mouse_button3_keycode │ │ └── mouse_button_emulation │ ├── RAID │ │ ├── Speed_limit_max │ │ └── Speed_limit_min │ ├── scsi │ │ └── Logging_level │ └── tty │ └─ Ldisc_autoload […]
A saída do comando acima é truncada por razões óbvias, mas dá uma idéia do que estamos falando. Quando o sysctl é invocado com o -a
opção, (abreviação de --todos
), ele imprime o valor de todos os parâmetros do kernel disponíveis:
$ sysctl sysctl -a abi.vsysCall32 = 1 criptografia.fips_enabled = 0 Debug.exceção trace = 1 depuração.KProbes-otimization = 1 dev.cdrom.Autoclose = 1 dev.cdrom.Autoeject = 0 dev.cdrom.check_media = 0 […]
Se quisermos ler o valor de um parâmetro específico, tudo o que precisamos fazer é invocar sysctl
e forneça o nome do parâmetro do qual queremos verificar o valor como argumento. Por exemplo, para ler o valor atual do ataque speed_limit_max
parâmetro, que é escrito no /proc/sys/dev/Raid/speed_limit_max
Arquivo, nós funcionaríamos:
$ sysctl dev.ataque.speed_limit_max dev.ataque.speed_limit_max = 200000
Ao usar sysctl
Em um script, ou ao usar sua saída em um pipeline, podemos querer executá -lo com o -n
opção, que é a forma curta de (--valores
). Esta opção faz apenas o valor atual de um parâmetro solicitado ser
retornou quando uma consulta é realizada; O nome da chave é omitido:
$ sysctl -n dev.ataque.speed_limit_max 200000
Modificando os parâmetros do kernel
Assim como podemos ler parâmetros do kernel, podemos alterar seus valores em tempo de execução usando sysctl
. A sintaxe a ser usada quando queremos executar essa ação é muito simples:
variável sysctl = valor
Simplesmente invocamos o comando e fornecemos o nome da variável e o valor que queremos atribuir a ele. Embora não precisemos de privilégios elevados para ler o valor dos parâmetros do kernel, precisamos prefixar o comando com sudo (ou executá -lo como usuário root diretamente) para alterar seus valores. Apenas como exemplo, suponha que queremos alterar o valor de Dev.cdrom.Autoeject
e defina -o como 1; nós escrevíamos:
$ sudo sysctl dev.cdrom.Autoeject = 1
Quando alteramos o valor de um parâmetro do kernel, se o comando for executado corretamente, o conjunto de valores será exibido para stdout (saída padrão). Como saída do comando usado no exemplo acima, veríamos:
Dev.cdrom.Autoeject = 1
Esse comportamento pode ser alterado invocando sysctl com o -q
opção (abreviação de --quieto
).
Fazer mudanças persistirem uma reinicialização
A modificação que fazemos com o SYSCTL em tempo de execução não é persistente e será perdida quando reiniciarmos o sistema. Para fazer as alterações sobreviver a esse evento, precisamos escrevê -las em um arquivo em um dos diretórios dedicados. O que são aqueles
diretórios? Em ordem de prioridade:
- /etc/sysctl.d
- /run/sysctl.d
- /usr/lib/sysctl.d
Os arquivos que hospedam as configurações devem ter o .conf
extensão e são classificados e carregados na inicialização pelo systemd-sysctl
serviço, em Lexicográfico Ordem, independentemente do diretório em que sejam colocados.
Se existir um arquivo com o mesmo nome em vários diretórios, apenas as configurações existentes naquele colocado no diretório com a prioridade mais alta serão carregadas. Isso basicamente significa que, se quisermos substituir completamente um arquivo, devemos colocar um arquivo com o mesmo nome em um diretório com uma prioridade mais alta; Se quisermos alterar uma configuração específica, em vez disso, poderíamos optar por escrevê -lo em um arquivo com um nome que fará com que ele seja carregado após aquele em que o parâmetro em que é originalmente definido.
O /usr/lib/sysctl.d
Diretório deve hospedar configurações de “fornecedor”, raramente devemos alterar seu conteúdo. Na grande maioria dos casos, queremos colocar nossos arquivos dentro do /etc/sysctl.d
diretório, que é reservado para alterações feitas
pelo administrador do sistema.
Vamos ver um exemplo. Suponha que queremos mudar o kernel Swappiness valor. Como sabemos, o valor deste parâmetro determina com que frequência o kernel linux copia o BATER conteúdo para o espaço de troca. A gama de valores que podem ser atribuídos a este parâmetro vai para 0
para 100
: Um valor mais alto significa um uso de troca mais frequente e agressivo. Para alterar o valor deste parâmetro permanentemente, criamos o /etc/sysctl.D/99-Swappiness.conf
arquivo; dentro dele, escrevemos:
vm.Swappiness = 1
Como, como dissemos, os arquivos são carregados em ordem lexicográfica, devido ao seu nome, podemos ter certeza de que o arquivo será carregado ultimamente e, portanto, a configuração será aplicada conforme o esperado.
Carregue as configurações de um arquivo manualmente
Desde aqui, vimos como alterar o valor dos parâmetros do kernel em tempo de execução, e como fazer as mudanças persistirem uma reinicialização, escrevendo -os em arquivos com o .conf
extensão. E se quisermos carregar configurações escritas dentro de um arquivo "manualmente", sem a necessidade de reiniciar o sistema e sem recarregar o systemd-sysctl
serviço? Tudo o que precisamos fazer é invocar Sysctl com o -p
opção (--carregar
) e passe no caminho do arquivo que hospeda as configurações como argumento. Apenas como exemplo, suponha que queremos carregar o conteúdo do /etc/sysctl.D/99-Swappiness.conf
arquivo que criamos no exemplo anterior; nós funcionaríamos:
$ sudo sysctl -p /etc /sysctl.D/99-Swappiness.conf
Se sysctl for invocado com o -p
opção, mas nenhum argumento é fornecido, ele carrega configurações do /etc/sysctl.conf
Arquivo (um link simbólico que aponta para este arquivo, denominado 99-SYSCTL.conf
existe no /etc/sysctl.d
diretório).
Conclusões
Neste artigo, aprendemos a usar o sysctl utilidade para ler e alterar o valor de alguns parâmetros do kernel no tempo de execução. Também vimos como fazer alterações nesses parâmetros persistirem uma reinicialização, escrevendo -os em arquivos com o .conf
Extensão, que deve ser colocada em diretórios específicos, e como carregar configurações escritas em um arquivo "manualmente". Ao alterar o valor dos parâmetros do kernel, podemos ajustar nosso sistema e fazê -lo funcionar exatamente como precisamos. Podemos, por exemplo, como vimos em um tutorial anterior, ativar todas ou algumas das funções SYSRQ.
Tutoriais do Linux relacionados:
- Uma introdução à automação, ferramentas e técnicas do Linux
- Coisas para instalar no Ubuntu 20.04
- Mastering Bash Script Loops
- Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
- Como otimizar a duração da bateria do laptop com TLP no Linux
- Tutorial de depuração do GDB para iniciantes
- Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
- Com que frequência você tem que reiniciar seu servidor Linux?
- Como fazer bota dupla kali linux e windows 10
- Loops aninhados em scripts de basquete