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.

Aiheeseen liittyvät artikkelit