Jūsų VPN indikatorius tampa žalias, maršrutas grįžta, o paliktas atidarytas SSH langas niekada nebegrąžina kvietimo. Maršruto atkūrimas neatkuria TCP pokalbio, kuris jį naudojo, todėl viskas, kas buvo įrašyta tame lange, dingo. Jei tikrasis rūpestis yra redaktoriaus buferis ar ilga migracija, sprendimas yra nustoti rišti tą darbą prie vienos jungties. tmux ir užduočių vykdyklė sprendžia skirtingas tos problemos puses.

Iš naujo prijungtas VPN lizdo netęsia

TCP neturi supratimo apie tęsimą po adreso pasikeitimo. SSH jungtis identifikuojama pagal abu galus, o kai tunelis atstatomas, vietinis adresas gali pasikeisti ir senas lizdas yra negyvas. Serveris tai pastebi galiausiai, o jūsų terminalas pastebi iškart.

Kliento keepalive anksčiau aptinka negyvą partnerį. Jis negrąžina sesijos ir negali atkurti komandos, kuri jau vyko. Keepalive yra aptikėjas, o ne atkūrimo įrankis. Jis nieko nesako apie tai, ar nuotolinė komanda išliko.

Dėkite darbą į nuotolinį hostą

Sukurkite sesiją nuotoliniame hoste, o ne nešiojamajame kompiuteryje. Prisijunkite kaip įprastai, ten paleiskite tmux ir jame vykdykite redaktorių arba migraciją. Atsijunkite numatytuoju priešdėliu, ir sesija veikia toliau, kol SSH jungtis dingsta. Vietinis tmux paleidimas apsaugo jūsų apvalkalą nuo uždaryto lango, o ne nuotolinę komandą nuo negyvo tunelio.

ssh [email protected]
tmux new-session -s office-work

Kai VPN grįš, atidarykite naują SSH jungtį prie to paties hosto ir vėl prisijunkite pagal pavadinimą. Ilgaamžis objektas yra sesija, o ne jungtis. Suteikite jai vardą, kurį atpažinsite ir po savaitės.

tmux prieš užduočių vykdyklę

tmux palaiko interaktyvų procesą gyvą, kol hostas įjungtas. Užduočių vykdyklė ar paslaugų tvarkyklė palaiko neinteraktyvią užduotį gyvą, įrašo jos išėjimo būseną ir išgyvena visišką SSH sesijos pabaigą. Pirmasis skirtas darbui, kurį stebite, antrasis – darbui, kurį suplanuojate ir vėliau patikrinate.

Nė vienas neišgyvena perkrovimo, nebent hostas sukonfigūruotas jį atkurti. tmux sesija miršta kartu su mašina, o laikina užduotis miršta kartu su įkrovimu, nebent ji buvo užregistruota kaip vienetas. Rinkitės pagal tai, ką darbas turi pergyventi.

Abiem būdams taip pat reikia žurnalo, kurį galėsite perskaityti po prisijungimo iš naujo. Be jo žinote, kad procesas egzistuoja, bet ne ką jis padarė. Užsirašykite žurnalo kelią šalia sesijos pavadinimo.

Spręskite pagal tai, kas turi išlikti

Spręskite pagal tai, kas blogiausia gali nutikti, jei darbas sustoja pusiaukelėje. Redaktoriaus sesija praranda neišsaugotus buferius, o tai erzina, bet atkuriama. Migracija, kuri įtvirtina pusę savo pakeitimų, ne tokia, ir tai palaiko vykdyklę su įrašytu rezultatu. Jei užduotis interaktyvi ir ilga, tmux ir užrašytas žurnalas paprastai pakanka.

systemd-run --user --unit=migrate-customers --collect ./migrate.sh

Kad ir ką pasirinktumėte, prieš ką nors paleisdami iš naujo patikrinkite įrašytą rezultatą. Trūkstama paskutinė eilutė pasako, ką matė nešiojamasis kompiuteris, o ne ką įtvirtino serveris. Būtent šis skirtumas yra priežastis laikyti darbą už jungties ribų nuo pat pradžių, o atsijungimo ir vėl prisijungimo modelis yra mažiausia to versija.

Susiję straipsniai