У мене кластер високої доступності (Heartbeat), підключений через послідовну лінію та два мережеві мережі. Я хотів би встановити скрипт моніторингу, здатний розпізнавати відключену послідовну лінію (в основному на те саме питання було відповідено в SO , однак я не задоволений такою загальною відповіддю).
Я не можу просто відкрити послідовний пристрій і сама прочитати дані, оскільки послідовну лінію відкриває Heartbeat.
Тому я почав шукати якісь непрямі підказки. Єдина відмінність, яку я знайшов поки що, - це у вмісті /proc/tty/driver/serial
. Ось як це виглядає, коли він підключений:
# 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
І при відключенні:
# 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
Я недостатньо впевнений, щоб вирішити, що сигнали, перелічені в кінці рядка, мають саме значення підключеного / відключеного кабелю, оскільки я не знайшов жодної документації щодо вмісту / proc / tty / driver / serial. Я можу лише припустити, що наявність сигналу означає, що даний сигнал увімкнено "прямо зараз" (чи це було недавно? Чи?). Serial HOWTO каже , що додаткові сигнали представляють , коли кабель підключений (сигнал управління потоком CTS, DSR «Я готова до спілкування», CD «модем , підключений до іншого») все в «вхідний» напрямку. Тож має бути хтось живий на іншому кінці.
Припускаючи, що значення сигналів є таким, як описано в Serial HOWTO, я можу базувати своє рішення на наявності, скажімо, сигналу CD. Однак я не дуже впевнений.
Тож питання: чи мій метод "правильний", чи є кращі варіанти, про які я не знаю?
EDIT: Я зробив кілька додаткових спостережень і поспілкувався з колегою. Виявляється, наявність або відсутність сигналів в кінці рядка є досить хорошим показником активності послідовного порту на обох кінцях. Однак це не показник фізичної наявності кабелю. Щоразу, коли була програма запису на послідовний порт, були вихідні сигнали (RTS | DTR). Коли інша сторона записувала вхідні сигнали, були присутніми (CTS | DSR | CD). Якщо жодна із сторін не зв’язується, сигналів взагалі немає (це не обов'язково означає, що кабелю немає). Не забувайте, що точні сигнали залежать від проводки кабелю (у мене "нульовий модем з частковим рукостисканням").