Como usar o comando tail no Linux
Fatmawati Achmad Zaenuri / Shutterstock
O comando tail do Linux exibe dados do final de um arquivo. Pode até exibir atualizações que são adicionadas a um arquivo em tempo real. Mostramos como usá-lo.
O systemd matou a cauda?
O comando tail mostra os dados do final de um arquivo. Normalmente, novos dados são adicionados ao final de um arquivo, portanto, o comando tail é uma maneira rápida e fácil de ver as adições mais recentes a um arquivo. Ele também pode monitorar um arquivo e exibir cada nova entrada de texto para esse arquivo à medida que elas ocorrem. Isso o torna uma ótima ferramenta para monitorar arquivos de log.
Muitas distribuições modernas de Linux adotaram o gerenciador de sistema e serviço systemd. Este é o primeiro processo executado, possui o ID do processo 1 e é o pai de todos os outros processos. Esse papel costumava ser tratado pelo sistema de inicialização mais antigo.
Junto com essa alteração, surgiu um novo formato para os arquivos de log do sistema. Não são mais criados em texto sem formatação, no systemd eles são gravados em um formato binário. Para ler esses arquivos de log, você deve usar o utilitário journactl. O comando tail funciona com formatos de texto sem formatação. Ele não lê arquivos binários. Então, isso significa que o comando tail é uma solução em busca de um problema? Ainda tem algo a oferecer?
Há mais no comando tail do que mostrar atualizações em tempo real. E, nesse caso, ainda existem muitos arquivos de log que não são gerados pelo sistema e ainda são criados como arquivos de texto sem formatação. Por exemplo, os arquivos de log gerados pelos aplicativos não mudaram de formato.
Usando cauda
Passe o nome de um arquivo para o final e ele mostrará as últimas dez linhas desse arquivo. Os arquivos de exemplo que estamos usando contêm listas de palavras classificadas. Cada linha é numerada, por isso deve ser fácil seguir os exemplos e ver que efeito as várias opções têm.
cauda word-list. txt
Para ver um número diferente de linhas, use a opção -n (número de linhas):
tail -n 15 palavras-lista. txt
Na verdade, você pode dispensar o “ -n ”, e apenas usar o hífen “ - ” e o número Verifique se não há espaços entre eles. Tecnicamente, esse é um formulário de comando obsoleto, mas ainda está na página do manual e ainda funciona.
cauda -12 palavra-lista. txt
Usando cauda com vários arquivos
Você pode fazer o trabalho final com vários arquivos de uma só vez. Basta passar os nomes dos arquivos na linha de comando:
tail -n 4 list-1. txt list-2. txt list-3. txt
Um cabeçalho pequeno é mostrado para cada arquivo, para que você saiba a qual arquivo as linhas pertencem.
Exibindo linhas desde o início de um arquivo
O modificador + (contagem desde o início) cria linhas de exibição finais desde o início de um arquivo, começando em um número de linha específico. Se o seu arquivo for muito longo e você escolher uma linha próxima ao início do arquivo, você receberá muitas informações enviadas para a janela do terminal. Se for esse o caso, faz sentido canalizar a saída da cauda para menos.
cauda +440 list-1. txt
Você pode folhear o texto de forma controlada.
Como existem 20.445 linhas neste arquivo, este comando é equivalente a usar o “ -6 ” opção:
cauda +20440 list-1. txt
Usando bytes com cauda
Você pode dizer ao tail para usar deslocamentos em bytes, em vez de linhas, usando a opção -c (bytes). Isso pode ser útil se você tiver um arquivo de texto formatado em registros de tamanho regular. Observe que um caractere de nova linha conta como um byte. Este comando exibirá os últimos 93 bytes no arquivo:
tail -c 93 list-2. txt
Você pode combinar a opção -c (bytes) com o modificador + (contagem desde o início do arquivo) e especificar um deslocamento em bytes contados desde o início do arquivo:
tail -c +351053 list-e. txt
Tubulação na cauda
Anteriormente, canalizamos a saída da cauda para menos. Também podemos canalizar a saída de outros comandos para a cauda.
Para identificar os cinco arquivos ou pastas com os tempos de modificação mais antigos, use a opção -t (classificar por tempo de modificação) com ls e direcione a saída até o final.
ls -tl | cauda -5
O comando head lista as linhas de texto desde o início de um arquivo. Podemos combinar isso com tail para extrair uma seção do arquivo. Aqui, estamos usando o comando head para extrair as primeiras 200 linhas de um arquivo. Isso está sendo canalizado para a cauda, que está extraindo as últimas dez linhas. Isso nos dá as linhas 191 até a linha 200. Ou seja, as últimas dez linhas das primeiras 200 linhas:
cabeça -n 200 list-1. txt | cauda -10
Este comando lista os cinco processos que mais consomem memória.
ps aux | ordenar -nk +4 | cauda -5
Vamos quebrar isso.
O comando ps exibe informações sobre processos em execução. As opções usadas são:
- a: Liste todos os processos, não apenas para o usuário atual.
- u: Exibe uma saída orientada ao usuário.
- x: Liste todos os processos, incluindo aqueles não está sendo executado dentro de um TTY.
O comando sort classifica a saída de ps. As opções que estamos usando com a classificação são:
- n: classifique numericamente.
- k +4: classifique na quarta coluna.
O comando tail -5 exibe os últimos cinco processos da saída classificada. Estes são os cinco processos que mais consomem memória.
Usando cauda para rastrear arquivos em tempo real
O rastreamento de novas entradas de texto que chegam em um arquivo - normalmente um arquivo de log - é fácil com o final. Passe o nome do arquivo na linha de comando e use a opção -f (follow).
tail -f geek-1. log
À medida que cada nova entrada de log é adicionada ao arquivo de log, o tail atualiza sua exibição na janela do terminal.
Você pode refinar a saída para incluir apenas linhas de particular relevância ou interesse. Aqui, estamos usando grep para mostrar apenas as linhas que incluem a palavra "média" # 8221 ;:
tail -f geek-1. log | média grep
Para acompanhar as alterações em dois ou mais arquivos, passe os nomes dos arquivos na linha de comando:
tail -f -n 5 geek-1. log geek-2. log
Cada entrada é marcada com um cabeçalho que mostra de qual arquivo o texto veio.
A exibição é atualizada sempre que uma nova entrada chega em um arquivo seguido. Para especificar o período de atualização, use a opção -s (período de suspensão). Isso diz à cauda para aguardar alguns segundos, cinco neste exemplo, entre as verificações de arquivos.
tail -f -s 5 geek-1. log
É certo que você não pode dizer olhando para uma captura de tela, mas as atualizações no arquivo estão acontecendo uma vez a cada dois segundos. As novas entradas de arquivo estão sendo exibidas na janela do terminal uma vez a cada cinco segundos.
Ao seguir as adições de texto para mais de um arquivo, você pode suprimir os cabeçalhos que indicam de qual arquivo de log o texto vem. Use a opção -q (quiet) para fazer isso:
tail -f -q geek-1. log geek-2. log
A saída dos arquivos é exibida em uma mistura perfeita de texto. Não há indicação de qual arquivo de log veio de cada entrada.
cauda ainda tem valor
Embora o acesso aos arquivos de log do sistema agora seja fornecido pelo journalctl, o tail ainda tem muito a oferecer. Isso é especialmente verdade quando usado em conjunto com outros comandos, entrando ou saindo da cauda.
systemd pode ter mudado o cenário, mas ainda existe um lugar para os utilitários tradicionais que estão em conformidade com a filosofia do Unix de fazer uma coisa e fazê-la bem.
Via: How to Geek
Nenhum comentário