SSH sesija umire s VPN-om: tmux ili pokretač poslova?
Ponovno povezan tunel ne oživljava stari SSH socket. Odlučite treba li posao terminalsku sesiju kojoj se ponovno priključujete ili posao sa zabilježenim ishodom.
Indikator VPN-a postane zelen, ruta se vrati, a SSH prozor koji ste ostavili otvoren nikad više ne vraća znak za unos. Vraćanje rute ne vraća TCP razgovor koji ju je koristio, pa je sve što je upisano u taj prozor izgubljeno. Ako je prava briga međuspremnik uređivača ili duga migracija, rješenje je prestati vezati taj posao za jednu vezu. tmux i pokretač poslova rješavaju različite polovice tog problema.
Ponovno povezan VPN ne nastavlja socket
TCP ne poznaje nastavljanje nakon promjene adrese. SSH veza identificira se po obama krajnjim točkama, a kad se tunel ponovno izgradi, lokalna se adresa može promijeniti i stari socket je mrtav. Poslužitelj to primijeti na kraju, ali vaš terminal to primijeti odmah.
keepalive na strani klijenta otkriva mrtvog partnera ranije. Ne vraća sesiju i ne može obnoviti naredbu koja je već radila. Keepalive je detektor, a ne alat za oporavak. Ne govori ništa o tome je li udaljena naredba preživjela.
Stavite posao na udaljenog hosta
Stvorite sesiju na udaljenom hostu, a ne na prijenosniku. Povežite se kao obično, pokrenite tmux ondje i pokrenite uređivač ili migraciju unutar njega. Odvojite se zadanim prefiksom i sesija nastavlja raditi dok SSH veza nestaje. Pokretanje tmuxa lokalno štiti vašu ljusku od zatvorenog prozora, a ne udaljenu naredbu od mrtvog tunela.
ssh [email protected]
tmux new-session -s office-workKad se VPN vrati, otvorite novu SSH vezu prema istom hostu i ponovno se priključite po imenu. Trajan objekt je sesija, a ne veza. Dajte joj ime koje ćete prepoznati i tjedan dana kasnije.
tmux nasuprot pokretaču poslova
tmux održava interaktivni proces živim dok je host uključen. Pokretač poslova ili upravitelj usluga održava neinteraktivni posao živim, bilježi njegov izlazni status i preživljava potpuni završetak SSH sesije. Prvo je za posao koji promatrate; drugo za posao koji planirate i pregledavate kasnije.
Nijedno ne preživljava ponovno pokretanje osim ako host nije konfiguriran da ga vrati. tmux sesija umire sa strojem, a prolazni posao umire s podizanjem sustava osim ako nije registriran kao jedinica. Odaberite prema onome što posao mora nadživjeti.
Oba pristupa trebaju i zapisnik koji možete čitati nakon ponovnog povezivanja. Bez njega znate da proces postoji, ali ne što je učinio. Zapišite putanju zapisnika uz ime sesije.
Odlučite prema onome što mora preživjeti
Odlučite prema najgorem što se može dogoditi ako se posao zaustavi na pola. Sesija uređivača gubi nespremljene međuspremnike, što je neugodno ali obnovljivo. Migracija koja potvrdi polovicu svojih promjena nije, i to govori u prilog pokretaču sa zabilježenim ishodom. Ako je posao interaktivan i dug, tmux plus napisani zapisnik obično je dovoljno.
systemd-run --user --unit=migrate-customers --collect ./migrate.shŠto god odabrali, pregledajte zabilježeni ishod prije nego što bilo što ponovno pokrenete. Nedostatak zadnjeg retka govori vam što je prijenosnik vidio, a ne što je poslužitelj potvrdio. Upravo je ta razlika razlog da posao od početka držite izvan veze, a model odvajanja i ponovnog priključivanja je njegova najmanja verzija.