1
resposta

[Sugestão] Observação importante antes de aplicar o comando `sort`. Sugestão de correção

Sugestão de correção:

Observação importante antes de aplicar o comando sort:

Gostaria de compartilhar uma sugestão que pode ajudar a evitar um erro que me custou bastante tempo para identificar e corrigir.

Na sessão seguinte (Ordenando por data), está apresentado o comando:

sort -k2 "${ARQUIVO_DIR}/logs_combinados_$(date +%F)" -o "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"

No entanto, esse comando tenta ordenar um arquivo que ainda não existe, pois o nome de entrada não inclui a extensão .log. Isso resulta no seguinte erro:

sort: cannot read: ../myapp/logs-processados/logs_combinados_2025-10-11: No such file or directory

Para que o sort funcione corretamente, o nome do arquivo de entrada também precisa incluir a extensão .log, como já está no nome de saída. A linha corrigida seria:

sort -k2 "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log" -o "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"

Compartilho essa correção com o intuito de contribuir com a clareza do conteúdo e evitar que outros colegas enfrentem a mesma dificuldade.

Ordenando por data

Nesse cenário, apenas usar o comando sort como fizemos anteriormente não daria certo. Como a data não está mais no início da linha (pois agora temos as tags), a ordenação alfabética não funcionará como esperado.

Todavia, podemos utilizar uma das opções do comando sort, que aplicar o comando em uma coluna específica do arquivo. Em nosso exemplo, sabemos que a data está na segunda coluna de cada linha. Mantendo essa informação em mente, vamos abrir o monitoramento-logs.sh mais uma vez.

A comando sort deve ser feito depois do laço de repetição, quando já temos o arquivo final e não adicionaremos mais informações nele. Logo, abaixo do done, digitaremos o comando sort com a opção -k2, que indica a mudança na coluna 2.

O resto do comando prossegue como já aprendemos. Vamos especificar o arquivo que queremos ordenar, usar o -o para salvar as informações no arquivo e indicar o nome do arquivo:

sort -k2 "${ARQUIVO_DIR}/logs_combinados_$(date +%F)" -o "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"

Salvaremos o script com :wq. Apagaremos novamente o conteúdo da pasta de logs para ter os arquivos zerados. Na pasta "myapp/logs-processados/":

rm log*

Na pasta "scripts-linux/", rodaremos o script:

./monitoramento-logs.sh

Agora, voltando para a pasta "myapp/logs-processados", vamos rodar o ls para checar se o arquivo de logs combinados foi criado. Em seguida, rodaremos um cat nele e conferir que tanto a tag quanto a ordenação estão conforme a data.


Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá amigo.
Excelente explicação.
Obrigado por compartilhar.
Bons estudos.