У меня есть сервер, мониторинг которого осуществляет Watchdog, и периодически он перезагружается из-за неисправного сетевого оборудования, которое я не могу заменить в данный момент. Как я читал, Watchdog отправляет SIGTERM всем процессам, запрашивая безопасное отключение, и через короткое время отправляет SIGKILL, что немедленно остановит процесс. Однако в этом случае это приводит к повреждению данных, поскольку основной важный процесс еще не полностью завершен и содержит неписанные данные.
Как долго длится эта пауза, когда Watchdog запрашивает остановку всех процессов и заставляет их останавливаться? Он встроен в Watchdog, установлен в watchdog.conf (если он никогда не был задокументирован на странице руководства), или такой же, как другие системные настройки? Как я могу изменить этот параметр?
Редактировать: время ожидания истекло, но я все еще ищу инструкции о том, как правильно перестроить и интегрировать систему.
Официальным 5,15 версиям в SourceForge теперь включали эту опцию. Это может быть настроено в файле watchdog.conf использование строки:
sigterm-задержка = 5
(прокомментированный в файле в качестве примера). Обратите внимание, что экспериментальная версия 'V6' не должна больше использоваться, поскольку 5.15 имеет практически все ее функции и несколько исправлений ошибок также. Также обратите внимание, что 'находившийся' веб-сайт мог бы быть закрыт позже в 2019 из-за отказа в финансировании NERC.
Я разместил некоторую информацию о сборке, настройке и тестировании демона наблюдения 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
Затем в каталог с исходным кодом и скомпилируйте его:
[ 113] В текущем каталоге у вас будут новые двоичные файлы. Протестируйте их, прежде чем сделать их «живыми» с помощью sudo make install
, или, по крайней мере, сделайте резервные копии программ, поставляемых системой. Они раздуты по сравнению с системными из-за отладочных символов, вы можете использовать команду strip, если хотите уменьшить их размер.
Можете ли вы сказать, сколько времени вам нужно для работы SIGTERM?
Отредактировано, чтобы добавить:
Если вы используете текущее GIT pull (14 сентября 2013), отредактируйте завершение работы. c и в строке 363 измените "safe_sleep (4);" иметь желаемое значение тайм-аута в секундах. Если вы редактируете код для системного сторожевого таймера (как указано выше), постарайтесь не спать () дольше, чем аппаратный таймаут (обычно 60 секунд), так как система просто перезагрузится! Именно поэтому функция safe_sleep () поддерживала сторожевой таймер во время ожидания.
Из источника Watchdog, shutdown.c
, строка 445 , пауза встроена в Watchdog и составляет пять секунд.