Como esvaziar o conteúdo do arquivo de streaming contínuo no linux

7

eu tenho o programa rodando usando este comando

command 2> sample.txt

agora esse arquivo está crescendo continuamente e o comando sairá em 5 a 6 dias e eu acredito que o tamanho do arquivo não irá em GB

Eu tentei isso

echo "" > sample.txt , mas isso não faz diferença e o tamanho do arquivo está crescendo.

Eu estava pensando em configurar o cron job após 1 hora para esvaziar seu conteúdo

Como posso esvaziar o conteúdo do arquivo

    
por user1858027 20.12.2012 / 13:31

4 respostas

2

Como o arquivo é mantido aberto pelo aplicativo, não acho que você possa esvaziá-lo tradicionalmente. Pesquisando um pouco eu achei isso:

Assuming that the author of the code writing the never-ending file knows even a little bit about unix:

  1. For this process there is a configuration file, which names the output logfile.
  2. The process "reconfigures" itself when it receives a SIGHUP signal, by re-reading the config file, and if the name of the logfile changed, then close the old one, open the new one.

This is pretty much UNIX standard for a never-ending log writer program.

Além disso, não consigo encontrar nenhuma solução óbvia, já que você usou > e não >> . Da próxima vez você pode querer redirecionar através de truncate ou algo do tipo para evitar esse problema de um arquivo de log infinitamente aberto.

    
por 20.12.2012 / 14:43
1

Tudo que você precisa é:

cat /dev/null > sample.txt

ou

>sample.txt

    
por 20.12.2012 / 15:46
0

O seguinte comando deve funcionar:

cat /dev/null > sample.txt  
    
por 21.12.2012 / 12:18
0

Use o logrotate, ele é destinado exatamente para esta missão

    
por 23.12.2012 / 08:32