Script para deletar arquivos com cron

1. Script para deletar arquivos com cron

rodrigo
muzykaum

(usa Debian)

Enviado em 16/03/2013 - 10:41h

Bom dia pessoal, estou com problema no meu firewall, com Debian. Ele está armazenando logs gigantescos com: /var/log/syslog /var/log/messages /var/log/kern.log.
Modifiquei meu logrotate e tudo mais mas nao consegui resoltuado.
Queria então criar apenas um script que deletasse os logs acima, tipo um .sh com: rm -rf syslog,kern.log e messages, depois rebootar o servidor. Ai então coloca-lo no cron pra executar as 23:00 çdiariamente. Alguem me da uma mão pra fazer isto ?

Grato


  


2. Re: Script para deletar arquivos com cron

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 16/03/2013 - 12:49h

por que nao faz assim

script.sh


#!/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/kern.log


e coloca no cron

espero que ajude


3. Re: Script para deletar arquivos com cron

Paulo
paulo1205

(usa Ubuntu)

Enviado em 18/03/2013 - 21:47h

danniel-lara escreveu:

por que nao faz assim

script.sh


#!/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/kern.log


e coloca no cron

espero que ajude


Esse tipo de coisa não funciona se algum processo estiver com um desses arquivos abertos -- e provavelmente o próprio syslogd estará. O problema é que não se podo encolher o tamanho de um arquivo aberto por outro processo: ao se tentar fazer isso, o que pode acontecer é corromper o contedo anterior do arquivo, mas seu tamanho possivelmente permanecerá o mesmo.

A melhor forma de fazer, que é como o logrotate faz, é algo mais ou menos equivalente à seguinte seqüência de comandos do shell.

#!/bin/bash

for rot_file in /dir/file1 /dir/file2 /dir/file3; do
new_file="$rot_file-NEW-$$"
old_file="$rot_file-OLD"
rm -f "$new_file"
touch "$new_file"
ln "$rot_file" "$old_file"
mv "$new_file" "$rot_file"
done

# neste ponto reinicia o servico que usa os arquivo (por exemplo: syslogd)
service syslogd restart



4. Re: Script para deletar arquivos com cron

Carlos APC
Carlos_Cunha

(usa Linux Mint)

Enviado em 18/03/2013 - 22:46h

Amigo não fassa g"GAMBIARA" o logrotate faz certo sim, e melhor solução e vc aprender a usa-lo.....
Va por min :-D


5. Re: Script para deletar arquivos com cron

Paulo
paulo1205

(usa Ubuntu)

Enviado em 19/03/2013 - 00:31h

Concordo com o nosso colega PretooO. O melhor é usar o logrotate, ajustando a quantidade de arquivos a serem mantidos suficientemente baixa para não estourar seu espaço em disco. Quando expus o script na mensagem anterior, era para explicar porque a sugestão do outro colega era problemática, e a forma "correta" de fazer, sem perda de dados (faltaram alguns passos, porém, como preservar as permissões do arquivo original).

Mas algo ainda melhor do que simplesmente mexer na quantidade de arquivos rotacionados pode ser ajustar as suas regras de firewall para gerar uma menor quantidade de logs, concentrando-se nas mensagens que realmente possam caracterizar um ataque perigoso. Isso teria outra vantagem além de reduzir o espaço gasto: acelerar a máquina, já que diminuiria o consumo de CPU, a quantidade de comunicações entre processos e a quantidade de acessos a disco.


6. Re: Script para deletar arquivos com cron

rodrigo
muzykaum

(usa Debian)

Enviado em 21/03/2013 - 14:50h

então pessoal, dentro do diretório: /etc/logrotate.d existe um arquivo chamado: "rsyslog"
segue a configuração do arquivo:

/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
invoke-rc.d rsyslog reload > /dev/null
endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
invoke-rc.d rsyslog reload > /dev/null
endscript
}


as unicas alterações que fiz foi mudar o rotate 7 pra 1 e rotate 4 pra um também, imaginei que seria os dias mas o problema ainda continua, ele vai aumentando o tamanho dos logs, quando vejo está sem espaço em disco e nao navega mais.

no diretorio /etc tem outro arquivo chamado: logrotate.conf, segue a configuração deste:

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}

/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}

# system-specific logs may be configured here

Alguem me da uma força pra ver o que está errado nesta configuração??
Abraço.



7. Re: Script para deletar arquivos com cron

rodrigo
muzykaum

(usa Debian)

Enviado em 26/03/2013 - 08:46h

pessoal, mechendo aqui descobri que os scripts do diretorio logrotate.d então corretos.
se eu o fizer manualmente, assim: "logrotate /etc/logrotate.conf" ele gera os arquivos normalmente, compacta os logs, roda o sarg e cria os logs do squid, compacta, renomeia. Tudo conforme deveria ser. Preciso de uma mão pra colocar este comando no crontab agora :X








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts