Buscar este blog

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.

sábado, 15 de agosto de 2020

Expresiones regulares (Regexp)

Sirven para buscar cadenas de caracteres dentro de un texto. Son muy potentes en las búsquedas y eso las hace complejas cuando las búsquedas también lo son.

Hay quien dice que “Si para solucionar un problema necesitas una expresión regular, ahora tienes 2 problemas”.

Dependiendo del programa que las utilice, pueden variar un poco, aunque en general casi todos los programas coinciden en la mayoría de las cosas. Se pueden utilizar desde la línea de órdenes de GNU/Linux con el comando grep o desde muchos editores de textos (los más profesionales) y lenguajes de programación. Los lenguajes de programación utilizan librerías de funciones para trabajar con expresiones regulares. Una de las librerías más conocidas y utilizada es PCRE, una librería libre implementada en C e inspirada en el interfaz externo de Perl. Como las expreg. pueden llegar a ser muy complejas, es importante comentarlas desgranando sus partes.

 

jueves, 27 de febrero de 2020

Montar Disco externo USB con sistema de ficheros NTFS en XigmaNAS (Nas4free)

Enchufa el disco externo USB al equipo.
Conéctate a tu Xigmanas vía ssh.
Para saber si se detecto el dispositivo se puede mirar en el entorno gráfico en:
Diagnostics → log

Si todo fue bien, aparecerá que se ha reconocido un dispositivo, en este ejemplo ha sido identificado como “da2”.