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.