يُصبح مؤشر 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 مع الجهاز، وتموت مهمة عابرة مع الإقلاع إلا إذا سُجّلت كوحدة. اختر وفق ما يجب أن يعيشه العمل.

يحتاج النهجان أيضًا إلى سجل يمكنك قراءته بعد إعادة الاتصال. بدونه تعرف أن العملية موجودة، لا ما فعلته. اكتب مسار السجل بجانب اسم الجلسة.

قرّر بما يجب أن ينجو

قرّر بناءً على أسوأ ما يمكن أن يحدث إذا توقف العمل في منتصفه. جلسة محرر تفقد المخازن غير المحفوظة، وهذا مزعج لكنه قابل للاستعادة. الترحيل الذي يثبّت نصف تغييراته ليس كذلك، وهذا يرجّح مُشغّلًا له نتيجة مسجّلة. إن كانت المهمة تفاعلية وطويلة، فإن tmux مع سجل مكتوب يكفي عادةً.

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

أيًّا كان اختيارك، افحص النتيجة المسجّلة قبل إعادة تشغيل أي شيء. غياب السطر الأخير يخبرك بما رآه الحاسوب المحمول، لا بما ثبّته الخادم. هذا الفرق هو سبب إبعاد العمل عن الاتصال أصلًا، وهو ما يقدّم نموذج الفصل وإعادة الارتباط في أصغر صورة.

مقالات ذات صلة