Duda sobre el comportamiento de "cat"
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"
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 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"
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 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"
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"
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 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"
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"
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-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"
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"
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"
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 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