O comando tail Linux é uma solução prática para analisar as últimas linhas de um arquivo. Confira mais sobre o assunto no blog da HostGator.
O comando tail Linux exibe a última parte – por padrão, são 10 linhas que aparecem ao final – de um ou mais arquivos ou dados de saída no prompt Linux. Também pode ser usado para monitorar as alterações do arquivo em tempo real.
Costuma ser utilizado para observar e analisar logs ou outros arquivos que mudam com o tempo, geralmente, combinados com outras ferramentas, como grep. Neste artigo, entenda como usar o comando tail do Linux por meio de exemplos práticos e explicações das funcionalidades mais comuns desse comando.
Sintaxe do comando tail
Muitos tipos de comandos estão disponíveis para mostrar o conteúdo de um arquivo. Os mais usados são: cat, more, less, head e tail. Para ler o arquivo inteiro, são usados os comandos cat, more e less.
Os comandos head e tail são usados para ler uma parte específica do arquivo. O primeiro é usado para ler o arquivo desde o início, enquanto o segundo é utilizado para ler o arquivo a partir do final.
Você pode usar qualquer arquivo existente ou criar um novo para testar as funções dos comandos head e tail. Aqui, vamos utilizar um nome de exemplo apenas para ilustrar.
Antes de explicar como usar o comando Linux tail, vamos começar revisando a sintaxe básica. As expressões do comando tail têm o seguinte formato:
- tail [OPÇÃO]… [ARQUIVO]…
OPÇÃO / OPTION – opções de tail. Veremos a seguir quais são essas opções aplicáveis ao comando tail linux..
ARQUIVO / FILE – nomes de arquivo de entrada. Em geral, quando nenhum arquivo é especificado, ou se o arquivo for saída “–”, o tail lê uma entrada padrão.
O systemd e a influência sobre o comando tail
Como falamos, o tail Linux é um comando que mostra as informações finais de um dado arquivos, ou seja, suas 10 últimas linhas. Normalmente, novas informações são adicionadas ali, portanto, essa é uma maneira mais eficiente de ver as alterações mais recentes.
Além disso, o tail permite monitorar um arquivo da seguinte forma: cada nova entrada de texto é exibida à medida que são inseridas. Por isso, essa é uma ferramenta interessante para controle aos arquivos de log.
É importante lembrar que muitas distribuições Linux modernas adotaram o gerenciador systemd como sistema de serviço. Junto dessa mudança, a mudança de formato para arquivos de log também aconteceu. Assim, os arquivos não são mais criados em texto simples, mas gravados em formato binário.
Por outro lado, o comando tail funciona apenas com formatos simples de texto, sem ler arquivos binários. Então, afinal, isso significa que o tail Linux não tem mais o que oferecer?
Pelo contrário! Esse comando faz muito mais que apenas exibir as atualizações em tempo real. Por falar nisso, vale lembrar que muitos arquivos de log não são gerados pelo sistema, mas criados como arquivos de texto simples ainda.
Como usar o comando tail
De forma geral, em sua sintaxe mais básica, ou seja, quando utilizado sem nenhuma opção adicional, o comando tail Linux exibirá as últimas 10 linhas, como falamos.
- tail arquivoexemplo.txt
Exibição de um número específico de linhas, como fazer?
Para tanto, existe uma opção chamada -n ( –linhas), a qual serve para especificar o número de linhas que você deseja que sejam exibidas.
- tail -n <NÚMERO> arquivoexemplo.txt
Você também pode usar apenas o hífen ( -) e o número de linhas desejado. Assim, para exibir as últimas 50 linhas de um arquivo nomeado “arquivoexemplo”, você usaria:
- tail -n 50 arquivoexemplo.txt
O exemplo a seguir exibirá o mesmo resultado dos comandos acima:
- tail -50 arquivoexemplo.txt
Exibição de um número específico de bytes, como fazer?
Para mostrar um número de bytes determinado, use a opção -c ( –bytes).
- tail -c <NÚMERO> arquivoexemplo.txt
Por exemplo, para mostrar os últimos 500 bytes do arquivo “arquivoexemplo.txt”, você usaria:
- tail -c 500 arquivoexemplo.txt
Além disso, é possível usar um sufixo que serve como multiplicador para especificar a quantidade de bytes exibidos. “B”, por exemplo, multiplica por 512, ao passo que “KB” multiplica por 1.000, enqunto “K” multiplica por 1024 e “MB” multiplica por 1.000.000 … assim segue sucessivamente.
O seguinte comando exibirá os últimos dois kilobytes (2.048) do arquivoexemplo.txt:
- tail -c 2k filename.txt
Como observar se há alterações em um arquivo
Para monitorar um arquivo quanto às alterações, use a opção -f ( –follow):
- tail -f arquivoexemplo.txt
Esta opção é particularmente útil para monitorar arquivos de log. Por exemplo, para exibir as últimas 10 linhas de um arquivo /var/log/nginx/error.log e monitorá-lo para atualizações, você usaria:
- tail -f /var/log/nginx/error.log
Para interromper o comando tail Linux enquanto ele está assistindo a um arquivo, pressione Ctrl+C. Para continuar monitorando o arquivo quando ele for recriado, use -F e a opção desejada.
- tail -F arquivoexemplo.txt
Esta opção é útil em situações em que o comando tail está seguindo um arquivo de log que gira. Quando usado com a opção -F, o comando tail f Linux irá reabrir o arquivo assim que ele se tornar disponível novamente.
Exibição de vários arquivos, como fazer?
Suponha que vários arquivos são fornecidos como entrada para o comando tail. Nesse caso, o que acontece é a exibição das últimas 10 linhas de cada um dos arquivos. Seguindo o código:
- tail arquivoexemplo1.txt arquivoexemplo2.txt
Como pode perceber, é só usar as mesmas opções de exibição que a usada para um único arquivo. O exemplo a seguir demonstra as últimas 20 linhas de arquivoexemplo1.txt e arquivoexemplo2.txt:
- tail -n 20 arquivoexemplo1.txt arquivoexemplo2.txt
Tail usado com outros comandos, como fazer?
O tail Linux tem seu funcionamento potencializado por outros comandos. Por exemplo, para monitorar o arquivo de registro de acesso do apache e exibir apenas as linhas que contêm o endereço IP, você usaria:
- tail -f /var/log/apache2/access.log | grep 000.000.00.00
O comando “os” a seguir exibirá os dez principais processos em execução classificados por uso de CPU:
ps aux | sort -nk +3 | tail -5
Usando os comandos head e tail juntos
Se você quiser ler o conteúdo do meio de qualquer arquivo, apenas os comandos head ou tail não podem resolver o problema. Você tem que usá-los juntos para resolver esse problema!
O comando a seguir lerá as linhas de 2 a 6 do arquivoexemplo.txt. A princípio, o comando head recuperará as primeiras 6 linhas, omitindo as 5 últimas linhas para o valor negativo, enquanto o comando tail recuperará as últimas 5 linhas da saída do comando head. Veja:
- head -n -5 arquivoexemplo.txt | tail -n 5
Em resumo:
- tail /file/exemplo.txt
O exemplo acima listaria as últimas 10 linhas (padrão) do arquivo /file/exemplo.txt
- tail /file/exemplo.txt -n 100
O exemplo acima listaria as últimas 100 linhas no arquivo /file/exemplo.txt. Altere 100 para 50 para exibir as últimas 50 linhas do arquivo.
- tail -f /file/exemplo.txt
Este exemplo exibe as últimas 10 linhas e atualiza o arquivo conforme novas linhas são adicionadas. É um ótimo comando para observar arquivos de log em tempo real.
- tail -f /tmp/debug.log –retry
Às vezes, o arquivo planejado para o tail pode não estar disponível quando você executa o comando, ser criado posteriormente ou tornarem-se inacessíveis. Nesse caso, você pode usar a opção –retry para continuar tentando abrir o arquivo como no exemplo acima.
- tail -c 5 /file/exemplo.txt
Exibe qualquer número de bytes do final de um arquivo, em vez de um número desejado de linhas. Os bytes selecionados incluirão caracteres de nova linha, abrangendo várias linhas. Isso é feito usando a opção -c, seguida pelo número de bytes desejado. No exemplo acima, os cinco bytes finais do arquivo /file/exemplo.txt serão impressos.
Esperamos que, depois de praticar os exemplos acima, você seja capaz de aplicar os comandos corretamente.
Você pode se especializar ainda mais neste tópico assistindo ao vídeo do canal Diolinux:
Comandos relacionados
- Cat: envia o conteúdo de um arquivo;
- Head: exibe as primeiras linhas de um arquivo;
- More: exibe o texto em uma tela por vez;
- Pg: navega página por página em arquivos de texto.
Conclusão
Agora você deve ter uma boa ideia de como usar o comando tail do Linux e para que ele serve. Como falamos, ele é complementar ao comando head, que imprime as primeiras linhas de um arquivo para o terminal.
O comando tail, ainda hoje, tem muito a contribuir! Muito embora o acesso aos arquivos log do sistema agora seja feito pelo comando journalctl. Em especial, o tail tem seu valor quando usado em conjunto com outros comandos linux, como o head.
Assim, o cenário de utilização e opções está diferente, mas ainda há um lugar especial para utilitários tradicionais. Esses comandos mantém a filosofia Unix de fazer algo bem feito de forma simples e objetiva!
Se você gostou deste artigo, não deixe de acompanhar o blog da HostGator! Postamos regularmente conteúdo sobre tecnologia, negócios, marketing e mais.