Tarea Cron para el ultimo día de cada mes

Bueno hoy tuve q encontrarme con esto… un cron q corra el ultimo dia de cada mes, no importa si es 28, 29, 30, 31 si el año es bisiesto, etc.

Aqui os dejo el script:

Creamos un script q le ponemos fin_de_mes.sh

#!/bin/bash

HOY=`/bin/date +%d`
MANANA=`/bin/date +%d -d “1 day”`

if [ $MANANA -lt $HOY ]; then
exit 0
fi

exit 1

Despues en el cron se le pone:

55 23 28-31 * * /path/to/fin_de_mes.sh %% /path/to/job.sh

Entonces los dias del 28 al 31, corre eso a las 23:55 que ejecuta el primer script, que chequea cual es el numero de dia de mañana, y si mañana tiene un nro de dia inferior a hoy (o sea en cambio de mes), si es asi entonces ejecuta el job.sh q es lo que quiera correr scheduleado.

Be Sociable, Share!

4 Comments

  1. Es bueno, pero más sencillo asi:

    0 23 * * * [ $(date +%d) -eq $(echo $(cal) | awk '{print $NF}') ] && script.sh

    Ref: http://techironic.com/index.php/2009/04/08/usando-cal-en-crontab/

  2. Buenisimo, Muchas gracias por compartir y por tu tiempo. Me viene justo este script.
    Gracias!!!!

  3. jejeje acabo de encontrar esto:

    0 15 15 L * ? script_respaldo.sh
    #Se ejecuta a las 15:15:00 del último día de cada mes

Deja un comentario

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>