Как я могу сказать, как долго Watchdog будет ждать, чтобы остановить все процессы?
У меня есть сервер, мониторинг которого осуществляет Watchdog, и периодически происходит перезагрузка из-за неисправного сетевого оборудования, которое я не могу заменить в данный момент. Как я читал, Watchdog отправляет SIGTERM всем процессам, запрашивая безопасное отключение, и через короткое время отправляет SIGKILL, что немедленно остановит процесс. Однако в этом случае это приводит к повреждению данных, поскольку основной важный процесс еще не завершен полностью и содержит неписанные данные.
Как долго длится эта пауза, когда Watchdog запрашивает остановку всех процессов и заставляет их останавливаться? Он встроен в Watchdog, установлен в watchdog.conf(если он никогда не был задокументирован на странице руководства), или такой же, как другие системные настройки? Как я могу изменить эту настройку?
Изменить: Я нашел время ожидания, но я все еще ищу инструкции о том, как восстановить и должным образом интегрироваться с системой.
3 ответа
В официальной версии 5.15 на Sourceforge эта опция включена. Это можно настроить в файле watchdog.conf, используя строку:
sigterm-delay = 5
(закомментировано в файле примера). Обратите внимание, что экспериментальную версию 'V6' больше не следует использовать, поскольку 5.15 имеет практически все свои функции, а также несколько исправлений ошибок. Также обратите внимание, что веб-сайт "sat" может быть закрыт позднее в 2019 году из-за прекращения финансирования NERC.
Из источника Сторожевой, shutdown.c
в строке 445 пауза встроена в сторожевой таймер и составляет пять секунд.
Я разместил некоторую информацию о сборке, настройке и тестировании демона Linux watchdog здесь:
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 (14 сентября 2013 г.), то отредактируйте shutdown.c и в строке 363 измените "safe_sleep(4);" иметь желаемое значение тайм-аута в секундах. Если вы редактируете код для системного сторожевого таймера (как указано выше), постарайтесь не спать () дольше, чем аппаратный таймаут (обычно 60 секунд), так как система просто перезагрузится! Это была причина для функции safe_sleep(), чтобы сохранить сторожевой таймер во время ожидания.