CRON ejecutable TODOS los Viernes FINAL de MES
Publicado por barnarasta (42 intervenciones) el 27/04/2013 12:11:00
Buenos dias compañeros,
nuevamente me pidieron un encargo especial, se trata de realizar una ejecucion ( para un backup especial podria ser el caso ), todos los ULTIMOS VIERNES de mes a las 23:55.
Inicialmente mire de realizarlo desde un "crontab" al igual que realizo desde Unix/SCO con Quartz que admite caracteres especiales, quedando definido de la siguiente forma:
45 minutos , 23 horas , todos los dias del mes, todos los meses , LAST/ULTIMO dia 5 se la semana.
Pero nada es facil :) y Debian Squeeze no admite la formacion del caracter especial " 5L "
asi pues, despues de googlear y experimentar antes de meterlo en produccion, llegue a la siguiente instruccion, algo compleja pero de facil comprension si se entiende paso a paso.
La instruccion completa a poner en el /var/spool/cron/crontab o con crontab -e -u[ usuario ] es la siguiente:
45 23 * * 5 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && [ ejecutable ]
Selecciona SOLO si es quinto dia de la semana (viernes) a las 23:45
------------------------
45 23 * * 5 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && [ ejecutable ]
Extrae el numero de mes del dia actual
--------------------------
45 23 * * 5 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && [ ejecutable ]
Extrae el numero de mes despues de sumarle 7 dias a la fecha actual
-------------------------------
45 23 * * 5 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && [ ejecutable ]
compara ambos datos y si son diferentes realiza el ejecutable.
1salu2
nuevamente me pidieron un encargo especial, se trata de realizar una ejecucion ( para un backup especial podria ser el caso ), todos los ULTIMOS VIERNES de mes a las 23:55.
Inicialmente mire de realizarlo desde un "crontab" al igual que realizo desde Unix/SCO con Quartz que admite caracteres especiales, quedando definido de la siguiente forma:
1
45 23 * * 5L [ ejecutable ]
45 minutos , 23 horas , todos los dias del mes, todos los meses , LAST/ULTIMO dia 5 se la semana.
Pero nada es facil :) y Debian Squeeze no admite la formacion del caracter especial " 5L "
asi pues, despues de googlear y experimentar antes de meterlo en produccion, llegue a la siguiente instruccion, algo compleja pero de facil comprension si se entiende paso a paso.
La instruccion completa a poner en el /var/spool/cron/crontab o con crontab -e -u[ usuario ] es la siguiente:
1
45 23 * * 5 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && [ ejecutable ]
45 23 * * 5 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && [ ejecutable ]
Selecciona SOLO si es quinto dia de la semana (viernes) a las 23:45
------------------------
45 23 * * 5 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && [ ejecutable ]
Extrae el numero de mes del dia actual
--------------------------
45 23 * * 5 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && [ ejecutable ]
Extrae el numero de mes despues de sumarle 7 dias a la fecha actual
-------------------------------
45 23 * * 5 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && [ ejecutable ]
compara ambos datos y si son diferentes realiza el ejecutable.
1salu2
Valora esta pregunta


1