Duda sobre el comportamiento de "cat"

2015-07-12 Thread Camaleón
Hola,

Estoy afinando un script para ejecutar a través de cron para que lleve a 
cabo dos acciones muy sencillas:

1/ Que busque un determinado archivo de texto (archivo de registro diario 
de apache) y vuelque su contenido en un nuevo archivo que contenga el 
acumulado mensual.

2/ Que mueva el archivo de registro diario a un directorio.

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 
\;
***

La instrucción se ejecuta sin problemas salvo por el "cat", que me genera 
un archivo de registro con los días "alterados", es decir, en lugar de ir 
añadiendo el contenido del archivo al final del mensual:

/logs/example.com_201507_access_log.txt

[2015-07-01] ...
[2015-07-01] ...
[2015-07-02] ...
[2015-07-02] ...
[2015-07-03] ...
[2015-07-03] ...

Lo hace "a lo loco":

[2015-07-02] ...
[2015-07-02] ...
[2015-07-01] ...
[2015-07-01] ...
[2015-07-03] ...
[2015-07-03] ...

¿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 :-?

Saludos,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/pan.2015.07.12.16.48...@gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-12 Thread Javier Barroso
Hola,

2015-07-12 18:48 GMT+02:00 Camaleón :
> Hola,
>
> Estoy afinando un script para ejecutar a través de cron para que lleve a
> cabo dos acciones muy sencillas:
>
> 1/ Que busque un determinado archivo de texto (archivo de registro diario
> de apache) y vuelque su contenido en un nuevo archivo que contenga el
> acumulado mensual.
>
> 2/ Que mueva el archivo de registro diario a un directorio.
>
> 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 \;
> ***

Seguramente el >> no te lo esté aplicando como tú quieres al cat. Yo
iría directamente a lo más seguro:

Crea un fichero de script que reciba el nombre del fichero como
parámetro y haga con el fichero lo que quieras, y ejecuta el script
con -exec script {} \;

De todas formas no entiendo muy bien que quieres conseguir y que no se
pueda hacer con el logrotate o las directivas de apache de logs.

Saludos


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CAL5yMZRgu87ZJH6F491ejUV+G5WuoDyOM7NmyWc=-arjqjk...@mail.gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-12 Thread Javier Barroso
2015-07-12 18:48 GMT+02:00 Camaleón :
> Hola,
>
> Estoy afinando un script para ejecutar a través de cron para que lleve a
> cabo dos acciones muy sencillas:
>
> 1/ Que busque un determinado archivo de texto (archivo de registro diario
> de apache) y vuelque su contenido en un nuevo archivo que contenga el
> acumulado mensual.
>
> 2/ Que mueva el archivo de registro diario a un directorio.
>
> 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 \;
> ***
>
> La instrucción se ejecuta sin problemas salvo por el "cat", que me genera
> un archivo de registro con los días "alterados", es decir, en lugar de ir
> añadiendo el contenido del archivo al final del mensual:
>
> /logs/example.com_201507_access_log.txt
>
> [2015-07-01] ...
> [2015-07-01] ...
> [2015-07-02] ...
> [2015-07-02] ...
> [2015-07-03] ...
> [2015-07-03] ...
>
> Lo hace "a lo loco":
>
> [2015-07-02] ...
> [2015-07-02] ...
> [2015-07-01] ...
> [2015-07-01] ...
> [2015-07-03] ...
> [2015-07-03] ...

Como nota, el sort puede ordenar los logs de apache (los de por defecto):
http://stackoverflow.com/questions/5672733/how-can-i-sort-an-apache-log-file-by-date

Para ver lo que te pasa, podrías pasarnos un par de ficheros de
ejemplo en los que te pase , cambiando las urls y demás si son
sensibles ...

Saludos


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/cal5ymzr5ogoegzhbsd1_g44r7r3kobrvjj-ra2uwcgzxsho...@mail.gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-12 Thread Manolo Díaz
El domingo, 12 jul 2015, a las 18:48 UTC+2 horas,
Camaleón escribió:

