On Friday 31 July 2009 09:06:38 Ellington Santos wrote:
> man logrotate
> Esse cara que é o responsável por cuidar de logs.


o próprio Squid faz isso: "squid -k rotate", ou ainda (squid.conf), exemplo:

logfile_rotate 10

Ou ainda agende o comando squid -k rotate no crontab (ou nos diretórios 
/etc/cron.{daily,hourly,monthly,weekly}, só copiar o script p/ um deles).

Se quer remover apenas um intervalo de um dos logs de acesso (acho que é sua 
duvida inicial), algo como isso:

# grep -Ev '07-21 02|03:' access.log > access.log.new
# mv access.log.new access.log

deve funcionar (ou seja, vai remover os logs entre 2 e 3 da manhã do dia 21-07 
do arquivo criado e depois sobrescrever o  original, sem as entradas do 
original), ou ainda algo como:

# sed -ri 's/^.+07-21 0[23]:.+$//g'

que faz a mesma coisa sem precisar criar/sobreecrever arquivos.

Ah, aqui meu access.log está formatado assim:

logformat format %{%Y-%m-%d %H:%M:%S}tl %>a %Ss/%03Hs %ru
access_log /var/log/squid/access.log format

Se for o log original, sem formatação (a data está em segundos apenas), pode 
usar, por exemplo, o date p/ converter as datas e aplicar um dos filtros que 
descrevi acima, seria algo como (conversão de datas com o date):

$ date -d "1970-01-01 UTC + 1245668541.822 seconds"

Assim você encontra o intervalo e filtra da mesma maneira.

--
Herbert

--~--~---------~--~----~------------~-------~--~----~
GUS-BR - Grupo de Usuários de Slackware Brasil
http://www.slackwarebrasil.org/
http://groups.google.com/group/slack-users-br

Antes de perguntar:
http://www.istf.com.br/perguntas/

Para sair da lista envie um e-mail para:
[email protected]
-~----------~----~----~----~------~----~------~--~---

Responder a