crontab para dias impares y pares
Aldrin Martoq
amartoq en dcc.uchile.cl
Mar Dic 9 16:18:33 CLST 2008
On Tue, 2008-12-09 at 14:40 -0300, Victor Hugo dos Santos wrote:
> estoy configurando un par de servidores (aca pink y blue) que quiero
> que intercambie papeles diariamente, o sea..
> - los dias pares se detengan todos los servicios en blue y que se
> activen todos los servicios en pink
> - los dias impares se activen todos los servicios en blue y que se
> detengan todos los servicios en pink
Hmm y si se cae el servicio, cual máquina levantas? Se puede saber cual
es el objeto de esto?
> bueno.. para esto, puse estas lineas en los archivos /etc/crontab de
> cada servidor
> crontab servidor BLUE
> 01 0 2-32/2 * * root /home/victor/scripts/finales/todas_tareas.sh bajar
> 10 0 1-32/2 * * root /home/victor/scripts/finales/todas_tareas.sh subir
> crontab servidor PINK
> 01 0 1-32/2 * * root /home/victor/scripts/finales/todas_tareas.sh bajar
> 10 0 2-32/2 * * root /home/victor/scripts/finales/todas_tareas.sh subir
Es extraño, porque esto funciona perfectamente aca:
amartoq en videopodcast:~$ crontab -l
# m h dom mon dow command
0-59/2 * * * * echo par $(date) >> /tmp/test
1-59/2 * * * * echo impar $(date) >> /tmp/test
amartoq en videopodcast:~$ tail -f /tmp/test
par Tue Dec 9 15:54:02 CLST 2008
impar Tue Dec 9 15:55:01 CLST 2008
par Tue Dec 9 15:56:01 CLST 2008
Una opción es que dejes explÃcitamente los dÃas en que correrá, algo
como esto:
BLUE
01 0 2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 * * root bajar.sh
10 0 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31 * * root subir.sh
PINK
01 0 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31 * * root bajar.sh
10 0 2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 * * root subir.sh
Ojo que en los meses con # dÃas impares, BLUE hará la pega 2 dÃas
seguidos: el 31 y el 1 del mes siguiente por ejemplo. Si esto es un
problema, puedes utilizar este script para saber si un dÃa es par o no,
desde una fecha fija (el epoch):
---------------------------------
#!/bin/bash
python <<EOF
import datetime
epoch = datetime.datetime.utcfromtimestamp(0)
today = datetime.datetime.utcnow()
d = today - epoch
exit((d.days % 2) == 0)
EOF
if [ $? == 0 ]; then
echo "$? PINK"
exit 0
else
echo "$? BLUE"
exit 0
fi
----------------------------------
Ojo: usar "date +%s" y dividirlo por 86400 _no es lo mismo_!
--
Aldrin Martoq <amartoq en dcc.uchile.cl>
http://aldrin.martoq.cl/videopodcast/
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : no disponible
Tipo : application/pgp-signature
Tamaño : 197 bytes
Descripción: This is a digitally signed message part
Url : http://listas.inf.utfsm.cl/pipermail/linux/attachments/20081209/e04c4654/attachment.bin
Más información sobre la lista de distribución Linux