Mam klaster o wysokiej dostępności (Heartbeat) podłączony przez linię szeregową i dwie karty sieciowe Ethernet. Chciałbym skonfigurować skrypt monitorujący rozpoznający odłączoną linię szeregową (w zasadzie na SO udzielono odpowiedzi na to samo pytanie , jednak nie jestem zadowolony z tak ogólnej odpowiedzi).
Nie mogę po prostu otworzyć urządzenia szeregowego i sam odczytać danych, ponieważ linia szeregowa jest otwierana przez Heartbeat.
Zacząłem więc szukać pośrednich wskazówek. Jedyną różnicą, jaką do tej pory znalazłem, jest zawartość /proc/tty/driver/serial
. Tak to wygląda, gdy jest połączone:
# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:2722759 rx:2718165 brk:1 RTS|CTS|DTR|DSR|CD
A po odłączeniu:
# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:2725233 rx:2720703 brk:1 RTS|DTR
Nie jestem wystarczająco pewny, aby zdecydować, że sygnały wymienione na końcu linii mają takie samo znaczenie jak podłączony / odłączony kabel, ponieważ nie znalazłem żadnej dokumentacji dotyczącej zawartości / proc / tty / driver / serial. Mogę tylko założyć, że obecność sygnału oznacza, że dany sygnał jest „teraz” (lub był w przeszłości? Lub?). Porty szeregowe mówi, że dodatkowe sygnały przedstawić, gdy kabel jest podłączony (CTS sygnał sterowania przepływem, DSR „Jestem gotowy do komunikowania się” CD „Modem podłączony do innego”) są w kierunku „Input”. Więc na drugim końcu musi być ktoś żywy.
Zakładając, że znaczenie sygnałów jest takie, jak opisano w Serial HOWTO, mogę oprzeć swoją decyzję na obecności, powiedzmy, sygnału CD. Jednak nie jestem do końca pewien.
Pytanie brzmi zatem: czy moja metoda jest „odpowiednia”, czy też mam lepsze opcje, których nie jestem świadomy?
EDYCJA: Zrobiłem kilka dodatkowych obserwacji i rozmawiałem z moim kolegą. Okazuje się, że obecność lub brak sygnałów na końcu linii jest dość dobrym wskaźnikiem aktywności portu szeregowego na obu końcach. Nie jest to jednak wskaźnik fizycznej obecności kabla. Ilekroć istniał program zapisujący do portu szeregowego, były obecne sygnały wychodzące (RTS | DTR). Gdy druga strona pisała, obecne były przychodzące sygnały (CTS | DSR | CD). Kiedy żadna ze stron się nie komunikuje, nie ma żadnych sygnałów (co niekoniecznie oznacza, że nie ma kabla). Nie zapominaj, że dokładne sygnały zależą od okablowania kabla (mam „modem zerowy z częściowym uzgadnianiem”).