Индикатор VPN-а постане зелен, рута се врати, а SSH прозор који сте оставили отворен никад више не враћа знак за унос. Враћање руте не враћа TCP разговор који ју је користио, па је све што је уписано у тај прозор изгубљено. Ако је права брига међумеморија уређивача или дуга миграција, решење је да престанете да везујете тај посао за једну везу. tmux и покретач задатака решавају различите половине тог проблема.

Поново повезан VPN не наставља сокет

TCP не познаје настављање после промене адресе. SSH веза се идентификује по оба краја, а кад се тунел поново изгради, локална адреса може да се промени и стари сокет је мртав. Сервер то примети на крају, али ваш терминал то примети одмах.

Клијентски keepalive открива мртвог партнера раније. Не враћа сесију и не може да обнови наредбу која је већ радила. Keepalive је детектор, а не алат за опоравак. Не говори ништа о томе да ли је удаљена наредба преживела.

Ставите посао на удаљени домаћин

Направите сесију на удаљеном домаћину, а не на преносном рачунару. Повежите се као обично, покрените tmux тамо и покрените уређивач или миграцију унутар њега. Одвојите се подразумеваним префиксом и сесија наставља да ради док SSH веза нестаје. Покретање tmux-а локално штити вашу љуску од затвореног прозора, а не удаљену наредбу од мртвог тунела.

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

Кад се VPN врати, отворите нову SSH везу ка истом домаћину и поново се прикључите по имену. Трајан објекат је сесија, а не веза. Дајте јој име које ћете препознати и после недељу дана.

tmux наспрам покретача задатака

tmux одржава интерактивни процес живим док је домаћин укључен. Покретач задатака или менаџер услуга одржава неинтерактивни задатак живим, бележи његов излазни статус и преживљава потпуни завршетак SSH сесије. Прво је за посао који посматрате; друго за посао који планирате и касније прегледате.

Ниједно не преживљава поновно покретање осим ако домаћин није конфигурисан да га врати. tmux сесија умире са машином, а пролазан задатак умире са подизањем система осим ако није регистрован као јединица. Изаберите према ономе што посао мора да надживи.

Оба приступа захтевају и дневник који можете да читате после поновног повезивања. Без њега знате да процес постоји, али не шта је урадио. Запишите путању дневника уз име сесије.

Одлучите према ономе што мора да преживи

Одлучите према најгорем што може да се догоди ако се посао заустави на пола. Сесија уређивача губи несачуване међумеморије, што је незгодно али обновљиво. Миграција која потврди половину својих промена није, и то говори у прилог покретачу са забележеним исходом. Ако је задатак интерактиван и дуг, tmux плус написани дневник обично је довољно.

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

Шта год да изаберете, прегледајте забележени исход пре него што било шта поново покренете. Недостајући последњи ред вам каже шта је преносни рачунар видео, а не шта је сервер потврдио. Управо та разлика је разлог да посао од почетка држите изван везе, а модел одвајања и поновног прикључивања је његова најмања верзија.

Повезани чланци