>Hola,
>
>Estoy afinando un script para ejecutar a través de cron para que lleve a 
>cabo dos acciones muy sencillas:
>
>1/ Que busque un determinado archivo de texto (archivo de registro diario 
>de apache) y vuelque su contenido en un nuevo archivo que contenga el 
>acumulado mensual.
>
>2/ Que mueva el archivo de registro diario a un directorio.
>
>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 \;
>***
>
>La instrucción se ejecuta sin problemas salvo por el "cat", que me genera 
>un archivo de registro con los días "alterados", es decir, en lugar de ir 
>añadiendo el contenido del archivo al final del mensual:
>
>/logs/example.com_201507_access_log.txt
>
>[2015-07-01] ...
>[2015-07-01] ...
>[2015-07-02] ...
>[2015-07-02] ...
>[2015-07-03] ...
>[2015-07-03] ...
>
>Lo hace "a lo loco":
>
>[2015-07-02] ...
>[2015-07-02] ...
>[2015-07-01] ...
>[2015-07-01] ...
>[2015-07-03] ...
>[2015-07-03] ...
>
>¿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 :-?
>
>Saludos,
>

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.

Saludos.
-- 
Manolo Díaz


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20150712202607.4db6b...@gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-12 Thread Javier Barroso
2015-07-12 18:56 GMT+02:00 Javier Barroso :
> Hola,
>
> 2015-07-12 18:48 GMT+02:00 Camaleón :
>> Hola,
>>
>> Estoy afinando un script para ejecutar a través de cron para que lleve a
>> cabo dos acciones muy sencillas:
>>
>> 1/ Que busque un determinado archivo de texto (archivo de registro diario
>> de apache) y vuelque su contenido en un nuevo archivo que contenga el
>> acumulado mensual.
>>
>> 2/ Que mueva el archivo de registro diario a un directorio.
>>
>> 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 \;
>> ***
>
> Seguramente el >> no te lo esté aplicando como tú quieres al cat.
La única forma que conozco de usar la redirección dentro del -exec del
find es -exec sh -c "xxx >> yyy" \;.  ¿Conocéis otra? El >> de tu
ejemplo se está aplicando al find (que en este caso coincide con la
salida estándard del cat), que como dice Manolo no busca en orden
alfabético

Saludos


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/cal5ymzsnqupdqnfmxzx63fzee6vnsgeqhogmoppsw6gdmqk...@mail.gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-12 Thread Camaleón
El Sun, 12 Jul 2015 18:56:39 +0200, Javier Barroso escribió:

Hola Javier, gracias por contestar.

> 2015-07-12 18:48 GMT+02:00 Camaleón :

(...)

>> 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 \;
>> ***
> 
> Seguramente el >> no te lo esté aplicando como tú quieres al cat. Yo
> iría directamente a lo más seguro:
> 
> Crea un fichero de script que reciba el nombre del fichero como
> parámetro y haga con el fichero lo que quieras, y ejecuta el script
> con -exec script {} \;

Bien, lo voy a probar con los archivos que están ya acumulados dentro
del directorio "/logs/archive" a ver si saco algo en claro y mientras
monitorizo la tarea de "cron" a ver qué hace mañana. 

> De todas formas no entiendo muy bien que quieres conseguir y que no se
> pueda hacer con el logrotate o las directivas de apache de logs.

En este caso se trata de un servidor que no gestiono yo por lo que tengo 
poco margen de movimiento. Apache genera un archivo de registro diario 
(esto no lo puedo cambiar) que se crea a las 00:00 horas con el formato
"example.com.mmdd". El script que he creado se ejecuta a las 08:00
horas por lo que realmente sólo hay un archivo con el que trabajar que es
el que quiero que vaya generando el "example.com_mm_access_log.txt" 
mensual volcando el contenido del archivo diario y moviendo éste (el 
archivo diario) al directorio "/logs/archive", más que nada para que no 
se vaya llenando el directorio "/logs" de archivos pequeñitos (vamos, 
se trata de un script de "limpieza").

Lo raro es eso, que lo hace todo bien menos el "cat >> ", no sé cómo ha 
podido añadir los datos del día 3 antes de los día 2.

