
Watchdog으로 모니터링되는 서버가 있는데 현재 교체할 수 없는 네트워크 하드웨어 결함으로 인해 가끔 재부팅되는 현상이 발생합니다. 내가 읽은 대로 Watchdog은 모든 프로세스에 SIGTERM을 보내 안전한 종료를 요청하고 잠시 후 SIGKILL을 보내 프로세스를 즉시 중지합니다. 그러나 이 경우 중요한 주요 프로세스가 아직 완전히 종료되지 않았고 기록되지 않은 데이터가 있기 때문에 데이터 손상으로 이어집니다.
Watchdog이 모든 프로세스를 중지하도록 요청한 후 강제로 중지하도록 요청하는 데 걸리는 시간은 얼마나 됩니까? Watchdog 내에 내장되어 watchdog.conf에 설정되어 있습니까(만약 그렇다면 맨페이지에 문서화되지 않았습니다), 아니면 다른 시스템 설정과 동일합니까? 이 설정을 어떻게 변경할 수 있나요?
편집: 시간 초과를 발견했지만 시스템을 올바르게 재구축하고 통합하는 방법에 대한 지침을 계속 찾고 있습니다.
답변1
Sourceforge의 공식 5.15 버전에는 이제 이 옵션이 포함되어 있습니다. 다음 행을 사용하여 watchdog.conf 파일에서 구성할 수 있습니다.
신호 지연 = 5
(예제 파일에 주석 처리되어 있음) 5.15에는 거의 모든 기능과 몇 가지 버그 수정 사항이 포함되어 있으므로 실험적인 'V6' 버전은 더 이상 사용해서는 안 됩니다. 또한 'sat' 웹사이트는 NERC 자금 철회로 인해 2019년 말에 폐쇄될 수 있습니다.
답변2
에서Watchdog 소스, shutdown.c
445행, 일시 정지는 Watchdog에 내장되어 있으며 5초입니다.
답변3
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
최소한 시스템 제공 프로그램의 백업 복사본을 만드십시오. 디버그 기호로 인해 시스템에 비해 크기가 커집니다. 크기를 줄이려면 스트립 명령을 사용할 수 있습니다.
SIGTERM이 작동하는 데 어느 정도의 시간이 필요한지 말씀해 주실 수 있나요?
다음을 추가하도록 편집되었습니다.
현재 GIT 풀(2013년 9월 14일)을 사용하는 경우 shutdown.c를 편집하고 363행에서 "safe_sleep(4);"를 변경합니다. 원하는 시간 초과 값을 초 단위로 얻으려면 위에서 참조한 대로 시스템 제공 감시 장치에 대한 코드를 편집하는 경우 시스템이 단순히 재부팅되므로 하드웨어 제한 시간(일반적으로 60초) 이상 동안 sleep()하지 않도록 주의하십시오! 이것이 기다리는 동안 워치독에게 먹이를 계속 공급하기 위한 safe_sleep() 함수의 이유입니다.