Такія сеансы застаюцца злучанымі, пакуль рэдактар запускаецца, а потым экран перастае абнаўляцца, нават калі працэс SSH відавочна жывы. Увод нічога не дае, Ctrl-C выглядае так, быццам нічога не робіць, і відавочная выснова — VPN нешта скінуў. Часцей за ўсё тунель у парадку, а аддалены псеўдатэрмінал знаходзіцца ў стане, якога ніхто не планаваў, бо рэха, кананічны ўвод і кіраванне патокам жывуць у тэрмінале, а не ў сетцы. Высветліць, які з гэтых трох зрушыўся, — задача з двух каманд.

Завісанне жыве ў тэрмінале, а не ў тунелі

Псеўдатэрмінал нясе больш, чым байты. Ён трымае сцягі дысцыпліны радка, якія вырашаюць, ці адлюстроўваецца ўвод, ці чакаюць чытанні новага радка, ці ствараюць пэўныя сімвалы сігналы і ці можна спыніць вывад кіруючым сімвалам. Інтэрактыўны рэдактар пераводзіць гэты тэрмінал у сыры рэжым на ўвесь час і павінен аднавіць папярэднія налады пры выхадзе. Калі аднаўленне не адбываецца, абалонка, у якую вы вяртаецеся, не тая, якую вы пакінулі, нават калі злучэнне ніколі не абрывалася.

Параўнайце тэрміналы, перш чым рабіць высновы. Другі сеанс з тым жа рэдактарам даказвае, што кліент і шлях здольныя выканаць працу; гэта нічога не кажа пра тэрмінал, сцягі якога зламаныя.

Прачытайце налады на тэрмінале, які завіс

Спачатку вызначце прыладу, потым прачытайце абедзве формы яе стану. Чытальная форма паказвае, што ўсталявана, а машынная форма — тая, якую вы можаце вярнуць пазней.

tty
stty -a
stty -g

Тры групы сцягоў тлумачаць большасць такіх справаздач. Налады рэха вырашаюць, ці з'яўляюцца націскі наогул, таму тэрмінал з выключаным рэхам выглядае мёртвым, пакуль абалонка атрымлівае кожны сімвал. Кананічны рэжым вырашае, ці бачыць праграма ўвод па аднаму радку, таму тэрмінал, пакінуты ў кананічным рэжыме, прымушае праграму ў сырым рэжыме выглядаць так, нібыта яна ігнаруе клавішы да Enter. Налады кіравання патокам вырашаюць, ці падпарадкоўваецца тэрмінал сімвалам XON і XOFF, і гэтая група стварае самае пераканаўчае фальшывае завісанне з трох.

Запішыце вывад перад любымі зменамі, асабліва калі сеанс нясе нестандартныя прывязкі клавіш, ад якіх хтосьці залежыць. Машынная форма — самы бяспечны запіс, з той заўвагай, што яна залежыць ад рэалізацыі і павінна аднаўляцца такой жа сістэмай, якая яе стварыла.

Адрамантуйце менавіта гэты тэрмінал, а не сеанс, у якім вы друкуеце

Стандартнае аднаўленне вяртае здаровы профіль, які пералічвае дапаможная старонка, і закранае толькі адзін тэрмінал. Калі рэдактар яшчэ трымае незахаваную працу ў гэтым тэрмінале, пакіньце яго, пакуль праца не будзе захавана.

З іншай абалонкі нацэльцеся на завіслую прыладу яўна, каб тэрмінал, у якім вы працуеце, застаўся некранутым.

stty -F /dev/pts/7 -a
stty -F /dev/pts/7 sane

Пусты экран са скажоным адлюстраваннем — асобная праблема ад зламанай дысцыпліны радка, і праграма reset вырашае яе, выводзячы паслядоўнасці ініцыялізацыі тэрмінала. Спачатку паспрабуйце аднаўленне стану, бо яно змяняе налады, якія вы можаце агледзець, тады як паслядоўнасць reset перапісвае экран і нічога не тлумачыць пра тое, як ён зламаўся.

Пастка Ctrl-S за пераканаўчым завісаннем

Калі праграмнае кіраванне патокам уключана і звычайныя сімвалы прызначаныя, Ctrl-S кажа тэрміналу спыніць адпраўку вываду, а Ctrl-Q кажа аднавіць. Сеанс застаецца жывым увесь час, адзін Ctrl-Q часта і ёсць усё аднаўленне, і нічога не з'яўляецца ні ў якім журнале, менавіта так гэтае завісанне перажывае столькі эскалацый.

Аглядзіце фактычныя налады замест таго, каб меркаваць пра іх. Сімвалы пачатку і спынення можна перапрызначыць або адключыць, і тэрмінал з выключаным кіраваннем патокам не зрэагуе ні на адзін з іх.

Калі стан вяртаецца, або сам SSH затынаецца

Паўторны дрэнны стан паказвае на нешта, што змяняе сцягі без іх аднаўлення: файл запуску, скрыпт-абгортка, мультыплексар, які скідвае не тое акно, або праграма, якая памірае, трымаючы сыры рэжым. Дадайце ўмоўную праверку, якая паведамляе пра стан замест безумоўнага скіду, бо суцэльны скід хавае прычыну і можа перакрыць наўмысныя налады.

Калі звычайны трафік SSH таксама затынаецца або аднаўленне нічога не мяняе, тэрмінал перастае быць падазраваным.

ssh -vvv [email protected]
ping -M do -s 1400 -c 3 host.example.com

Затынка, якая з'яўляецца толькі падчас вялікіх перадач, мяркуе праблему MTU шляху, а тая, што таксама глытае адзінкавыя націскі, паказвае на шлях або сервер, а не на памер пакета. Трымайце сведкі тэрмінала асобна ад сведкаў сеткі, бо працоўны рэдактар у другім сеансе не доказ таго, што першы тэрмінал калі-небудзь быў здаровы.

Падобныя артыкулы