vim frys over SSH? Sjekk stty før du gir VPN skulda
Ein frosen editor over SSH er vanlegvis eit problem med terminaltilstanden, ikkje ein broten tunnel. Les stty på rett pseudoterminal, og reparer deretter berre den.
Sesjonar som dette held seg tilkopla medan editoren startar, og deretter sluttar skjermen å oppdatere sjølv om SSH-prosessen tydeleg er i live. Tasting gir ingenting, Ctrl-C ser ut til å ikkje gjere noko, og den openberre konklusjonen er at VPN-en mista noko. Som oftast er tunnelen i orden og den eksterne pseudoterminalen er i ein tilstand ingen hadde tenkt seg, fordi ekko, kanonisk inndata og flytkontroll bur i terminalen og ikkje i nettet. Å finne ut kven av dei tre som flytta seg er ein jobb på to kommandoar.
Frysinga bur i terminalen, ikkje i tunnelen
Ein pseudoterminal ber meir enn bytar. Han held linjedisiplinflagg som avgjer om inndata blir ekko, om lesingar ventar på ei ny line, om visse teikn genererer signal, og om utdata kan stoppast av eit kontrollteikn. Ein interaktiv editor set den terminalen i rå modus for heile varigheita og skal gjere om att dei førre innstillingane ved avslutning. Når attopprettinga ikkje skjer, er skalet du kjem tilbake til ikkje skalet du forlét, sjølv om sambandet aldri vart brote.
Samanlikn terminalar før du konkluderer noko. Ein annan sesjon med same editor provar at klienten og vegen kan gjere jobben; han seier ingenting om terminalen der flagga er øydelagde.
Les innstillingane på terminalen som fraus
Identifiser eininga først, og les deretter begge formene for tilstanden. Den lesbare forma viser kva som er sett, og maskinforma er den du kan mate tilbake seinare.
tty
stty -a
stty -g
Tre flaggrupper forklarer dei fleste av desse rapportane. Ekkoinnstillingar avgjer om tastetrykk i det heile visast, så ein terminal med ekko av verkar død medan skalet tek imot kvart teikn. Kanonisk modus avgjer om eit program ser inndata éi line om gongen, så ein terminal som er latt i kanonisk modus får ein applikasjon i rå modus til å sjå ut som han ignorerer tastar til Enter. Flytkontrollinnstillingar avgjer om terminalen lyder teikna XON og XOFF, og den gruppa lagar den mest overtydande falske frysinga av dei tre.
Registrer utdataene før du endrar noko, særleg når sesjonen ber eigne tastebindingar som nokon er avhengige av. Maskinforma er den tryggaste registreringa, med atterhald om at ho er implementasjonsspesifikk og bør gjerast om att av same slags system som laga ho.
Reparer den eine terminalen, ikkje sesjonen du skriv i
Standardreparasjonen gjer om att den sunne profilen som manualsida listar, og han påverkar berre éin terminal. Om editoren framleis held ulagra arbeid i den terminalen, lat han vere i fred til arbeidet er lagra.
Frå eit anna skal, rett deg eksplisitt mot den frosne eininga slik at terminalen du arbeider i blir urørt.
stty -F /dev/pts/7 -a
stty -F /dev/pts/7 sane
Ein tom skjerm med øydelagd vising er eit anna problem enn broten linjedisiplin, og reset-programmet handterer det ved å sende ut terminalinitieringssekvensar. Prøv tilstandsreparasjonen først, fordi han endrar innstillingar du kan inspisere, medan reset-sekvensen skriv om skjermen og ikkje forklarer noko om korleis han vart øydelagd.
Ctrl-S-fella bak ei overtydande frysing
Når programvareflytkontroll er slått på og dei vanlege teikna er tildelte, seier Ctrl-S til terminalen at han skal slutte å sende utdata, og Ctrl-Q seier at han skal halde fram. Sesjonen held seg i live heile tida, éin einaste Ctrl-Q er ofte heile reparasjonen, og ingenting visast i nokon logg, og slik overlever denne frysinga så mange eskaleringar.
Inspiser dei faktiske innstillingane i staden for å gjete dei. Start- og stoppteikna kan tildelast på nytt eller slåast av, og ein terminal med flytkontroll av reagerer ikkje på nokon av dei.
Om tilstanden kjem tilbake, eller SSH sjølv stoppar
Ein tilbakevendande dårleg tilstand peikar på noko som endrar flagga utan å gjere dei om att, som ei oppstartsfil, eit innpakningsskript, ein multipleksar som nullstiller feil vindauge, eller ein applikasjon som døyr medan han held rå modus. Legg til ein vilkårsstyrt sjekk som rapporterer tilstanden i staden for ein vilkårslaus nullstilling, fordi ein generell nullstilling løyner årsaka og kan overstyre medvitne innstillingar.
Når vanleg SSH-trafikk også stoppar, eller reparasjonen ikkje endrar noko, sluttar terminalen å vere den mistenkte.
ssh -vvv [email protected]
ping -M do -s 1400 -c 3 host.example.com
Ei fastlåsing som berre visast under store overføringar tyder på eit MTU-problem på vegen, medan ei som også svel einkelttastetrykk peikar på vegen eller tenaren og ikkje på pakkestorleiken. Hald terminalprova åtskilde frå nettverksprova, fordi ein fungerande editor i ein annan sesjon ikkje er prov for at den første terminalen nokon gong var sunn.