Ovakve sesije ostaju povezane dok se uređivač pokreće, a zatim se zaslon prestaje osvježavati iako je SSH proces očito živ. Tipkanje ne daje ništa, Ctrl-C izgleda kao da ne radi ništa, a očiti zaključak je da je VPN nešto ispustio. Većinu vremena tunel je u redu, a udaljeni pseudoterminal je u stanju koje nitko nije namjerio, jer echo, kanonski unos i upravljanje protokom žive u terminalu, a ne u mreži. Otkriti koje se od to troje pomaknulo posao je od dvije naredbe.

Zamrzavanje živi u terminalu, ne u tunelu

Pseudoterminal nosi više od bajtova. Drži zastavice discipline retka koje odlučuju hoće li se unos odražavati, čekaju li čitanja novi redak, stvaraju li određeni znakovi signale i može li izlaz biti zaustavljen upravljačkim znakom. Interaktivni uređivač prebacuje taj terminal u sirovi način rada na cijelo vrijeme i trebao bi vratiti prethodne postavke pri izlasku. Kada se vraćanje ne dogodi, ljuska u koju se vraćate nije ljuska koju ste ostavili, iako veza nikada nije prekinuta.

Usporedite terminale prije nego išta zaključite. Druga sesija s istim uređivačem dokazuje da klijent i put mogu obaviti posao; to ne govori ništa o terminalu čije su zastavice pokvarene.

Pročitajte postavke na terminalu koji se zamrznuo

Najprije prepoznajte uređaj, zatim pročitajte oba oblika njegova stanja. Čitljivi oblik pokazuje što je postavljeno, a strojni oblik je onaj koji možete kasnije vratiti.

tty
stty -a
stty -g

Tri skupine zastavica objašnjavaju većinu ovih izvješća. Postavke echo odlučuju hoće li pritisci uopće biti vidljivi, pa terminal s isključenim echo izgleda mrtav dok ljuska prima svaki znak. Kanonski način rada odlučuje vidi li program unos redak po redak, pa terminal ostavljen u kanonskom načinu čini da se aplikacija u sirovom načinu čini kao da ignorira tipke do Entera. Postavke upravljanja protokom odlučuju sluša li terminal znakove XON i XOFF, a ta skupina proizvodi najuvjerljivije lažno zamrzavanje od njih tri.

Zabilježite izlaz prije nego što bilo što promijenite, posebno kada sesija nosi prilagođene kombinacije tipki o kojima netko ovisi. Strojni oblik najsigurniji je zapis, uz ogradu da ovisi o implementaciji i da ga treba vratiti ista vrsta sustava koja ga je proizvela.

Popravite taj jedan terminal, a ne sesiju u kojoj tipkate

Standardni popravak vraća zdravi profil koji navodi priručnik i utječe samo na jedan terminal. Ako uređivač još drži nespremljen rad u tom terminalu, ostavite ga dok rad ne bude spremljen.

Iz druge ljuske izričito ciljajte zamrznuti uređaj kako bi terminal u kojem radite ostao netaknut.

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

Prazan zaslon s oštećenim prikazom odvojen je problem od pokvarene discipline retka, a reset program rješava ga emitiranjem sekvencija za inicijalizaciju terminala. Prvo pokušajte popravak stanja jer mijenja postavke koje možete pregledati, dok reset sekvenca prepisuje zaslon i ne objašnjava ništa o tome kako se pokvario.

Zamka Ctrl-S iza uvjerljivog zamrzavanja

Kada je softversko upravljanje protokom omogućeno i uobičajeni znakovi dodijeljeni, Ctrl-S kaže terminalu da prestane slati izlaz, a Ctrl-Q da nastavi. Sesija ostaje živa cijelo vrijeme, jedan Ctrl-Q često je cijeli popravak i ništa se ne pojavljuje ni u jednom zapisu, i tako ovo preživljava tolike eskalacije.

Pregledajte stvarne postavke umjesto da ih pretpostavljate. Znakovi za početak i zaustavljanje mogu se prenamijeniti ili onemogućiti, a terminal s isključenim upravljanjem protokom neće reagirati ni na jedan od njih.

Ako se stanje vraća ili sam SSH zapne

Ponavljajuće loše stanje upućuje na nešto što mijenja zastavice bez vraćanja: datoteka za pokretanje, omotna skripta, multiplekser koji resetira pogrešan prozor ili aplikacija koja umre držeći sirovi način. Dodajte uvjetnu provjeru koja izvješćuje stanje umjesto bezuvjetnog resetiranja, jer sveobuhvatni reset skriva uzrok i može nadjačati namjerne postavke.

Kada i običan SSH promet zapne ili popravak ništa ne promijeni, terminal prestaje biti osumnjičenik.

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

Zastoj koji se pojavljuje samo tijekom velikih prijenosa upućuje na problem MTU-a na putu, dok onaj koji guta i pojedinačne pritiske upućuje na put ili poslužitelj, a ne na veličinu paketa. Držite dokaze s terminala odvojeno od mrežnih dokaza, jer uređivač koji radi u drugoj sesiji nije dokaz da je prvi terminal ikada bio zdrav.

Povezani članci