Como sumar 4 minutos al sistema...
A veces es necesario inventarse soluciones que por mas que googleas no las hallas... resulta que tengo un proceso corriendo en mi servidor Linux para decir la hora a través de las estaciones de radio de que administro, pero cada vez que el sistema emitía la hora, siempre se quedaba 4 minutos atrasado, (Esto ya lo tengo detectado... tiene que ver con el retraso de la señal a procesar desde que se emite hasta que se recibe en el servidor y lo retransmite, el momento en que se ejecuta, el proceso para decir la hora, la creacion del archivo resultante etc etc, ) esto realmente no me representaba mucho problema porque al momento de escuchar la hora en la radio pocas veces volteas a ver el reloj para verificarla, pero... Porque dejar ese detalle sin resolver ? resulta que con detalles como este acabas aprendiendo mucho mas de lo que imaginabas. . . al final aunque es un detalle pequeño no deja de ser algo que se podía arreglar... así que me di a la tarea de ajustar el "tiempo del servidor" y me encontré con varias cosas a tomar en cuenta para que esto funcionara.
HIPOTESIS
Bastaría con solo adelantar el reloj del servidor 4 minutos y se resuelve correctamente este problema:
$date --set "00 : 04" (ejemplo)
Pero para tener la hora exacta el servidor hace uso de Network Time Protocol sincronizando el tiempo con el comando:
$ntpdate-debian
Así que el resultado al final es la sincronizacion de mi servidor sin la suma de 4 minutos
LA SOLUCION
Comence primero analizando como podria sumar esos 4 minutos al sistema y los simplifique en solo tres acciones
Las enumero a continuación...
- Tomar el tiempo correcto de algún servidor de tiempo
- Al alcanzar las 23 horas hay que pasar a la siguiente en tiempo, no en numero, que seria precisamente las 00:00 horas
- Al sumar los 4 minutos tomar en cuenta que si se llega al minuto 56 hay que pasar a la siguiente hora consecutiva (para los ansiosos: se resuelve con una variable y se suma una unidad)
OPERACIONES
Sumar una unidad a la hora
HORAMASUNO=`expr $HORA + 1`
Ajustar los minutos a partir del minuto 56 de cada hora ya que al sumar:
56 + 4 = 60
57 + 4 = 61
58 + 4 = 62
59 + 4 = 63
Otro problema a resolver . . .
Al ingresar estos datos al comando "date" no los acepta porque no tiene el formato correcto, (no entiende "60, 61, 62, 63" minutos asi que se debe hacer un ajuste para que el sistema tome el nuevo tiempo en el servidor, esto lo consegui precisamente realizando un script que me ajustara este tiempo
EL PROGRAMA FINAL

Con este programita, resolvi el problema de adelantar 4 minutos a mi servidor para que en la estacion de radio se escuchara la hora de forma correcta cuando se transmite al aire, al final inclui en el arranque del servidor este programa (/etc/init.d) para que en cualquier reincio se ajustara el tiempo.
Yo se que tal vez para muchos no es practico este ejemplo, pero alguna vez podran consultar como adelantar la hora del sistema en algun servidor si asi lo require alguna aplicacion.

2 comentarios:
No he podido resistir la tentación
de re-escribir tu rutina
Aquí va:
<<<
#!/bin/bash
# Ajustar hora al servidor
# ++ 4 minutos
# ajustar hora al servidor
ntpupdate-debian
# ++4 minutos
HR=` date +%H` # horas
MI=` date +%M` # minutos
# minutos en 1 hora < 60
MI4=` expr \( $MI + 4 \) % 60 `
# horas por dia < 24
HR4=`expr \( $HR + \( \( $MI + 4 \) / 60 \) \) % 24 `
# salida
echo date --set " $HR $MI4 "
# exit
>>>
Mi observación:
usas demasiadas preguntas ( case )
y por cada pregunta el programa adquiere mayor complejidad.
Q' Tengas un buen día.
o/
Muchas gracias por las observaciones, de hecho en el articulo efectivamente yo sentía hacer muchas cosas, pero fue en ese momento lo que se me ocurrió hacer para resolver mi problema, en esto vamos aprendiendo constantemente y solo así vamos afinando nuestro conocimiento, agradezco mucho, primero que hayas leído mi articulo y segundo te hayas tomado el tiempo de rehacer la rutina, créeme que la tomare en cuenta.
Saludos !!!
Publicar un comentario