vim se ustavi prek SSH? Preverite stty, preden obtožite VPN
Ustavljen urejevalnik prek SSH je običajno težava stanja terminala, ne prekinjen tunel. Preberite stty na pravem psevdoterminalu in popravite samo tega.
Takšne seje ostanejo povezane, medtem ko se urejevalnik zažene, nato pa se zaslon neha osveževati, čeprav je proces SSH očitno živ. Tipkanje ne da ničesar, Ctrl-C se zdi, da ne naredi ničesar, in očiten sklep je, da je VPN nekaj spustil. Večinoma je tunel v redu in oddaljeni psevdoterminal je v stanju, ki si ga ni nihče zamislil, ker odmev, kanonični vnos in nadzor pretoka živijo v terminalu in ne v omrežju. Ugotoviti, kateri od teh treh se je premaknil, je delo dveh ukazov.
Ustavitev živi v terminalu, ne v tunelu
Psevdoterminal nosi več kot bajte. Drži zastavice discipline vrstice, ki odločajo, ali se vnos odmeva, ali branja čakajo na novo vrstico, ali določeni znaki ustvarjajo signale in ali je mogoče izhod ustaviti z nadzornim znakom. Interaktivni urejevalnik ta terminal za ves čas preklopi v surovi način in ob izhodu bi moral obnoviti prejšnje nastavitve. Ko do obnovitve ne pride, lupina, v katero se vrnete, ni lupina, ki ste jo zapustili, tudi če se povezava nikoli ni prekinila.
Primerjajte terminale, preden kaj sklepate. Druga seja z istim urejevalnikom dokazuje, da klient in pot zmoreta delo; o terminalu, katerega zastavice so pokvarjene, ne pove ničesar.
Preberite nastavitve na terminalu, ki se je ustavil
Najprej prepoznajte napravo, nato preberite obe obliki njenega stanja. Berljiva oblika pokaže, kaj je nastavljeno, strojna oblika pa je tista, ki jo lahko pozneje vnesete nazaj.
tty
stty -a
stty -g
Tri skupine zastavic pojasnijo večino teh poročil. Nastavitve odmeva odločajo, ali se pritiski sploh pojavijo, zato je terminal z izklopljenim odmevom videti mrtev, medtem ko lupina prejema vsak znak. Kanonični način odloča, ali program vidi vnos vrstico za vrstico, zato terminal, ki je ostal v kanoničnem načinu, naredi, da se aplikacija v surovem načinu zdi, kot da ignorira tipke do Enter. Nastavitve nadzora pretoka odločajo, ali terminal uboga znaka XON in XOFF, in ta skupina ustvari najbolj prepričljivo lažno ustavitev od treh.
Zabeležite izhod, preden karkoli spremenite, še posebej kadar seja nosi lastne tipkovne bližnjice, na katere se nekdo zanaša. Strojna oblika je najvarnejši zapis, s pridržkom, da je odvisna od izvedbe in naj bi jo obnovil isti tip sistema, ki jo je ustvaril.
Popravite ta terminal, ne seje, v kateri tipkate
Standardno popravilo obnovi zdravi profil, ki ga navaja stran v priročniku, in vpliva samo na en terminal. Če ima urejevalnik v tem terminalu še neshranjeno delo, ga pustite pri miru, dokler delo ni shranjeno.
Iz druge lupine se izrecno usmerite na ustavljeno napravo, da terminal, v katerem delate, ostane nedotaknjen.
stty -F /dev/pts/7 -a
stty -F /dev/pts/7 sane
Prazen zaslon s pokvarjenim prikazom je druga težava od pokvarjene discipline vrstice, in program reset se z njo spopade z oddajanjem inicializacijskih zaporedij terminala. Najprej poskusite popravilo stanja, ker spreminja nastavitve, ki jih lahko pregledate, medtem ko zaporedje reset prepiše zaslon in ne pojasni ničesar o tem, kako se je pokvarilo.
Past Ctrl-S za prepričljivo ustavitvijo
Ko je programski nadzor pretoka omogočen in so običajni znaki dodeljeni, Ctrl-S reče terminalu, naj preneha pošiljati izhod, Ctrl-Q pa, naj nadaljuje. Seja ves čas ostane živa, en sam Ctrl-Q je pogosto celotno popravilo in v nobenem dnevniku se nič ne pojavi, in tako ta ustavitev preživi toliko stopnjevanj.
Preglejte dejanske nastavitve, namesto da jih predvidevate. Znake za začetek in zaustavitev je mogoče znova dodeliti ali onemogočiti, in terminal z izklopljenim nadzorom pretoka se ne bo odzval na nobenega od njiju.
Če se stanje vrne ali se SSH sam zagozdi
Ponavljajoče se slabo stanje kaže na nekaj, kar spreminja zastavice, ne da bi jih obnovilo: zagonska datoteka, ovojni skript, multiplekser, ki ponastavi napačno okno, ali aplikacija, ki umre, medtem ko drži surovi način. Dodajte pogojno preverjanje, ki poroča stanje, namesto brezpogojne ponastavitve, ker splošna ponastavitev skrije vzrok in lahko preglasi namerne nastavitve.
Ko se zagozdi tudi običajen promet SSH ali popravilo ne spremeni ničesar, terminal preneha biti osumljenec.
ssh -vvv [email protected]
ping -M do -s 1400 -c 3 host.example.com
Zastoj, ki se pojavi le pri velikih prenosih, kaže na težavo MTU na poti, tisti, ki pogoltne tudi posamezne pritiske, pa kaže na pot ali strežnik in ne na velikost paketa. Dokaze terminala hranite ločeno od omrežnih dokazov, ker delujoč urejevalnik v drugi seji ni dokaz, da je bil prvi terminal kdaj zdrav.