جلساتي كانت تموت مع كل انقطاع اتصال: كيف أنقذني `tmux` من جحيم إعادة بدء العمل من الصفر؟

يا جماعة الخير، السلام عليكم ورحمة الله.

اسمحولي أبدأ بقصة صارت معي قبل كم سنة، قصة بتلخص معاناة كل مبرمج بيشتغل على سيرفرات بعيدة. كانت الساعة حوالي 2 بعد منتصف الليل، وأنا في مكتبي الصغير في رام الله، منهمك في تدريب نموذج ذكاء اصطناعي على سيرفر قوي مستأجره بالخارج. العملية كانت محتاجة ساعات طويلة، يمكن 8 أو 9 ساعات متواصلة. كنت متابع النتائج أول بأول، أعدل بعض المتغيرات، وأسجل ملاحظاتي، والقهوة طبعاً ما كانت تفارقني.

وفجأة، وبدون أي سابق إنذار… “فصل النت”. الشاشة أمامي تجمدت، وظهرت رسالة “Connection closed by remote host”. قلبي وقع في رجلي. حاولت أرجع أتصل بالسيرفر بسرعة، لكن كنت عارف المصيبة اللي بستناني. لما فتحت الطرفية (Terminal) من جديد، لقيت العملية اللي كانت شغالة من 4 ساعات ميتة. راحت. تبخرت. كل التقدم اللي صار راح هباءً منثوراً. وقتها حسيت بقهر ما بعده قهر، وصرت أحكي لحالي “يا حبيبي، راح كل الشغل على الفاضي!”.

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

ما هو الـ `tmux` وليش بنحتاجه؟ (What is `tmux` and why do we need it?)

ببساطة شديدة، `tmux` هو اختصار لـ “Terminal Multiplexer” أو “معدد الطرفيات”. فكر فيه كأنه “مدير جلسات” للطرفية الخاصة بك على السيرفر. لما تتصل بالسيرفر عن طريق SSH وتبدأ شغل، أنت فعلياً بتفتح جلسة مرتبطة باتصالك مباشرة. لو انقطع هذا الاتصال لأي سبب (نت ضعيف، لابتوب طفى، أو حتى سكرت الشباك بالغلط)، الجلسة بتموت وكل الأوامر والبرامج اللي شغالة فيها بتموت معها.

هنا يأتي دور `tmux` السحري. الـ `tmux` بيخلق جلسة منفصلة “ومستمرة” على السيرفر نفسه. أنت بتتصل بهذه الجلسة. لو انقطع اتصالك، الجلسة بتضلها عايشة وشغالة في الخلفية بكل ما فيها. ولما يرجع الاتصال، بتقدر ترجع لنفس الجلسة وتلاقي كل شي زي ما تركته بالضبط. كأنك ما رحت ولا جيت!

باختصار: `tmux` هو بوليصة تأمين لشغلك على السيرفرات البعيدة.

يلا نبلش: تثبيت وبدء أول جلسة `tmux`

الأمور أبسط مما بتتخيل. خلينا نمشي خطوة بخطوة.

التثبيت (Installation)

أول شي، لازم نثبت الأداة على السيرفر اللي بنشتغل عليه (مش على جهازنا المحلي). الأمر بيعتمد على توزيعة لينكس اللي بتستخدمها:

  • لأنظمة Debian/Ubuntu:
sudo apt update
sudo apt install tmux
  • لأنظمة CentOS/RHEL/Fedora:
sudo yum install tmux
# أو لو بتستخدم dnf
sudo dnf install tmux

وهيك بنكون ثبتنا الأداة. بسيطة، صح؟

بدء جلسة جديدة (Starting a new session)

بعد التثبيت، افتح الطرفية واكتب الأمر التالي:

tmux

رح تلاحظ إنه شكل الطرفية تغير شوي، وظهر شريط أخضر في الأسفل. مبروك! أنت الآن داخل أول جلسة `tmux` الك. لكن الطريقة الأفضل هي إنك تعطي الجلسة اسم عشان تقدر تميزها بعدين.

tmux new -s my_project

هذا الأمر بينشئ جلسة جديدة اسمها “my_project”. تسمية الجلسات عادة ممتازة جداً لما يكون عندك أكثر من مشروع شغال عليهم بنفس الوقت.