Saludos,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/pan.2015.07.12.20.13...@gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-12 Thread Camaleón
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.

Saludos,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/pan.2015.07.12.20.27...@gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-12 Thread Javier Barroso
2015-07-12 22:27 GMT+02:00 Camaleón :
> 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


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/cal5ymzrtd_3-h25+svvlpmj-fskm5kopr+uu0usbr2k1cd7...@mail.gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-12 Thread Manolo Díaz
El domingo, 12 jul 2015, a las 22:27 UTC+2 horas,
Camaleón escribió:

>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.

Damos por hecho que las entradas de los ficheros diarios
(example.com.20150712, etc) están ordenadas en tiempo ascendente. Si es
así, no logro ver qué ocurre.

Saludos.
-- 
Manolo Díaz


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20150712235724.64566...@gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-12 Thread Manolo Díaz
El domingo, 12 jul 2015, a las 21:22 UTC+2 horas,
Javier Barroso escribió:

>2015-07-12 18:56 GMT+02:00 Javier Barroso :
>> Hola,
>>
>> 2015-07-12 18:48 GMT+02:00 Camaleón :
>>> Hola,
>>>
>>> Estoy afinando un script para ejecutar a través de cron para que lleve a
>>> cabo dos acciones muy sencillas:
>>>
>>> 1/ Que busque un determinado archivo de texto (archivo de registro diario
>>> de apache) y vuelque su contenido en un nuevo archivo que contenga el
>>> acumulado mensual.
>>>
>>> 2/ Que mueva el archivo de registro diario a un directorio.
>>>
>>> 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 \;
>>> ***
>>
>> Seguramente el >> no te lo esté aplicando como tú quieres al cat.
>La única forma que conozco de usar la redirección dentro del -exec del
>find es -exec sh -c "xxx >> yyy" \;.  ¿Conocéis otra? El >> de tu
>ejemplo se está aplicando al find (que en este caso coincide con la
>salida estándard del cat), que como dice Manolo no busca en orden
>alfabético
>
>Saludos

Pues lo había pasado por alto. Lo primero que se establece es la
redirección. No, no conozco otra forma que establecerla en una subshell.

Saludos.
-- 
Manolo Díaz


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20150713001930.3068e...@gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-13 Thread Carlos Zuniga
2015-07-12 11:48 GMT-05:00 Camaleón :
> Hola,
>
> Estoy afinando un script para ejecutar a través de cron para que lleve a
> cabo dos acciones muy sencillas:
>
> 1/ Que busque un determinado archivo de texto (archivo de registro diario
> de apache) y vuelque su contenido en un nuevo archivo que contenga el
> acumulado mensual.
>
> 2/ Que mueva el archivo de registro diario a un directorio.
>
> 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 \;
> ***
>
> La instrucción se ejecuta sin problemas salvo por el "cat", que me genera
> un archivo de registro con los días "alterados", es decir, en lugar de ir
> añadiendo el contenido del archivo al final del mensual:
>
> /logs/example.com_201507_access_log.txt
>
> [2015-07-01] ...
> [2015-07-01] ...
> [2015-07-02] ...
> [2015-07-02] ...
> [2015-07-03] ...
> [2015-07-03] ...
>
> Lo hace "a lo loco":
>
> [2015-07-02] ...
> [2015-07-02] ...
> [2015-07-01] ...
> [2015-07-01] ...
> [2015-07-03] ...
> [2015-07-03] ...
>
> ¿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 :-?
>

Acabo de probar y me funciona como se espera, ojo que cambié la línea por esto:

find . -maxdepth 1 -type f -name 'example.com.*' -ctime -1 -exec
cat {} >> "logs/log_$(date '+%Y%m').txt" \; -exec mv {} arch/ \;

Notesé que añadí {} antes de la redirección y lo eliminé del final.
Inicialmente no me dí cuenta de este {} extra y se repitieron las
entradas en el log mensual (parece que `cat foo >> bar foo` añade el
contenido de foo en bar 2 veces). Tal ves es ese el problema? Puedes
pegar el comando exacto que utilizas?


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/caabycjmvqupfzoch2p6v1no4txie6ompb6g-muvwdg+l_hf...@mail.gmail.com



