[eside-ghost] logrotate - aviso: email largo

Alvaro Uría fermat en rigel.deusto.es
Vie Mar 11 13:58:50 CET 2005


Wenas de nuevo :P

On Fri, 11 Mar 2005 12:11:16 +0100
aktor <aktor en aktornet.ath.cx> wrote:

> Aupa Alvaro!
> 
> El Fri, 11 Mar 2005 10:57:47 +0100
> Alvaro Uría escribió:

> > 		Si le pasas el parámetro "-a" lo muestra todo.
> 
> A pesar de que la documentación asi lo explica, no parece que se
> comporte así:

> -a "todo" excepto la facility "news", ¿no?

Eso es. Verás:

La variable $opt_news vale 0 al principio. Si le pasas el parámetro
"--news", cambia su valor a 1.

Al parsear cada línea, hay una condición que igual has visto:

>>>>>>>>>>
next if (!$opt_news && ($pat =~ /news\.(\*|crit|err|info|notice)/));
<<<<<<<<<<

Que significa que... Si $opt_news vale 0 (cuando no se pasa "--news") y si
la facility es news.(asterisco o el resto de opciones que pone entre
'pipes'), pasa de esa línea, y se pone a parsear la siguiente.

> >>>
> ObeliX:~# syslogd-listfiles -w --news
[...]
> /var/log/news/news.notice
>          ^^^^^^^^^^^^^^^^
> /var/log/news/news.crit
[...]
> /var/log/news/news.err
>          ^^^^^^^^^^^^^

Al pasarle "--news", no pasa a la siguiente línea directamente, si no que
va al Tratamiento por Defecto (al else final) donde (teniendo en cuenta
que $opt_daily cambiar su valor a 0):

>>>>>>>>
$everything = ($pat =~ /\*\.\*/);
$output{$file} = 1 if (($everything && $opt_daily)
                   || (!$everything && !$opt_daily && !rotated($file))
       || (!$opt_ign_size && ((stat $file)[7] >= $opt_large) && $opt_daily)
                    );
<<<<<<<<

Con lo cual $everything valdrá 0 ($pat es la facility.priority), así que
nos fijamos en la 2ª condición, porque las otras 2 serán falsas
( primera || segunda || tercera), por ser $everything y $opt_daily falsos.

La segunda condición dice: verdadero && verdadero &&
verdadero_SI_diferencia_de_horas_del_fichero_es_mayor_de_5

El fichero al que me refiero que tiene que ser de hace más de 5 horas es al
fichero.0 (al que acaba con un CERO).

> ObeliX:~# syslogd-listfiles --all 
> /var/log/mail.warn
> /var/log/uucp.log
> /var/log/user.log
> /var/log/daemon.log
> /var/log/messages
> /var/log/debug
> /var/log/auth.log
> /var/log/mail.err
> /var/log/syslog
> /var/log/mail.log
> /var/log/mail.info
> /var/log/kern.log
> /var/log/lpr.log
> <<<

Repito lo de antes: Si $opt_news vale 0 (cuando no se
pasa "--news") y si la facility es news.(asterisco o el resto de opciones
que pone entre'pipes'), pasa de esa línea, y se pone a parsear la
siguiente (en definitiva, lo que tú decías: que "--all" es *todo* menos
*news*, que lo gestiona otro paquete, dicho sea de paso, que se llama inn).


> > TRATAMIENTO POR DEFECTO (el else final xD)

> >  3. Si le pasas el parámetro "--weekly" (o "-w"), y no tiene la
> > facility.priority de tipo *.*, y el último cambio en el fichero es de
> > hace como mínimo 5 horas (por defecto es 5 sí :O) --> SE MUESTRA
> 
> En función de esto todos o casi todos mis logs deberían rotarse de la
> misma manera, ya que como el script se ejecuta una vez a la semana,
> todos tienen un cambio en el fichero mínimo de 5 horas (la gran mayoria
> de ellos si).
> 
> -rw-r-----  1 root     adm       61K 2005-03-11 11:56 syslog
> -rw-r-----  1 root     adm      1,8K 2005-03-11 10:00 user.log
> -rw-r-----  1 root     adm       461 2005-03-11 09:56 mail.log
> -rw-r-----  1 root     adm       461 2005-03-11 09:56 mail.info
> -rw-r-----  1 root     adm         0 2005-03-11 01:44 lpr.log
> [..]
> 
> todos fecha de hoy.


> Pero si lo rotas y lo gzipeas... en principio ya no se vuelve a
> modificar, excepto para eliminarlo al haber alcanzado el número máximo
> de históricos, ¿no? (y de eso se encarga el comando 'savelog')

Eso es.

> De todas maneras, sigo sin entender las fechas de modificación distintas
> en unos y otros archivos.

¿Porque no loguearon continuamente hasta el momento de la rotación?

> Tampoco entiendo por qué unos guardan 4
> históticos, otros solo 2 y otros 7, cuando la rotación se hace mediante
> el comando *para todos igual*:
> 
> >>>
> savelog -g adm -m 640 -u root -c 4 $LOG 
> <<<

Si te fijas, en /etc/cron.weekly/sysklogd tienes un "-c 4" en el savelog,
pero en /etc/cron.daily/sysklogd tienes un "-c 7" en el savelog.

Por otro lado, no estoy seguro ahora mismo, pero creo recordar que existía
una forma de rotar logs cuando superan un determinado tamaño (a partir de
un demonio). A ver si lo miro esta tarde esto último, porque no me acuerdo
donde estaba, si es que existía O:)


> Si, la misma que al principio :-)

:-S

No sé porque me temo que va a ser igual ahora, pero por si acaso ;)


Saludos,
  Alvaro Uría
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 189 bytes
Descripción: no disponible
Url        : https://listas.deusto.es/mailman/private/eside-ghost/attachments/20050311/dd8d6314/attachment.bin


Más información sobre la lista de distribución eside-ghost