Indikátor VPN zezelená, trasa je zpět a okno SSH, které jste nechali otevřené, už nikdy nevrátí výzvu. Obnovení cesty neobnoví konverzaci TCP, která ji používala, takže vše, co jste do toho okna napsali, je pryč. Pokud je skutečnou starostí buffer editoru nebo dlouhá migrace, řešením je přestat tu práci vázat na jedno připojení. tmux a spouštěč úloh řeší různé poloviny tohoto problému.

Znovu připojená VPN socket neobnoví

TCP nezná pojem obnovení po změně adresy. Připojení SSH je určeno oběma koncovými body, a když se tunel znovu postaví, místní adresa se může změnit a starý socket je mrtvý. Server si toho všimne nakonec, ale váš terminál si toho všimne okamžitě.

Klientský keepalive odhalí mrtvý protějšek dříve. Relaci to nevrátí a nedokáže obnovit příkaz, který už běžel. Keepalive je detektor, ne nástroj obnovy. Nic neříká o tom, zda vzdálený příkaz přežil.

Přesuňte práci na vzdálený hostitel

Vytvořte relaci na vzdáleném hostiteli, ne na notebooku. Připojte se jako obvykle, spusťte tam tmux a v něm spusťte editor nebo migraci. Odpojte se výchozím prefixem a relace běží dál, i když připojení SSH zmizí. Lokální spuštění tmux ochrání váš shell před zavřeným oknem, ne vzdálený příkaz před mrtvým tunelem.

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

Až je VPN zpět, otevřete nové připojení SSH ke stejnému hostiteli a připojte se zpět podle názvu. Trvalým objektem je relace, ne připojení. Pojmenujte ji tak, abyste ji poznali i za týden.

tmux versus spouštěč úloh

tmux drží interaktivní proces naživu, dokud hostitel běží. Spouštěč úloh nebo správce služeb drží neinteraktivní úlohu naživu, zaznamená její stav ukončení a přežije i úplné skončení relace SSH. První je pro práci, kterou sledujete; druhý pro práci, kterou plánujete a později kontrolujete.

Ani jedno nepřežije restart, pokud hostitel není nastaven, aby to obnovil. Relace tmux umírá se strojem a přechodná úloha umírá s bootem, pokud nebyla zaregistrována jako jednotka. Vybírejte podle toho, co má práce přežít.

Oba přístupy také potřebují log, který si po opětovném připojení přečtete. Bez něj víte, že proces existuje, ale ne co udělal. Zapište cestu k logu vedle názvu relace.

Rozhodněte podle toho, co musí přežít

Rozhodujte podle nejhorší věci, která se může stát, když se práce zastaví v polovině. Relace editoru ztratí neuložené buffery, což je otravné, ale obnovitelné. Migrace, která potvrdí polovinu svých změn, ne, a to mluví pro spouštěč se zaznamenaným výsledkem. Pokud je úloha interaktivní a dlouhá, tmux plus psaný log obvykle stačí.

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

Ať už zvolíte cokoli, než cokoli spustíte znovu, prohlédněte si zaznamenaný výsledek. Chybějící poslední řádek vám říká, co viděl notebook, ne co potvrdil server. Právě tento rozdíl je důvod držet práci mimo připojení od začátku, a model odpojení a opětovného připojení je jeho nejmenší verzí.

Související články