التحكم في `tmux`: الأوامر الأساسية اللي لازم تعرفها

الـ `tmux` بيعتمد على مفهوم “المفتاح السحري” أو الـ “Prefix Key”. بشكل افتراضي، هذا المفتاح هو Ctrl+b. هذا يعني إنك عشان تعطي أمر لـ `tmux`، لازم تضغط Ctrl+b أولاً، بعدين تتركهم، وبعدها تضغط مفتاح الأمر. خلينا نشوف أهم الأوامر.

الانفصال والعودة للجلسات (Detaching and Re-attaching)

هذه هي الميزة الجوهرية في `tmux`. لنفترض أنك بدأت عملية طويلة داخل جلسة `tmux` وبدك تسكر اللابتوب وتروح تنام.

  • للانفصال (Detach) عن الجلسة: اضغط Ctrl+b ثم اضغط حرف d.

رح تلاقي حالك رجعت للطرفية العادية، لكن لا تخاف! الجلسة وكل شي فيها لسا شغالين في الخلفية. بتقدر تسكر اتصال الـ SSH وأنت متطمن.

طيب، كيف نرجع لشغلنا؟

  1. عرض الجلسات الشغالة: اكتب في الطرفية العادية الأمر tmux ls.
$ tmux ls
my_project: 1 windows (created Tue Dec 19 15:30:00 2023)
another_session: 2 windows (created Tue Dec 19 14:00:00 2023)
  1. العودة (Attach) لجلسة معينة: استخدم اسم الجلسة اللي بدك ياها.
tmux attach -t my_project

وبوم! 🎉 رح تلاقي حالك رجعت لنفس الشاشة، والعملية الطويلة لسا شغالة وكأنه ما صار شي.

النوافذ والأجزاء: تنظيم مساحة عملك (Windows and Panes)

الـ `tmux` مش بس بحافظ على جلستك، هو كمان بنظم مساحة عملك بشكل خرافي. فكر في الجلسة كأنها مشروع. داخل كل مشروع (جلسة)، عندك “نوافذ” (Windows) زي التابات في المتصفح، وداخل كل نافذة، عندك “أجزاء” (Panes) بتقدر تقسم فيها الشاشة.

  • إنشاء نافذة جديدة (New Window): Ctrl+b ثم c.
  • التنقل بين النوافذ:
    • Ctrl+b ثم n (للنافذة التالية – next).
    • Ctrl+b ثم p (للناذة السابقة – previous).
    • Ctrl+b ثم رقم النافذة (مثلاً 0, 1, 2).
  • تقسيم الشاشة عمودياً (Vertical Split): Ctrl+b ثم %.
  • تقسيم الشاشة أفقياً (Horizontal Split): Ctrl+b ثم ".
  • التنقل بين الأجزاء (Panes): Ctrl+b ثم مفاتيح الأسهم (, , , ).
  • إغلاق جزء أو نافذة: ببساطة اكتب exit أو اضغط Ctrl+d.

بهذه الطريقة، بتقدر تفتح ملف كود في جزء، وتشغل السيرفر في جزء ثاني، وتراقب الـ logs في جزء ثالث، وكل هذا في نفس الشاشة وبدون ما تفتح 10 نوافذ SSH.

نصائح من أبو عمر: حركات احترافية في `tmux`

بعد سنين من الاستخدام اليومي، تعلمت كم حركة بتخلي الحياة مع `tmux` أسهل وأجمل.

تخصيص `tmux` لعيونك

بتقدر تعدل كل شي في `tmux` عن طريق ملف اسمه .tmux.conf في مجلد الـ home الخاص فيك. من أشهر التعديلات هو تغيير المفتاح السحري لشي أسهل من Ctrl+b، مثل Ctrl+a (زي برنامج screen القديم).

أنشئ الملف ~/.tmux.conf وأضف فيه الأسطر التالية:

# Change prefix key to Ctrl+a
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix

# Enable mouse support
set -g mouse on

تفعيل الفأرة (mouse support) بخليك تقدر تغير حجم الأجزاء وتختار النوافذ بالماوس مباشرة. شي كتير مريح.

