Індыкатар VPN зелянее, маршрут вяртаецца, а акно SSH, якое вы пакінулі адкрытым, ніколі не вяртае запрашэнне. Аднаўленне шляху не аднаўляе TCP-размову, якая ім карысталася, таму ўсё, што было набрана ў тым акне, знікла. Калі сапраўдная турбота — буфер рэдактара ці доўгая міграцыя, рашэнне ў тым, каб перастаць прывязваць гэтую працу да аднаго злучэння. tmux і запускальнік заданняў вырашаюць розныя палавіны гэтай праблемы.

Перападключаны VPN не аднаўляе сокет

TCP не мае паняцця аднаўлення пасля змены адраса. Злучэнне SSH вызначаецца абодвума канцавымі пунктамі, і калі тунэль перабудоўваецца, лакальны адрас можа змяніцца, а стары сокет памірае. Сервер заўважае гэта урэшце, а ваш тэрмінал заўважае адразу.

Кліенцкі запыт падтрымання сувязі выяўляе мёртвага суразмоўцу раней. Ён не вяртае сеанс і не можа аднавіць каманду, якая ўжо выконвалася. Падтрыманне сувязі — гэта выяўляльнік, а не сродак аднаўлення. Ён нічога не кажа пра тое, ці выжыла аддаленая каманда.

Размясціце працу на аддаленым хасце

Стварыце сеанс на аддаленым хасце, а не на ноўтбуку. Падключыцеся як звычайна, запусціце там tmux і запускайце рэдактар ці міграцыю ўнутры яго. Адлучыцеся стандартным прэфіксам — і сеанс працягвае працаваць, пакуль злучэнне SSH знікае. Лакальны запуск tmux абараняе вашу абалонку ад закрытага акна, а не аддаленую каманду ад мёртвага тунэля.

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

Пасля вяртання VPN адкрыйце новае злучэнне SSH да таго ж хоста і далучыцеся па назве. Доўгавечны аб'ект — гэта сеанс, а не злучэнне. Дайце яму назву, якую вы пазнаеце і праз тыдзень.

tmux супраць запускальніка заданняў

tmux падтрымлівае інтэрактыўны працэс жывым, пакуль хост працуе. Запускальнік заданняў ці менеджар службаў падтрымлівае няінтэрактыўнае заданне жывым, запісвае статус яго выхаду і перажывае поўнае завяршэнне сеансу SSH. Першы — для працы, за якой вы назіраеце; другі — для працы, якую вы плануеце і потым правяраеце.

Ні адзін не перажывае перазагрузку, калі хост не наладжаны яго аднаўляць. Сеанс tmux памірае разам з машынай, а кароткае заданне памірае разам з загрузкай, калі яно не зарэгістравана як unit. Выбірайце паводле таго, што праца павінна перажыць.

Абодва падыходы таксама патрабуюць журнала, які можна прачытаць пасля падключэння. Без яго вы ведаеце, што працэс існуе, але не што ён зрабіў. Запішыце шлях да журнала побач з назвай сеансу.

Вырашайце па тым, што павінна выжыць

Вырашайце па найгоршым, што можа здарыцца, калі праца спыніцца на паўдарозе. Сеанс рэдактара губляе незахаваныя буферы — гэта прыкра, але аднаўляльна. Міграцыя, якая фіксуе палову сваіх змен, — не, і гэта схіляе да запускальніка з запісаным вынікам. Калі заданне інтэрактыўнае і доўгае, tmux плюс запісаны журнал звычайна дастатковыя.

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

Што б вы ні выбралі, праверце запісаны вынік, перш чым нешта перазапускаць. Адсутны апошні радок гаворыць пра тое, што бачыў ноўтбук, а не пра тое, што захаваў сервер. Гэта розніца і ёсць прычына трымаць працу па-за злучэннем з самага пачатку, а мадэль адключэння і далучэння — найменшая яе форма.

Падобныя артыкулы