데이터가 오래되고 USB 장치가 변경되면 너트 드라이버를 다시 시작하세요.

데이터가 오래되고 USB 장치가 변경되면 너트 드라이버를 다시 시작하세요.

USB를 통해 Raspberry Pi Model B+에 연결된 PowerWalker VI 850 LCD UPS가 있습니다. NUT를 사용하여 모니터링하려고 시도했지만 많은 문제가 있습니다. 첫째, 프로토콜 감지가 제대로 작동하지 않는 것 같았고 protocol = mustek이를 지정했는데 부분적으로 안정화된 것 같습니다. 이제 너트 드라이버 서비스를 시작할 때마다 실제로 연결됩니다.

그러나 또 다른 특이한 점은 USB 장치가 경고나 명백한 이유 없이 계속 변경된다는 것입니다(예: 부팅 시 또는 부팅 시 /dev/bus/usb/001/005변경 006). 저는 udev 규칙에 007매개변수를 추가하여 이 문제를 해결하려고 했습니다.SYMLINK

ACTION=="add", \
SUBSYSTEM=="usb", \
ATTR{idVendor}=="0665", ATTR{idProduct}=="5161", \
SYMLINK+="powerwalkerups" \
MODE="0660", GROUP="nut"

이렇게 하면 /dev/powerwalkerups항상 올바른 버스 장치를 가리키게 됩니다. 그러나 적어도 USB 장치가 마술처럼 바뀔 때마다 너트 드라이버의 연결이 끊어지고 멋진 "데이터 오래됨" 메시지가 나타납니다. 이제 다시 시작할 때마다 실제로 좋은 프로토콜로 올바르게 연결되어 작동합니다. 하지만 수동으로 해야 합니다 systemctl restart nut-driver.

데이터가 오래된 경우 NUT가 드라이버를 다시 시작하는 자동 방법이 있습니까? 아니면 누구든지 이 작업을 수행하기 위해 감시 유형 프로세스를 추천할 수 있습니까? 서비스가 실제로 중지되지 않았으므로 systemd서비스가 실패한 것으로 간주되지 않습니다. 서비스를 한 번 이상 다시 시작하여 연결 문제가 해결되는지 확인하려면 어떻게 해야 합니까?

(또는 처음에 연결이 끊어지는 것을 막는 방법을 아시나요?)

내 NUT 호스트의 가동 시간은 이제 5일이며 USB 장치는 005에서 012까지 계속되었습니다. 따라서 다른 호스트에서 Icinga2를 실행하고 있으며 서비스를 다시 시작하는 것을 고려할 것입니다. .그러나 이를 위해서는 Icinga 호스트에서 NUT 호스트로의 SSH 액세스가 필요합니다. :-P. 더 나은 생각인가요?

답변1

알아냈습니다... 내 문제는 USB 장치 변경과 관련이 있고 이미 위의 udev 규칙이 있었기 때문에 RUN다음과 같은 설명을 추가했습니다.

ACTION=="add", \                                                                                       
SUBSYSTEM=="usb", \                                                                                    
ATTR{idVendor}=="0665", ATTR{idProduct}=="5161", \                                                     
SYMLINK+="powerwalkerups", \                                                                           
MODE="0660", GROUP="nut", \                                                                            
RUN+="/bin/systemctl restart nut-driver"

이는 데이터가 오래되었을 때 너트 드라이버를 다시 시작하지 않고 USB 장치가 다시 연결될 때(또는 무엇을 하든) 다시 시작합니다. 이것으로 문제가 해결된 것 같습니다.

관련 정보