[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Una de Cron [Solucionado]





El 01/07/2016 a las 5:11 PM, Paynalton escribió:

--
----
  ______________________________________
/ Hay errores que siempre pasan        \
| inadvertidos hasta que el libro esté |
| impreso.                             |
|                                      |
\ -- Ley de Jones.                     /
  --------------------------------------
         \   ^__^
          \  (oo)\_______
             (__)\       )\/\
                 ||----w |
                 ||     ||


El vie, 01-07-2016 a las 22:40 +0200, fernando sainz escribió:
El 1 de julio de 2016, 21:21, Paynalton <cxescalona@gmail.com <mailto:cxescalona@gmail.com>> escribió:
>
> Yo le pondría tres reglas:
> 0 0 1 * * script.sh
> 0 0 2 * * script.sh
> 0 0 3 * * script.sh
>
> y en tu script evalúas
>
> if($dayOfWeek=0||$dayOfWeek=6){
> die;
> }
>
> osea, evalúas si el día es laborable o no antes de ejecutar, ya que en estas ejecuciones al menos una será laborable. Además necesitarás poner un flag de ya ejecutado en caso de que dos o tres días sean laborables.
>
> if($yaEjecutadoEsteMes){
> die;
> }
>
>
> El vie, 01-07-2016 a las 12:41 -0300, JAP escribió:
>
> El 01/07/16 a las 12:24, Yoandy Madrazo Gómez escribió:
> > Hay alguna forma de ejecutar un script el primer día laborable de cada
> > mes?? Es para un sistema de salvas con backuppc.
> >
> >
> > Saludos, Yoandy
> >
> >
>
> STFW
> JAP
>

Hola.
Creo que se podría hacer un poco más elegante dejando solo una linea
en el crontab
0 0 1 * * script.sh

Y dentro del script comprobar en qué día de la semana estamos con
date +%u  en formato de 1 a 7 o date +%w  de 0 a 6

Si el día no es laborable invocar de nuevo el script.sh con "at", algo así:

  echo "/path/../script.sh" | at midnight + 1 minutes

De forma que queda programado el script para un minuto después de
medianoche y cuando se ejecute
se volverá a comprobar si es fiesta y si no, ejecutará los comandos que quieras.

S2.


Genial, No se me había ocurrido reprogramar ejecuciones así jjejej
Este script es obra de un miembro de la comunidad de usuarios de tecnologías libres de Cuba [Hugo Florentino <hugo [at] acdam [dot] cu>], a quien pueda interesar

#! /bin/sh

# Obtener el número del día en el mes
DIAMES=$(expr `date +%d` + 0)

# Obtener el número del día en la semana, del 1 al 7 (1 es lunes).
DIASEM=$(expr `date +%u` + 0)

# Variable para evaluación final
PRIMERDIALABORAL=0

# Evaluación para establecer el valor de la variable
if [ ${DIAMES} -eq 1 ]; then
  if [ 6 -gt ${DIASEM} ]; then
    PRIMERDIALABORAL=1
  fi
elif [ ${DIAMES} -le 3 ]; then
  if [ 2 -gt ${DIASEM} ]; then
    PRIMERDIALABORAL=1
  fi
fi

# Evaluar el valor de la variable
if [ ${PRIMERDIALABORAL} -eq 1 ]; then
  echo "Depuración: Este es el primer día laboral del mes."
  # Insertar aqui las acciones a tomar
else
  echo "Depuración: Este no es el primer día laboral del mes."
fi

exit 0


Saludos



Reply to: