Usando o “less” para navegar em logs
Se você precisa monitorar alguma aplicação linux que gere logs rotativos, o jeito mais prático e flexÃvel é usando o less. Basta chamar “less <nomearq>” e pronto. Por ser uma ferramenta de visualização (e não de edição), a navegação dele é mais prática que a do VIM em alguns aspectos - o principal é que quase tudo é feito com uma tecla só. Por exemplo, algumas teclas de atalho:
- “g” - vai para o inÃcio do arquivo;
- “G” - vai para o fim do arquivo. Detalhe: esse comando também atualiza o arquivo, de forma que, se o log for do tipo de aumenta fácil, pode-se ir pressionando “G” para ver as novas linhas geradas;
- “f” - monitora o fim do arquivo. Em termos simples, o “less” vira um “tail -f” (é como se pressionasse “G” toda hora). Para voltar ao modo navegável, basta pressionar “ctrl-c”;
- “v” - invoca o editor configurado na variável $EDITOR (normalmente o nano ou o VIM);
- “/<texto>” - procura “<texto>” a partir do inÃcio do arquivo;
- “?<texto>” - procura “<texto>” a partir do fim do arquivo;
- “n” - repete a última pesquisa. Se a pesquisa foi com o “/”, vai para a próxima ocorrência. Se foi com “?” vai para a ocorrência anterior;
- “N” - repete a última pesquisa, no sentido contrário. Se usou o “/”, vai para a ocorrência anterior;
- “<numero>” - vai para a linha número “<numero>”;
- “r” - recarrega a tela (útil quando algum processo em background polui o terminal);
- “R” - recarrega o arquivo (perfeito quando o log rotaciona);
- “q” - sai.
PolÃcia francesa adota o Linux
Recebi, hoje, um post da Geek, falando que a polÃcia francesa adotou o Linux. Eu acredito que SO é que nem martelo (de borracha, de aço, leves, pesados, etc): cada um tem sua utilidade. Não sou radical a favor do uso de Linux, embora goste muito do pengüim, mas sei que para o office básico ele já está bom o suficiente.
Pagar uma fortuna com o XP/Vista, mais outra fortuna com o Office, e outras com antivÃrus e eteceteras só para acessar a Internet, ler e-mails e escrever documentos, é um absurdo (e um enorme desperdÃcio).
O que mais gostei no artigo da Geek foi a explicação da migração: “Passar do XP para o Ubuntu, entretanto, mostrou-se muito fácil. As duas maiores diferenças foram os Ãcones e os jogos. Jogos não são nossa prioridade”.
Só em paÃses retrógrados esse tipo de coisa não acontece. Pra que perder tempo procurando onde fica a formatação de página do OpenOffice se é mais fácil atirar pedras nas gaivotas e continuar lustrando as janelas?
2 commentáriossDepurar execução de programas Linux sem o GDB
Alguma vez já precisou configurar um programa usando bibliotecas externas? Por exemplo, o IBM Websphere Broker precisa que configuremos um arquivo “.odbcini” (definido em uma variável $ODBCINI) que apontam para os SOs dos provedores ODBC (tipo o UKora823.so).
Após um upgrade feito pela consultoria, o broker parou de iniciar. Sem log nem nada, não tinha como avaliar o que ocorria. Então, usando meus conhecimentos arcanos sobre Linux, usei o seguinte comando:
( LD_DEBUG=libs mqsistart BROKER ) 2>&1 | less
Na hora, consegui um log de como o Linux carrega as bibliotecas, e, de brinde, achei o seguinte no log gerado:
calling init: /opt/ibm/mqsi/6.1/merant/lib/UKor823.so /opt/ibm/mqsi/6.1/merant/lib/UKor823.so: error: symbol lookup error: undefined symbol: SQLGetConnectAttr (fatal)
Junto com muitas outras linhas similares. Bastou usar o GREP para descobrir que o arquivo libsqora.so.10.1 não estava no LD_LIBRARY_PATH. Adicionando-o, funcionou.
Agora, uma explicação sobre o comando mágico. Ele pode ser dividido assim:
1: ( 2: LD_DEBUG=libs mqsistart BROKER 3: ) 4: 2>&1 5: | less
A linha 2 é a principal. Tem o comando que quero executar (”mqsistart BROKER”) e um extra (”LD_DEBUG=libs”) que informa ao LD do linux para emitir ao STDERR o que ele está fazendo com relação à s libs. Usando “LD_DEBUG=help”, você recebe uma lista de opções que podem ser usadas. Para quem não sabe, é possÃvel passar variáveis de ambiente extra, no Linux, usando essa sintaxe. Outro exemplo:
ORACLE_HOME=/xpto sqlplus
Assim, você pode executar o “sqlplus” com outra instalação do Oracle.
Voltando ao comando arcano, se você executar apenas a linha 2, vai receber quilômetros de log. Claro que você vai querer paginar, então, logo pensa na linha 5, para redirecionar a saÃda ao comando de paginação “less”. Entretanto, o LD_DEBUG emite no STDERR da aplicação, logo, precisa usar a linha 4 para redirecionar o STDERR para o STDOUT (que será enviado, via pipe, ao less).
Só que, sem as linhas 1 e 3, você estará redirecionando a saÃda do mqsistart, e não do LD_DEBUG. Os parênteses agrupam um ou mais comandos em um “comando” só, permitindo que o STDERR do LD_DEBUG vá para o less.
Nenhum comentário