Re: Duda sobre el comportamiento de "cat"

2015-07-14 Thread Camaleón
El Mon, 13 Jul 2015 14:36:05 -0500, Carlos Zuniga escribió:

> 2015-07-12 11:48 GMT-05:00 Camaleó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 \;

(...)

> Acabo de probar y me funciona como se espera, ojo que cambié la línea
> por esto:
> 
> find . -maxdepth 1 -type f -name 'example.com.*' -ctime -1 -exec
> cat {} >> "logs/log_$(date '+%Y%m').txt" \; -exec mv {} arch/ \;
> 
> Notesé que añadí {} antes de la redirección y lo eliminé del final.
> Inicialmente no me dí cuenta de este {} extra y se repitieron las
> entradas en el log mensual (parece que `cat foo >> bar foo` añade el
> contenido de foo en bar 2 veces). Tal ves es ese el problema? Puedes
> pegar el comando exacto que utilizas?

El comando exacto lo puse en el primer mensaje, lo he dejado transcrito 
más arriba. 

El problema no es la posición del cierre de la instrucción "-exec {}" 
sino el orden que devuelve el comando find con el resultado de los 
archivos que es indeterminado (vamos, que no sé qué lógica sigue) y yo 
necesitaba que fuera alfabético. Con un "sort" se soluciona, pero se 
pierde la gracia del "-exec" (hay que usar alguna estructura de bucle 
como decía Manolo) y con un simple "cat" se obtienen los archivos en el 
orden correcto.

Saludos,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/pan.2015.07.14.13.18...@gmail.com



(duda resuelta) Re: Duda sobre el comportamiento de "cat"

2015-07-13 Thread Camaleón
El Sun, 12 Jul 2015 23:10:23 +0200, Javier Barroso escribió:

> 2015-07-12 22:27 GMT+02:00 Camaleón :
>> El Sun, 12 Jul 2015 20:26:07 +0200, Manolo Díaz escribió:

(...)

>>> 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

(...)

> 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

Aunque hoy el script se ha ejecutado correctamente y no ha alterado el 
orden del contenido del archivo mensual (los datos del registro del día 
12/07/2015 los ha añadido al final) he decidido dejarlo como dices, es 
decir, he prescindido del "find" y he optado por "cat" porque me parece 
que al querer afinar la selección del archivo (cuando realmente el 
script sólo va a trabajar con uno y resulta sencillo seleccionarlo por 
su nombre) me complica la vida más que me la soluciona.

Al hacer las pruebas directamente desde una sesión ssh en el servidor, 
me he dado cuenta de que el comando "find" devuelve los resultados como 
le da la real gana (como decía Manolo), es decir:

find logs/archive -maxdepth 1 -type f -name "example.com.*"

logs/archive/example.com.20150711
logs/archive/example.com.20150708
logs/archive/example.com.20150707
logs/archive/example.com.20150710
logs/archive/example.com.20150709

La única explicación lógica que le veo al hecho de que el "cat >>" haya 
agregado el contenido del archivo 20150710 antes del 20150709 es que al 
estar haciendo pruebas se haya podido ejecutar la tarea del cron (bien 
automáticamente o bien haciéndolo yo manualmente al estar probando los 
scripts) estando esos dos archivos en el mismo directorio, es decir:

logs/example.com.20150710
logs/example.com.20150709

Y al usar el modificador "-ctime -1" en "find" se hayan seleccionado esos 
dos archivos (en este caso "-mtime -1" hubiera sido lo correcto).

Hoy, como sólo había un único archivo en el directorio de "logs" no ha 
habido problemas pero si quiero usar "find" con ciertas garantías tendría 
que asegurarme de dos cosas:

1/ Que devuelva los archivos ordenados por nombre (?)
2/ Que use la opción "-mtime"

He estado haciendo pruebas para dar con una instrucción que me permita usar 
el combinado find + sort + cat + mv pero no he dado con la tecla (se admiten 
sugerencias ;-)) así que me quedo con el simple cat + mv y a correr.

