Quando meu kernel é inicializado, além das informações importantes úteis, ele imprime muitas informações de depuração, como
....
kernel: [0.00000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
kernel: [0.00000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
kernel: [0.00000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
...
kernel: [0.00000] MTRR variable ranges enabled:
kernel: [0.00000] 0 base 0000000000 mask 7E00000000 write-back
...
kernel: [0.00000] init_memory_mapping: [mem 0x00100000-0xcf414fff]
kernel: [0.00000] [mem 0x00100000-0x001fffff] page 4k
kernel: [0.00000] [mem 0x00200000-0xcf3fffff] page 2M
kernel: [0.00000] [mem 0xcf400000-0xcf414fff] page 4k
....
kernel: [0.00000] ACPI: XSDT 0xD8FEB088 0008C (v01 DELL CBX3 01072009 AMI 10013)
kernel: [0.00000] ACPI: FACP 0xD8FFC9F8 0010C (v05 DELL CBX3 01072009 AMI 10013)
....
kernel: [0.00000] Early memory node ranges
kernel: [0.00000] node 0: [mem 0x00001000-0x0009cfff]
kernel: [0.00000] node 0: [mem 0x00100000-0xcf414fff]
kernel: [0.00000] node 0: [mem 0xcf41c000-0xcfdfcfff]
....
kernel: [0.00000] ACPI: Local APIC address 0xfee00000
kernel: [0.00000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
kernel: [0.00000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
e muito, muito mais.
Não vejo como isso pode ser útil para alguém que não seja um desenvolvedor / depurador de kernel.
Eu descobri que posso me livrar deles usando loglevel=5
como parâmetro de inicialização. Os logs de depuração não são mais impressos no terminal, mas ainda estão dentro dmesg
e dentro syslog
.
É possível diminuir a verbosidade de registo de inicialização globalmente, para que dmesg
e syslog
não são inundadas por esta informação inútil?
Estou usando o kernel auto compilado 3.18
SOLUÇÃO ACEITADA
Acontece que, colocando as seguintes linhas para /etc/rsyslog.conf
resolver o problema para mim:
kern.debug /dev/null
& ~
syslog
edmesg
são inundados com os registros de depuração inúteis, e tornando avisos reais e erros mais fáceis de ignorar. Além disso,dmesg
esyslog
deve ser lido por humanos (ou seja, o administrador). Esse é todo o seu propósito.Respostas:
Para syslog Você pode adicionar a seguinte linha em
/etc/syslog.conf
:Ele descartará as mensagens .info e .debug do kernel (que são descartadas com loglevel = 5)
Além disso,
dmesg
pode ser usado com a opção-n
de mostrar mensagens com determinado nível de log.fonte
Alguns dos logs são impressos por printk () que você não pode desativá-lo. E alguns são impressos por pr_debug () que pode ser desativado depende da configuração do kernel. O comportamento de pr_debug () é controlado pelo recurso de depuração dinâmica. Se CONFIG_DYNAMIC_DEBUG estiver definido, todas as chamadas pr_debug () poderão ser ativadas / desativadas dinamicamente por local de chamada. Os detalhes da depuração dinâmica estão aqui . Se CONFIG_DYNAMIC_DEBUG não estiver definido, mas DEBUG estiver definido no arquivo de origem, pr_debug () funcionará como printk () . Se ambos não estiverem definidos, pr_debug não fará nada.
Aqui está a definição no kernel:
Portanto, verifique a configuração do seu kernel e descubra de onde vêm esses logs. Então você saberá como desativá-lo.
fonte
echo 8 > /proc/sys/kernel/printk
: stackoverflow.com/questions/28936199/...Além de definir a
loglevel
partir da KCL, você também pode ajustar okernel.printk
sysctl para que o nível máximo reflita o que você deseja e persista durante a inicialização.Quanto a este esclarecimento adicional no comentário:
Eu apenas usaria
logrotate
em um trabalho cron para mover os arquivos para fora do caminho após a reinicialização :Então você está começando do zero, por assim dizer, com o despejo limitado de dados de depuração nos logs.
fonte
logrotate
completamente erra o ponto. Meu problema não é que meus arquivos de log sejam muito grandes e que estou ficando sem espaço em disco. Em vez disso, o problema é que as informações de depuração nesses arquivos de log tornam as informações úteis menos acessíveis.