[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Duda sobre el comportamiento de "cat"



2015-07-12 22:27 GMT+02:00 Camaleón <noelamac@gmail.com>:
> El Sun, 12 Jul 2015 20:26:07 +0200, Manolo Díaz escribió:
>
>> El domingo, 12 jul 2015, a las 18:48 UTC+2 horas,
>> Camaleón escribió:
>
> (...)
>
>>>Se trata de esta línea (no es copia/pega, puede haber algún gazapín):
>>>
>>>***
>>>find logs -maxdepth 1 -type f -name "example.com.*" -ctime -1 exec cat >> "logs/example.com_$(date '+%Y%m')_access_log.txt" {} \; exec mv {} logs/archive \;
>>>***
>
> (...)
>
>>>¿Qué puede provocar este comportamiento anómalo del redirector ">>"? Se
>>>supone que el contenido del archivo se debe añadir al final del actual
>>>pero no parece que lo haga :-?
>>>
>>
>> Yo no culparía a cat. find no devuelve los ficheros en orden
>> alfabético, si hay varios ficheros creados hace menos de un día puede
>> ocurrir que termine volcando uno más reciente antes que otro más
>> antiguo.
>
> Sí, eso había pensado también pero en el directorio "/logs" no hay ningún
> archivo que pueda encontrar el find, es decir, ahora, a las 22:26 (y
> todos los días cuando se ejecuta la tarea) sólo está:
>
> /logs/example.com_201507_access_log.txt
>
> Bien, a las 00:00 se genera el archivo de registro diario y tenemos:
>
> /logs/example.com.20150712
> /logs/example.com_201507_access_log.txt
>
> Y a las 08:00 se ejecuta la orden del "find" y de ahí mi extrañeza con el
> resultado del "cat" ya que sólo trabaja con el contenido de un único
> archivo que tiene que añadir al final del actual
> "example.com_201507_access_log.txt" y luego mover el archivo diario
> "example.com.20150712" al directorio "/logs/archive", lo cual hace sin
> problemas.
Si es sólo un día, podrías usar el siguiente snip de base:
mes=$(date +'%Y%m' -d '-1 day');
dia=$(date +'%Y%m%d' -d '-1 day') ;
cat example.com.${dia} >> example.com_${mes}_access_log.txt

Con un bucle ya tendrías para todos los dominios

Saludos


Reply to: