Como habilitar o printk seletivamente?

0

Eu quero imprimir algumas instruções do kernel, mas não todas.

Então, posso usar o printk seletivamente?

Por seletivamente, quero dizer que quero ativar o printk somente em lugares específicos e desativá-lo em qualquer outro lugar.

Neste momento, só posso ativar (na configuração do kernel, habilitando o printk) ou desativá-lo globalmente; Eu não tenho escolha alguma.

    
por user2799508 17.05.2014 / 16:12

1 resposta

4

(Edit: Informações adicionais estão aqui também: Descrição dos valores do kernel.printk )

Você pode usar o comando / sistema sysctl para alterar as configurações do printk do kernel conforme desejado.

sysctl -w kernel.printk="4 4 1 7"

definiria as configurações do printk como 'padrão', enquanto

sysctl -w kernel.printk="3 4 1 3"

impediria que mensagens de baixo nível fossem enviadas para o console.

sysctl kernel.printk

mostrará suas configurações atuais.

Da documentação do linux ( documentação do kernel ):

printk:

The four values in printk denote: console_loglevel, default_message_loglevel, minimum_console_loglevel and default_console_loglevel respectively.

These values influence printk() behavior when printing or logging error messages. See 'man 2 syslog' for more info on the different loglevels.

  • console_loglevel: messages with a higher priority than this will be printed to the console
  • default_message_loglevel: messages without an explicit priority will be printed with this priority
  • minimum_console_loglevel: minimum (highest) value to which console_loglevel can be set
  • default_console_loglevel: default value for console_loglevel

Você normalmente precisará ser root ou ter privilégios sudo para gravar (-w) novos valores usando sysctl. Você também pode ecoar valores em / proc / sys / kernel / printk, precisa ser root (ish) para isso também.

Editar2:

Meu assistente de depuração do Monkey acabou de me lembrar que existe outra maneira de obter as mensagens do kernel que podem ser úteis.

É possível solicitar que o daemon syslog / rsyslog / whateverlog envie a saída do kernel para um determinado arquivo, canal ou soquete, para ser lido por um programa de sua escolha, analisado, salvo ou descartado, conforme apropriado.

Meu rsyslog.conf mostra que todas as mensagens de nível kern. * são enviadas para /var/log/kern.log , você pode facilmente ouvir esse arquivo e obter qualquer mensagem que você deseje.

Também é possível definir seu próprio tipo de instalação e enviar o rsyslog para algum lugar especial. Mesmo enviando seletivamente mensagens kern.warn ou kern.crit para algum lugar, se desejar.

As configurações de configuração para o rsyslog e syslog são diferentes, como sempre, as páginas man são suas amigas.

    
por 20.05.2014 / 12:15