¿Cómo puedo saber cuánto tiempo debe esperar Watchdog para detener todos los procesos?

¿Cómo puedo saber cuánto tiempo debe esperar Watchdog para detener todos los procesos?

Tengo un servidor monitoreado por Watchdog y ocasionalmente se reinicia debido a un hardware de red defectuoso que no puedo reemplazar en este momento. Según leí, Watchdog envía un SIGTERM a todos los procesos, solicitando un apagado seguro, y al poco tiempo envía un SIGKILL, que detendrá el proceso inmediatamente. Sin embargo, en este caso, esto conduce a la corrupción de datos ya que el proceso principal de importancia aún no está completamente cerrado y tiene datos no escritos.

¿Cuánto dura esta pausa que dura Watchdog entre pedir que se detengan todos los procesos y obligarlos a detenerse? ¿Está cableado dentro de Watchdog, configurado en watchdog.conf (si lo estuvo, nunca quedó documentado en la página de manual) o es el mismo que otra configuración del sistema? ¿Cómo puedo cambiar esta configuración?

Editar: encontré el tiempo de espera, pero todavía estoy buscando instrucciones sobre cómo reconstruir e integrar con el sistema correctamente.

Respuesta1

La versión oficial 5.15 en Sourceforge ahora incluye esta opción. Se puede configurar en el archivo watchdog.conf usando la línea:

retraso-sigterm = 5

(comentado en el archivo de ejemplo). Tenga en cuenta que la versión experimental 'V6' ya no debe usarse ya que 5.15 tiene prácticamente todas sus características y también varias correcciones de errores. También tenga en cuenta que el sitio web 'sat' podría cerrarse más adelante en 2019 debido al retiro de los fondos NERC.

Respuesta2

Dela fuente de Watchdog, shutdown.clínea 445, la pausa está integrada en Watchdog y es de cinco segundos.

Respuesta3

He publicado información sobre cómo construir, configurar y probar el demonio de vigilancia de Linux aquí:

http://www.sat.dundee.ac.uk/~psc/watchdog/Linux-Watchdog.html

La respuesta corta es que necesita configurar su sistema para construir este proyecto:

sudo apt-get build-dep watchdog
sudo apt-get install build-essential automake libtool

Luego obtenga el código fuente, que probablemente ya tenga, pero puede obtener la versión más reciente siguiendo estos pasos:

sudo apt-get install git
git clone git://git.code.sf.net/p/watchdog/code watchdog-code

Vaya al directorio de códigos y prepárese para compilar:

cd watchdog-code
autoreconf -i
./configure

Luego al directorio fuente y compílelo:

cd src
make clean
make

En el directorio actual tendrás los nuevos binarios. Pruébelos antes de activarlos mediante sudo make install, o al menos haga copias de seguridad de los programas suministrados por el sistema. Están inflados en comparación con los del sistema debido a los símbolos de depuración; puede usar el comando strip si desea reducir su tamaño.

¿Puedes decirnos qué tipo de tiempo necesitas para que SIGTERM funcione?

Editado para agregar:

Si está utilizando la versión GIT actual (14 de septiembre de 2013), edite Shutdown.c y en la línea 363 cambie "safe_sleep(4);" para tener el valor de tiempo de espera deseado en segundos. Si edita el código para el mecanismo de vigilancia proporcionado por el sistema (como se menciona anteriormente), tenga cuidado de no dormir() durante más tiempo que el tiempo de espera del hardware (normalmente 60 segundos), ya que el sistema simplemente se reiniciará. Esa fue la razón de la función safe_sleep(), para mantener alimentado al perro guardián mientras espera.

información relacionada