Как узнать, сколько времени должен ждать Watchdog, чтобы остановить все процессы?

Как узнать, сколько времени должен ждать Watchdog, чтобы остановить все процессы?

У меня есть сервер, который отслеживается Watchdog, и он иногда перезагружается из-за неисправного сетевого оборудования, которое я не могу заменить в данный момент. Как я прочитал, Watchdog отправляет SIGTERM всем процессам, запрашивая безопасное завершение работы, и через короткое время отправляет SIGKILL, который немедленно останавливает процесс. Однако в этом случае это приводит к повреждению данных, поскольку основной процесс еще не полностью завершен и имеет незаписанные данные.

Сколько времени занимает эта пауза у Watchdog между запросом всех процессов на остановку и принудительной их остановкой? Она жестко зашита в Watchdog, установлена ​​в watchdog.conf (если она была, то никогда не была задокументирована в man-странице) или совпадает с другой системной настройкой? Как изменить эту настройку?

Редактировать: Я нашел причину тайм-аута, но все еще ищу инструкции по правильной перестройке и интеграции с системой.

решение1

Официальная версия 5.15 на Sourceforge теперь включает эту опцию. Ее можно настроить в файле watchdog.conf с помощью строки:

sigterm-задержка = 5

(закомментировано в файле примера). Обратите внимание, что экспериментальную версию 'V6' больше не следует использовать, так как 5.15 содержит практически все ее функции, а также несколько исправлений ошибок. Также обратите внимание, что веб-сайт 'sat' может быть закрыт позднее в 2019 году из-за прекращения финансирования NERC.

решение2

Отисточник Watchdog, shutdown.cстрока 445пауза жестко запрограммирована в Watchdog и составляет пять секунд.

решение3

Я разместил некоторую информацию о создании, настройке и тестировании демона-сторожевого таймера Linux здесь:

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

Короткий ответ: вам необходимо настроить вашу систему для сборки этого проекта:

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

Затем получите исходный код, который у вас, вероятно, уже есть, но последнюю версию можно получить, выполнив следующие действия:

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

Перейдите в каталог с кодом и подготовьтесь к компиляции:

cd watchdog-code
autoreconf -i
./configure

Затем в исходный каталог и скомпилируйте его:

cd src
make clean
make

В текущем каталоге у вас будут новые двоичные файлы. Протестируйте их, прежде чем сделать их "живыми" с помощью sudo make install, или, по крайней мере, сделайте резервные копии системных программ. Они раздуты по сравнению с системными из-за отладочных символов, вы можете использовать команду strip, если хотите уменьшить их размер.

Можете ли вы сказать, сколько времени необходимо для того, чтобы SIGTERM сработал?

Отредактировано для добавления:

Если вы используете текущий GIT pull (14 сентября 2013 г.), то отредактируйте shutdown.c и в строке 363 измените "safe_sleep(4);", чтобы получить желаемое значение тайм-аута в секундах. При редактировании кода для системного сторожевого таймера (как указано выше) будьте осторожны, чтобы не sleep() дольше, чем аппаратный тайм-аут (обычно 60 секунд), так как система просто перезагрузится! Для этого и нужна функция safe_sleep(), чтобы сторожевой таймер был подпитан во время ожидания.

Связанный контент