vim stringa per SSH? Patikrinkite stty, prieš kaltindami VPN
Per SSH įstrigęs redaktorius paprastai yra terminalo būsenos problema, o ne nutrūkęs tunelis. Perskaitykite stty teisingame pseudo terminale ir tada sutaisykite tik jį.
Tokios sesijos lieka prisijungusios, kol redaktorius paleidžiamas, o paskui ekranas nustoja atsinaujinti, nors SSH procesas akivaizdžiai gyvas. Rašymas nieko neduoda, Ctrl-C atrodo nieko nedarantis, ir akivaizdi išvada yra ta, kad VPN ką nors numetė. Dažniausiai tunelis yra tvarkingas, o nuotolinis pseudo terminalas yra būsenoje, kurios niekas neketino, nes aidas, kanoninis įvedimas ir srauto valdymas gyvena terminale, o ne tinkle. Išsiaiškinti, kuris iš tų trijų pasislinko, yra dviejų komandų darbas.
Užšalimas gyvena terminale, o ne tunelyje
Pseudo terminalas neša daugiau nei baitus. Jis laiko eilutės disciplinos vėliavėles, kurios nusprendžia, ar įvedimas atvaizduojamas, ar skaitymai laukia naujos eilutės, ar tam tikri simboliai generuoja signalus, ir ar išvestis gali būti sustabdyta valdymo simboliu. Interaktyvus redaktorius tam terminalui visam laikui įjungia neapdorotą režimą ir turėtų atkurti ankstesnius nustatymus išeidamas. Kai atkūrimas neįvyksta, apvalkalas, į kurį grįžtate, nėra tas apvalkalas, kurį palikote, net jei ryšys niekada nenutrūko.
Palyginkite terminalus prieš ką nors darydami išvadas. Antroji sesija su tuo pačiu redaktoriumi įrodo, kad klientas ir kelias gali atlikti darbą; ji nieko nesako apie terminalą, kurio vėliavėlės sulaužytos.
Perskaitykite nustatymus terminale, kuris užšalo
Pirmiausia nustatykite įrenginį, tada perskaitykite abi jo būsenos formas. Skaitoma forma rodo, kas nustatyta, o mašininė forma yra ta, kurią vėliau galite grąžinti.
tty
stty -a
stty -g
Trys vėliavėlių grupės paaiškina daugumą šių ataskaitų. Aido nustatymai nusprendžia, ar klavišų paspaudimai apskritai matomi, todėl terminalas su išjungtu aidu atrodo negyvas, nors apvalkalas gauna kiekvieną simbolį. Kanoninis režimas nusprendžia, ar programa mato įvedimą po vieną eilutę, todėl kanoniniame režime paliktas terminalas priverčia neapdoroto režimo programą atrodyti taip, tarsi ji ignoruotų klavišus iki Enter. Srauto valdymo nustatymai nusprendžia, ar terminalas paklūsta XON ir XOFF simboliams, ir ši grupė sukuria įtikinamiausią netikrą užšalimą iš trijų.
Užsirašykite išvestį prieš ką nors keisdami, ypač kai sesija turi pasirinktines klavišų susiejas, kuriomis kas nors remiasi. Mašininė forma yra saugiausias įrašas, su sąlyga, kad ji priklauso nuo įgyvendinimo ir turėtų būti atkurta tos pačios rūšies sistemos, kuri ją sukūrė.
Sutaisykite tą vieną terminalą, o ne sesiją, kurioje rašote
Standartinis taisymas atkuria sveiką profilį, kurį išvardija vadovo puslapis, ir jis paveikia tik vieną terminalą. Jei redaktorius tame terminale vis dar laiko neišsaugotą darbą, palikite jį ramybėje, kol darbas bus išsaugotas.
Iš kito apvalkalo aiškiai nukreipkite į užšalusį įrenginį, kad terminalas, kuriame dirbate, liktų nepaliestas.
stty -F /dev/pts/7 -a
stty -F /dev/pts/7 sane
Tuščias ekranas su sugadintu vaizdu yra atskira problema nuo sulaužytos eilutės disciplinos, o programa reset ją sprendžia siųsdama terminalo inicijavimo sekas. Pirmiausia pabandykite būsenos taisymą, nes jis keičia nustatymus, kuriuos galite patikrinti, o reset seka perrašo ekraną ir nieko nepaaiškina apie tai, kaip jis sugedo.
Ctrl-S spąstai už įtikinamo užšalimo
Kai programinės įrangos srauto valdymas įjungtas ir įprasti simboliai priskirti, Ctrl-S liepia terminalui nustoti siųsti išvestį, o Ctrl-Q liepia tęsti. Sesija visą laiką lieka gyva, vienas Ctrl-Q dažnai yra visas taisymas, ir jokiame žurnale nieko nepasirodo, ir taip šis užšalimas išgyvena tiek daug eskalacijų.
Patikrinkite tikruosius nustatymus, o ne manykite juos. Pradžios ir sustabdymo simbolius galima priskirti iš naujo arba išjungti, o terminalas su išjungtu srauto valdymu nereaguos į nė vieną.
Jei būsena grįžta arba pats SSH užstringa
Pasikartojanti bloga būsena rodo į kažką, kas keičia vėliavėles jų neatkurdamas: paleidimo failas, apvalkalo scenarijus, multipleksorius, atstatantis netinkamą langą, arba programa, kuri miršta laikydama neapdorotą režimą. Pridėkite sąlyginį patikrinimą, kuris praneša būseną, o ne besąlyginį atstatymą, nes bendras atstatymas paslepia priežastį ir gali viršyti tyčinius nustatymus.
Kai įprastas SSH srautas taip pat stringa, arba taisymas nieko nekeičia, terminalas nustoja būti įtariamuoju.
ssh -vvv [email protected]
ping -M do -s 1400 -c 3 host.example.com
Užstrigimas, kuris pasireiškia tik didelių perdavimų metu, rodo kelio MTU problemą, o tas, kuris praryja ir pavienius paspaudimus, rodo į kelią ar serverį, o ne į paketo dydį. Laikykite terminalo įrodymus atskirai nuo tinklo įrodymų, nes antroje sesijoje veikiantis redaktorius nėra įrodymas, kad pirmasis terminalas kada nors buvo sveikas.