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

Эмнени тандасаңыз да, бир нерсени кайра иштетүүдөн мурун жазылган натыйжаны текшериңиз. Акыркы саптын жоктугу ноутбук эмнени көргөнүн айтат, сервер эмнени бекиткенин эмес. Ушул айырма ишти башынан эле туташуудан тышкары кармоонун себеби, ал эми ажыроо жана кайра туташуу модели анын эң кичине формасы.

Тектеш макалалар