المشكلة: قطع اتصال SSH يقتل عملك
شغّلت أمرًا طويلًا على خادم بعيد عبر ssh، انقطع الإنترنت لثانية، والعملية توقّفت معه. nohup و& يبقيان العملية حيّة، لكن لا يمكنك "الرجوع" لمتابعة مخرجاتها تفاعليًّا. الحل: مضاعِف طرفية (terminal multiplexer) مثل tmux — يفتح جلسة طرفية مستقلّة عن اتصال SSH نفسه، تقدر "تفصلها" (detach) وتتركها تعمل، ثم "تعود" (attach) لها لاحقًا من أي اتصال.
التثبيت
sudo apt install tmux # Debian/Ubuntu
sudo dnf install tmux # Fedora/RHEL
البدء بجلسة
tmux new -s work # جلسة جديدة باسم work
tmux ls # كل الجلسات الحالية
tmux attach -t work # العودة لجلسة موجودة
الفصل والعودة
كل أوامر tmux تبدأ بمفتاح البادئة (prefix)، افتراضيًّا Ctrl+b، ثم حرف الأمر:
Ctrl+b d # فصل الجلسة (detach) — تستمر بالخلفية
tmux attach -t work # عودة لها من أي طرفية
💡 اطلع فوق: تشغّل سكربت نسخ احتياطي طويل داخل
tmux، تفصل الجلسة، تغلق الطرفية بالكامل — والسكربت يستمر على الخادم حتى تعود له.
النوافذ (Windows)
نافذة واحدة داخل نفس الجلسة تقدر تفتح منها أكثر من "شاشة":
Ctrl+b c # نافذة جديدة
Ctrl+b n # النافذة التالية
Ctrl+b p # النافذة السابقة
Ctrl+b 0 # قفز لرقم نافذة محدّد
اللوحات (Panes) — تقسيم الشاشة
Ctrl+b % # تقسيم عمودي
Ctrl+b " # تقسيم أفقي
Ctrl+b ⬅➡⬆⬇ # التنقّل بين اللوحات
إنهاء جلسة نهائيًّا
exit # من داخل اللوحة، أو Ctrl+d
tmux kill-session -t work # من خارجها
البديل الأقدم: screen
screen مثبّت مسبقًا على أغلب التوزيعات، ويعمل بنفس الفكرة لكن بمفتاح بادئة مختلف (Ctrl+a بدل Ctrl+b):
screen -S work # جلسة جديدة باسم work
Ctrl+a d # فصل الجلسة
screen -r work # العودة لها
screen -ls # كل الجلسات
| tmux | screen | |
|---|---|---|
| شريط الحالة | افتراضيًّا يظهر (نوافذ، وقت، اسم الجلسة) | غير موجود افتراضيًّا |
| مثبّت مسبقًا | غالبًا لا، يحتاج تثبيت | غالبًا نعم على معظم التوزيعات |
| مشاركة الجلسة بين مستخدمين | ممكن لكن أعقد | مدعومة بشكل مباشر أكثر |
| التقسيم لعدة لوحات | مدمج وسهل | يحتاج إعداد إضافي |
💡 إذا كان الخادم لا يسمح بالتثبيت وعندك
screenجاهز، استخدمه — نفس الفكرة بمفاتيح مختلفة. إن كان بإمكانك الاختيار،tmuxأشهر اليوم وأسهل بالتقسيم والمراقبة.