uma tarefa do cron para excluir um arquivo específico quando atingir mais de 1 gb de tamanho?

1

Meu servidor quebrou com danos extenstive quando um arquivo de log chegou a 27 shows em poucas horas. Arquivos de log são compactados diariamente e geralmente são muito pequenos, talvez até 10mb em 24 horas. Hoje houve um problema, e isso fez com que um rastreamento de pilha fosse impresso 20 vezes por segundo, eu estava dormindo, o log se transformou em 27 gb e, quando o disco rígido ficou cheio, sérios danos e perda de dados ocorreram. O arquivo de log sempre será chamado de "latest.log" Eu preciso de um trabalho cron que irá apagar este arquivo se ele ficar maior que 1GB para evitar este acidente de trem no futuro. Obrigado por me ajudar.

    
por user2656801 15.11.2015 / 11:31

1 resposta

0

Eu não faria isso com um cron, embora se você insistisse nisso, uma simples linha de pesquisa faria isso. Esteja ciente de que você precisaria reiniciar o serviço, porque os arquivos no Unix só morrem quando não estão mais sendo usados.

De volta ao crontab:

*/10 * * * * find /dir -name latest.log -size +1GB -exec rm -f {} \; -exec command_to_restart_your_service \;

Como você fala sobre pilhas, eu suponho que você está falando sobre o tomcat. Dê uma olhada no seguinte post. No entanto, se esse servidor for tão importante, eu encaminharia todos os logs para um servidor de log remoto. Por que você está tendo danos, você está executando um servidor SQL lá também? Eu iria executá-lo em um servidor separado.

Aqui está o link para o artigo sobre como limitar os registros em tamanho.

link

    
por 15.11.2015 / 11:51

Tags