Saludos y gracias a los dos por las ideas,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/pan.2015.07.13.14.09...@gmail.com



Re: (duda resuelta) Re: Duda sobre el comportamiento de "cat"

2015-07-13 Thread Manolo Díaz
El lunes, 13 jul 2015, a las 16:09 UTC+2 horas,
Camaleón escribió:

>He estado haciendo pruebas para dar con una instrucción que me permita usar 
>el combinado find + sort + cat + mv pero no he dado con la tecla (se admiten 
>sugerencias ;-)) así que me quedo con el simple cat + mv y a correr.

Lo primero que se me viene a la cabeza es un bucle

for fichero in $(find [argumentos] | sort)
do
cat $fichero >> fichero_log_mesual
mv $fichero [destino]
done

Saludos.
-- 
Manolo Díaz


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20150713165216.470e5...@gmail.com



Re: (duda resuelta) Re: Duda sobre el comportamiento de "cat"

2015-07-13 Thread Javier Barroso
2015-07-13 16:09 GMT+02:00 Camaleón :
> El Sun, 12 Jul 2015 23:10:23 +0200, Javier Barroso escribió:
>
>> 2015-07-12 22:27 GMT+02:00 Camaleón :
>>> El Sun, 12 Jul 2015 20:26:07 +0200, Manolo Díaz escribió:
>
> (...)
>
 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
>
> (...)
>
>> 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
>
> Aunque hoy el script se ha ejecutado correctamente y no ha alterado el
> orden del contenido del archivo mensual (los datos del registro del día
> 12/07/2015 los ha añadido al final) he decidido dejarlo como dices, es
> decir, he prescindido del "find" y he optado por "cat" porque me parece
> que al querer afinar la selección del archivo (cuando realmente el
> script sólo va a trabajar con uno y resulta sencillo seleccionarlo por
> su nombre) me complica la vida más que me la soluciona.
>
> Al hacer las pruebas directamente desde una sesión ssh en el servidor,
> me he dado cuenta de que el comando "find" devuelve los resultados como
> le da la real gana (como decía Manolo), es decir:
>
> find logs/archive -maxdepth 1 -type f -name "example.com.*"
>
> logs/archive/example.com.20150711
> logs/archive/example.com.20150708
> logs/archive/example.com.20150707
> logs/archive/example.com.20150710
> logs/archive/example.com.20150709
>
> La única explicación lógica que le veo al hecho de que el "cat >>" haya
> agregado el contenido del archivo 20150710 antes del 20150709 es que al
> estar haciendo pruebas se haya podido ejecutar la tarea del cron (bien
> automáticamente o bien haciéndolo yo manualmente al estar probando los
> scripts) estando esos dos archivos en el mismo directorio, es decir:
>
> logs/example.com.20150710
> logs/example.com.20150709
>
> Y al usar el modificador "-ctime -1" en "find" se hayan seleccionado esos
> dos archivos (en este caso "-mtime -1" hubiera sido lo correcto).
>
> Hoy, como sólo había un único archivo en el directorio de "logs" no ha
> habido problemas pero si quiero usar "find" con ciertas garantías tendría
> que asegurarme de dos cosas:
>
> 1/ Que devuelva los archivos ordenados por nombre (?)
> 2/ Que use la opción "-mtime"
>
> He estado haciendo pruebas para dar con una instrucción que me permita usar
> el combinado find + sort + cat + mv pero no he dado con la tecla (se admiten
> sugerencias ;-)) así que me quedo con el simple cat + mv y a correr.
>
> Saludos y gracias a los dos por las ideas,

Si quieres ahorrar espacio en disco, el cat también va con los ficheros .gz:

Una vez que tengas el fichero del mes comprimido con gzip
example.com_${mes}_access_log, y suponiendo que no te interesa
comprimir el fichero diario:

cat example.com_${dia} | gzip >> example.com_${mes}_access_log.gz

O si es un linux moderno, en vez gzip con xz que comprime más los
ficheros de texto, creo ...

Saludos


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CAL5yMZTtRLiRyA7iX3zenELDG4=NE_LGDEv_Yx0ig=ct2lx...@mail.gmail.com