Ya sé cómo se puede hacer!!
Con la salida de 'cal', se puede parsear de la siguiente forma:
#!/bin/bash cal > temporal.txt filaDomingo= $(wc -l temporal.txt | awk {'print $1'}) numero=$(sed -n ${filaDomingo}p temporal.txt | awk {'print $1'}
Aquí tienes el último día. Tendrías que cambiar la variable que mire el comando awk por el que corresponda al día Domingo. Para que sea más fácil de entender, el último Domingo, si está ordenado el calendario de Domingo a Sábado, *es siempre el primer número que aparece en la última fila de la salida de 'cal'*. Y listo, con eso lo tienes. Ahora, te correspondería ver cómo entregarle ese valor a un script, para que escriba en el archivo de configuración de cron, o derechamente que lo mueva según las directrices que corresponden a cron.monthly
Ahora sí que creo que te ayudé :D!
El 30 de noviembre de 2012 14:25, René Lara Alvarado admin@probajio.com.mxescribió:
Creo que programar un scripth en bash para saber si un una fecha dada es domingo último del mes y respaldadando en caso de que lo sea, es algo solventable
Esta idea de cal me parece buena para ello o bien con alguna de las ideas ya expuestas que son mas o menos
Evaluar la fecha de hoy Si DiaSem=7 y Mes=2 y DiaDelMes>=23 Es domingo ultimo de un febrero. respaldar FinSi
Si DiaSem=7 y Mes<>2 y DiaDelMes>24 Es domingo ultimo de un mes distinto a febrero respaldar FinSi
(solo resolver los casos especiales que ya mencionaron con el 24)
Luego poner un cron que se ejecute diario ese scritpt Si, ya se que no se desea que se ejecute diario pero bueno, el cron al final de cuentas debe evaluar diariamente, de manera interna pero lo hace, ademas que no es pesado
Ahora, ¿será realmente importante el respaldar en ese domingo? ¿no puede ser cualquier domingo con tal de que se haga cada mes? Muchas veces los sistemas no los llevan tan al día como para pensar que el dia 1 ya tengo todo lo del mes anterior. En las contabilidades aspectos como el tipo de cambio, hacen que esté completo todo un poco despues.
r.lara
-----Mensaje original----- De: centos-es-bounces@centos.org [mailto:centos-es-bounces@centos.org] En nombre de Héctor Herrera Enviado el: Viernes, 30 de Noviembre de 2012 11:06 a.m. Para: centos-es@centos.org Asunto: Re: [CentOS-es] Cron - programar ultimo domingo de cada mes -
Y calcular en base a la salida del comando 'cal' el último domingo del mes? Yo creoque también podría ser una alternativa...
Si tenemos la salida de cal como sigue:
November 2012 S M Tu W Th F S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Podemos contar cuántas filas tiene. Si tiene 6 filas, miramos el primer número de la fila 6. Si tiene 7 filas, miramos el primer número de la fila 7. Y eso lo asignamos en un cron.monthly. Insisto, que dicho script se ejecute el primer día del mes.
Entonces, tu formato de cron vendría a ser algo como: #[min] [hour] [day of month] [month] [day of week] [program to be run]
* dia.sh * Sun
lo-que-quieras-ejecutar
Espero se entienda.
El 30 de noviembre de 2012 13:42, Eddy Olivo eddyolivo@gmail.com escribió:
Leonardo tendrías que ver la sugerencia de Carlos para la programación de ese CRON puntual, ya que es inusual....y no es por la vía convencional.
saludos
El 30 de noviembre de 2012 12:34, Leonardo Serrano < leo@audiovisuales.icaic.cu> escribió:
#[min]*[hour]* [day of month] [month] [day of week] [program to be
run]
debajo de donde dice hour (hora militar si mal no recuerdo)
El 30/11/2012 11:27 a.m., Eddy Olivo escribió:
gracias a todos nuevamente... Carlos en lo que sugieres donde
especifico
la
hora en que se ejecutara?
saludos
El 30 de noviembre de 2012 11:57, Carlos Martinez <camarti@gmail.com escribió:
Saludos.
Esto no se puede hacer en cron puro habría que hacer algo como
esto:
#[min] [hour] [day of month] [month] [day of week] [program to be
run]
18 0 * * 0 [ `date "+%d"` -gt 24 ] && /path/to/script
Lo que se hace en la parte de cron es ejecutar la tarea cada
domingo.
Lo que hace [ `date "+%d"` -gt 24 ] && /path/to/script es
asegurarse
parcialmente, que el domingo sea el último de cada mes.
En otras palabras, hay que crear código (bash, tcsh, perl), que se asegure que el domingo es efectivamente el último de cada mes. En el caso de [ `date "+%d"` -gt 24 ] este falla para los siguientes meses de aquí al 2020: Feb-2013, Nov-2013, Feb-2014, Feb-2015, Abr-2016, Sep-2017, Feb-2019 y Nov-29. En ese caso, o se agregan tareas específicas para esos meses en particular o se hacen mayores comprobaciones en el script sobre la fecha. 8 tareas en cron adicionales de aquí al 2020 frente un script mas complicado ... me quedo con las 8 tareas.
2012/11/30 Eddy Olivo eddyolivo@gmail.com:
Estimados
Luego de mucho buscar en google, no encuentro como resolver mi
necesidad
y
le escribo para solicitarles el favor de echarme una mano.
Lo que deseo hacer es ejecutar una tarea (CRON) el ultimo domingo
de
cada
mes.
-- Saludos,
Eddy Olivo _______________________________________________ CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
-- Atte., Carlos Andrés Martínez _______________________________________________ CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
--
Tec.Leonardo Serrano Berdeal Administrador de la Red Audiovisuales ICAIC
Instituto Cubano del Arte e Industria Cinematográficos - ICAIC **Visite, Visit** http://www.cubacine.cu _______________________________________________ CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
-- Saludos,
Eddy Olivo
Skype: eddyolivo FB: http://www.facebook.com/eddyolivo twitrer: @eddyolivo https://twitter.com/#!/eddyolivo _______________________________________________ CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
-- Saludos
*Héctor Herrera Anabalón* Egresado ICCI UNAP Servicio Arquitectura Galatea - Oficina Técnica http://www.galatea.cl Miembro USoLIX Victoria Registered User #548600 (LinuxCounter.net) +56983118902 _______________________________________________ CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es
CentOS-es mailing list CentOS-es@centos.org http://lists.centos.org/mailman/listinfo/centos-es