العمل الجماعي مع `tmux`

هل تعلم أنك بتقدر تشارك جلستك مع زميلك في العمل؟ هذا مفيد جداً في الـ Pair Programming أو لما بدك مساعدة في حل مشكلة معينة.

  1. الشخص الأول ينشئ الجلسة: tmux new -s pair_debugging
  2. الشخص الثاني يتصل بنفس الجلسة: tmux attach -t pair_debugging

الآن كلاكما يرى نفس الشاشة ويكتب في نفس الطرفية في الوقت الفعلي. أداة جبارة للتعاون عن بعد.

الخلاصة: `tmux` مش مجرد أداة، هو بوليصة تأمين لشغلك 🙏

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

نصيحتي الأخيرة الك: لا تستنى لما تضيع عليك ساعات طويلة من الشغل عشان تتعلمها. ابدأ اليوم، خصص ساعة من وقتك لتجربة الأوامر الأساسية، وصدقني، بعد أسبوع واحد فقط من الاستخدام، رح تسأل حالك كيف كنت عايش بدونها. رح تدعيلي.

بالتوفيق يا جماعة!

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

البنية التحتية وإدارة السيرفرات

كنا نعمل في الظلام: كيف أنقذتنا ‘المراقبة الشاملة’ (Observability) من جحيم البحث عن أسباب الأعطال؟

أشارككم قصة حقيقية عن ليلة كاد فيها نظامنا أن ينهار، وكيف انتقلنا من التخمين العشوائي في الظلام إلى التشخيص الدقيق في ثوانٍ بفضل مفهوم "المراقبة...

19 مايو، 2026 قراءة المزيد
ادارة الفرق والتنمية البشرية

كان فريقنا على وشك الانهيار بعد رحيل مهندس واحد: كيف أنقذتنا ‘مصفوفة المهارات’ من جحيم ‘عامل الحافلة’ (Bus Factor)؟

أشارككم قصة حقيقية كادت أن تدمر أحد أهم مشاريعنا بسبب رحيل مهندس واحد، وكيف استطعنا تحويل هذه الأزمة إلى فرصة لبناء فريق أقوى وأكثر مرونة...

18 مايو، 2026 قراءة المزيد
اختبارات الاداء والجودة

كانت تغطية الكود 100% خادعة: كيف كشف ‘الاختبار الطفري’ (Mutation Testing) عن عيوب اختباراتنا الصامتة؟

كنا نظن أن تغطية الكود بنسبة 100% هي قمة الجودة، لكن الاختبار الطفري كشف لنا الحقيقة المرة. اكتشف كيف يمكن لهذه التقنية أن تحول اختباراتك...

18 مايو، 2026 قراءة المزيد
أدوات وانتاجية

كنا نغرق في الكود المتكرر: كيف حول ‘مساعد الذكاء الاصطناعي’ (Copilot) تركيزنا من الكتابة إلى الإبداع؟

بصفتي أبو عمر، مبرمج فلسطيني، أشارككم تجربتي الواقعية مع GitHub Copilot. في هذه المقالة، أسرد لكم كيف انتقلنا في فريقنا من وحل الكود المتكرر والممل...

18 مايو، 2026 قراءة المزيد
أتمتة العمليات

كانت بيئاتنا غير متطابقة: كيف أنقذنا “الكود كبنية تحتية” (IaC) من جحيم “لكنه يعمل على جهازي”؟

أتذكر تلك الليلة جيدًا، ليلة كادت أن تودي بمشروعنا إلى الهاوية بسبب جملة واحدة: "بس شغّال عندي!". في هذه المقالة، سأشارككم يا جماعة كيف انتقلنا...

18 مايو، 2026 قراءة المزيد
​معمارية البرمجيات

المعمارية الموجهة بالأحداث (EDA): طوق النجاة الذي أنقذنا من جحيم الخدمات المتشابكة

كانت خدماتنا متشابكة كخيوط العنكبوت، أي تغيير صغير كان يهدد بانهيار النظام بأكمله. في هذه المقالة، أروي لكم كـ "أبو عمر" كيف أنقذتنا المعمارية الموجهة...

18 مايو، 2026 قراءة المزيد
البودكاست