vim jumittuu SSH:n yli? Tarkista stty ennen kuin syytät VPN:ää
SSH:n yli jumittunut editori on yleensä terminaalin tilan ongelma, ei katkennut tunneli. Lue stty oikealta pseudoterminaalilta ja korjaa vain se.
Tällaiset istunnot pysyvät yhdistettyinä, kun editori käynnistyy, ja sitten näyttö lakkaa päivittymästä, vaikka SSH-prosessi on selvästi elossa. Kirjoittaminen ei tuota mitään, Ctrl-C näyttää tekevän ei mitään, ja ilmeinen johtopäätös on, että VPN pudotti jotain. Useimmiten tunneli on kunnossa ja etäinen pseudoterminaali on tilassa, jota kukaan ei tarkoittanut, koska kaiku, kanoninen syöte ja vuonhallinta elävät terminaalissa eivätkä verkossa. Sen selvittäminen, mikä näistä kolmesta siirtyi, on kahden komennon työ.
Jumittuminen elää terminaalissa, ei tunnelissa
Pseudoterminaali kuljettaa enemmän kuin tavuja. Se pitää rivikurin liput, jotka päättävät, kaikutaanko syöte, odottavatko lukemiset uutta riviä, tuottavatko tietyt merkit signaaleja ja voidaanko tuloste pysäyttää ohjausmerkillä. Interaktiivinen editori vaihtaa tuon terminaalin raakatilaan koko ajaksi ja sen odotetaan palauttavan aiemmat asetukset poistuttaessa. Kun palautusta ei tapahdu, kuori johon palaat, ei ole se kuori jonka jätit, vaikka yhteys ei koskaan katkennut.
Vertaa terminaaleja ennen kuin päättelet mitään. Toinen istunto samalla editorilla todistaa, että asiakasohjelma ja polku pystyvät työhön; se ei kerro mitään terminaalista, jonka liput ovat rikki.
Lue asetukset terminaalilta, joka jumittui
Tunnista ensin laite ja lue sitten sen tilan molemmat muodot. Luettava muoto näyttää, mikä on asetettu, ja koneumuoto on se, jonka voit syöttää takaisin myöhemmin.
tty
stty -a
stty -g
Kolme lippuryhmää selittää useimmat näistä raporteista. Kaikuasetukset päättävät, näkyvätkö painallukset lainkaan, joten kaiun pois päältä jättänyt terminaali näyttää kuolleelta, kun taas kuori vastaanottaa jokaisen merkin. Kanoninen tila päättää, näkeekö ohjelma syötteen rivi kerrallaan, joten kanoniseen tilaan jätetty terminaali saa raakatilaisen sovelluksen näyttämään siltä kuin se jättäisi näppäimet huomiotta Enteriin asti. Vuonhallinnan asetukset päättävät, totteleeko terminaali XON- ja XOFF-merkkejä, ja tämä ryhmä tuottaa kolmesta vakuuttavimman vale jumittumisen.
Tallenna tuloste ennen kuin muutat mitään, varsinkin kun istunto kuljettaa mukautettuja näppäinsidontoja, joista joku on riippuvainen. Koneumuoto on turvallisin tallenne, varauksella että se on toteutuskohtainen ja samantyyppisen järjestelmän tulisi palauttaa se, joka sen tuotti.
Korjaa juuri se terminaali, älä istuntoa jossa kirjoitat
Vakiokorjaus palauttaa terveen profiilin, jonka käsikirjasivu listaa, ja se vaikuttaa vain yhteen terminaaliin. Jos editori pitää vielä tallentamatonta työtä siinä terminaalissa, jätä se rauhaan kunnes työ on tallennettu.
Toisesta kuoresta kohdista jumittunut laite nimenomaisesti, jotta terminaali, jossa työskentelet, pysyy koskemattomana.
stty -F /dev/pts/7 -a
stty -F /dev/pts/7 sane
Tyhjä näyttö turmeltuneella kuvalla on eri ongelma kuin rikki mennyt rivikuri, ja reset-ohjelma hoitaa sen lähettämällä terminaalin alustussekvenssejä. Kokeile ensin tilan korjausta, koska se muuttaa asetuksia, joita voit tutkia, kun taas reset-sekvenssi kirjoittaa näytön uudelleen eikä selitä mitään siitä, miten se meni rikki.
Ctrl-S-ansa vakuuttavan jumittumisen takana
Kun ohjelmistopohjainen vuonhallinta on käytössä ja tavalliset merkit on määritetty, Ctrl-S käskee terminaalia lopettamaan tulosteen lähettämisen ja Ctrl-Q käskee jatkamaan. Istunto pysyy elossa koko ajan, yksi Ctrl-Q on usein koko korjaus, eikä mitään näy missään lokissa, ja näin tämä jumittuminen selviää niin monesta eskaloinnista.
Tutki todelliset asetukset sen sijaan että olettaisit ne. Aloitus- ja pysäytysmerkit voidaan määrittää uudelleen tai poistaa käytöstä, eikä vuonhallinnaltaan pois päältä oleva terminaali reagoi kumpaankaan.
Jos tila palaa tai SSH itse takkuilee
Toistuva huono tila viittaa johonkin, joka muuttaa lippuja palauttamatta niitä: käynnistystiedosto, kääreskripti, väärän ikkunan nollauttava multiplekseri tai sovellus, joka kuolee pitäessään raakatilaa. Lisää ehdollinen tarkistus, joka raportoi tilan, ehdotonta nollauksen sijaan, koska yleinen nollaus piilottaa syyn ja voi ohittaa tarkoitukselliset asetukset.
Kun myös tavallinen SSH-liikenne takkuilee tai korjaus ei muuta mitään, terminaali lakkaa olemasta epäilty.
ssh -vvv [email protected]
ping -M do -s 1400 -c 3 host.example.com
Vain suurten siirtojen aikana esiintyvä takkuilu viittaa polun MTU-ongelmaan, kun taas yksittäisiä painalluksiakin nielevä viittaa polkuun tai palvelimeen eikä paketin kokoon. Pidä terminaalin todisteet erillään verkon todisteista, koska toisessa istunnossa toimiva editori ei ole todiste siitä, että ensimmäinen terminaali oli koskaan terve.