vim завісае праз SSH? Праверце stty, перш чым вінаваціць VPN
Завіслы рэдактар праз SSH звычайна азначае праблему стану тэрмінала, а не абарваны тунель. Прачытайце stty на патрэбным псеўдатэрмінале, потым адрамантуйце менавіта яго.
Такія сеансы застаюцца злучанымі, пакуль рэдактар запускаецца, а потым экран перастае абнаўляцца, нават калі працэс 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 шляху, а тая, што таксама глытае адзінкавыя націскі, паказвае на шлях або сервер, а не на памер пакета. Трымайце сведкі тэрмінала асобна ад сведкаў сеткі, бо працоўны рэдактар у другім сеансе не доказ таго, што першы тэрмінал калі-небудзь быў здаровы.