SSH сесијата умира со VPN: tmux или извршувач на задачи?
Повторно поврзаниот тунел не го оживува стариот SSH сокет. Одлучете дали на работата ѝ треба терминална сесија на која повторно се поврзувате или задача со запишан резултат.
Вашиот показател за 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Што и да изберете, проверете го запишаниот резултат пред да пуштите нешто повторно. Недостапниот последен ред ви кажува што видел преносниот сметач, а не што фиксирал серверот. Токму таа разлика е причината да ја држите работата надвор од врската од самиот почеток, а моделот на откачување и повторно прикачување е нејзината најмала верзија.