systemd를 사용하여 하드웨어 감시 상태를 확인하는 방법은 무엇입니까?
util-linux
일부 정보를 인쇄하는 명령을 사용할 수 있지만 wdctl
항상 작동하지는 않습니다(예: Raspberry Pi 3 이상). Pi 3를 예로 들어 보겠습니다.
# wdctl /dev/watchdog0
wdctl: cannot read information about /dev/watchdog0: No such file or directory
# wdctl /dev/watchdog
wdctl: cannot read information about /dev/watchdog: No such file or directory
그러나 감시 장치가 활성화된 것 같습니다.
# dmesg | grep watchdog
[ 6.985782] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
[ 17.190956] systemd[1]: Using hardware watchdog 'Broadcom BCM2835 Watchdog timer', version 0, device /dev/watchdog
[ 17.206391] systemd[1]: Set hardware watchdog to 15s.
그렇다면 하드웨어 감시의 현재 상태와 systemd 자체가 이를 통해 수행하는 작업을 표시하는 데 사용할 수 있는 systemd 특정 명령이 있습니까?
이전 감시 서비스는 더 이상 적용되지 않습니다. 이는 systemd가 기본 하드웨어 감시 지원을 받기 전이었기 때문입니다.
# systemctl status watchdog
Unit watchdog.service could not be found.
wdctl
워치독 타이머가 활성화된 위치, 사용 중인 위치, 현재 시간 제한이 어떻게 설정되어 있는지 와 유사한 정보를 제공하는 명령을 실행하고 있습니다 . 일종의 systemctl list-timers
하드웨어 감시자용입니다.
답변1
Watchdog은 특수 장치입니다. 이는 보고한 wdctl 출력에 대해 설명합니다.
그러나 모든 감시 장치는 해당 설정을 /sys로 내보냅니다.
그런 다음 /sys/class/watchdog/*에서 찾을 수 있습니다.
명령을 원하면 그것이 grep . /sys/class/watchdog/*/*
필요한 일을 해줄까요?
답변2
저도 같은 생각을 하고 비슷한 질문을 검색해 본 결과 다음과 같은 결론을 얻었습니다.
sudo strace -t -e ioctl -p1 | grep WDIOC_KEEPALIVE
시간 초과 간격의 중간에 다음과 유사한 내용이 표시됩니다.
01:15:47 ioctl(9, WDIOC_KEEPALIVE) = 0
...
이는 프로세스의 모든 ioctl 호출을 strace
모니터링 pid 1
( )한 다음 이를 필터링하는 데 사용됩니다 . systemd는 감시 하드웨어를 "ping"하여 재부팅을 방지하는 데 사용됩니다.systemd init
WDIOC_KEEPALIVE
WDIOC_KEEPALIVE