Buscar este blog

jueves, 23 de mayo de 2024

QNAP y tareas programadas

Las tareas programadas en QNAP se realizan con "crontab", pero para que se mantengan tras reiniciar el equipo hay que hacer lo siguiente:

Editar el fichero crontab con la tarea que queramos programar: 

# vi /etc/config/crontab

Actualizar los cambios para que queden permanentes:

# crontab /etc/config/crontab

Reiniciar el servicio crontab:

# /etc/init.d/crond.sh restart

Con esto conseguimo que los cambios queden permanentes tras el reinicio del equipo.

 

lunes, 13 de mayo de 2024

 

Reiniciar el enrutador cada cierto tiempo nos sirve, por ejempplo, para que se limpie de procesos que puedan estar ocupando memoria de manera no deseada o simplemente para cambiar de IP pública.

Sin embargo, esto no es tan sencillo como parece, ya que el enrutador puede que no tenga un reloj interno que funcione en tiempo real. Esto podría provocar un ciclo interminable de reinicios.

Durante el arranque del enrutador, el reloj se configura inicialmente mediante “sysfixtime” con la marca de tiempo más reciente de cualquier archivo que se encuentre en /etc. Es decir, al inicio del arranque el router toma como hora la del archivo más moderno que se encuentre en /etc. El problema está en controlar que archivo es el más moderno, el cual puede ser un archivo de estado o un archivo de configuración, modificado quizás 30 segundos antes del reinicio iniciado por cron. En el proceso de arranque, el reloj toma la hora de ese archivo. A continuación el proceso cron se inicia y unos segundos más tarde nota que el momento de inicio requerido ha llegado de nuevo y se reinicia nuevamente entrando en bucle.

Si todo fuese bien, al final del proceso de arranque se inicia ntpd obteniendo la hora de internet, pero puede pasar un tiempo antes de que ntpd obtenga y establezca la hora correcta, por lo que cron puede iniciar de nuevo el reinicio en el medio cayendo en el bucle de reinicios.

Un truco que no sirve como solución es hacer un retraso de más de un minuto y crear a continuación un archivo en /etc justo antes de reiniciar. De esta forma, al reiniciarse y coger la hora del archivo más moderno, este tendría al menos más de un minuto por encima de la hora a la que se programó el reinicio, con lo cual evitamos que se vuelva a reiniciar.

# Reiniciar a las 4:30 a. m. todos los días
# Nota: Para evitar un bucle de reinicio infinito, se espera 70 segundos
# y se crea un archivo en /etc para configurar el reloj (touch /etc/banner)
# que tendrá como hora de creación las 4:31 a.m. Así se evita el reinicio en bucle.
30 4 * * * sleep 70 && touch /etc/banner && reboot

Fijarse que el reinicio se programa a las 4:30, se esperan 70 segundo y se crea el fichero /etc/banner con esa hora de creación. En la práctica el reinicio se produce 70 segundos más tarde de lo programado, es decir, a las 4:31:10, por tanto, en el arranque se cogerá como hora inicial las 4:31:10, lo que asegura que no se vuelva a producir otro reinicio programado a las 4:30 y caer en un bucle de reinicios.


NOTA: En muchas plataformas shutdown no funciona como se espera, ya que simplemente detendrá la CPU pero no apagará el aparato.