Não é exatamente a resposta que você estava procurando, mas você poderia tentar usar ' tail -F ' (em oposição a ' tail -f ') que lhe dará exatamente o comportamento que você está procurando.
Às vezes, estou executando um less +F
em um arquivo de log, que eu trunco. Eu gostaria que less
percebesse que o arquivo foi truncado e comece a seguir o arquivo como está agora. Atualmente, sou forçado a fazer o seguinte:
less +F my-file.txt
E eu tenho que fazer os passos 3-4 toda vez que truncar o arquivo (o que é dezenas o vezes por dia). Isso é realmente uma dor.
Eu gostaria de fazer:
printf "" > my-file.txt
(e qualquer outra opção extra é necessária) E é isso. less +F my-file.txt
estaria automaticamente ciente de que o arquivo foi truncado e começará a seguir o novo arquivo desde o início.
Isso é possível? Que bandeira devo usar por menos para conseguir isso?
Não é exatamente a resposta que você estava procurando, mas você poderia tentar usar ' tail -F ' (em oposição a ' tail -f ') que lhe dará exatamente o comportamento que você está procurando.
Por que você não os combina assim?
tail -F filename | tee | less
Isso funciona bem para mim.
Você deseja especificar o argumento --follow-name
para less
. De a página do manual :
Normally, if the input file is renamed while an F command is executing, less will continue to display the contents of the original file despite its name change. If --follow-name is specified, during an F command less will periodically attempt to reopen the file by name. If the reopen succeeds and the file is a different file from the original (which means that a new file has been created with the same name as the original (now renamed) file), less will display the contents of that new file.
Então, seus passos agora seriam:
P.S. Em vez de usar printf, muitos shells truncarão apenas com o operador de redirecionamento: less --follow-name +F my-file.txt