جلساتي كانت تموت مع كل انقطاع اتصال: كيف أنقذني `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`، تغيرت طريقة عملي على السيرفرات بشكل جذري. لم أعد أخاف من انقطاع الإنترنت، وأصبحت أكثر تنظيماً وإنتاجية بفضل النوافذ والأجزاء. الأداة حولت تجربة العمل عن بعد من مصدر قلق إلى بيئة عمل مستقرة وموثوقة.

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

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

أبو عمر

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

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

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

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

آخر المدونات

برمجة وقواعد بيانات

تحديثات قاعدة البيانات بدون توقف: كيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من جحيم التوقفات المجدولة؟

هل سئمت من إيقاف الخدمة مع كل تحديث لهيكلة قاعدة البيانات؟ أشارككم قصة حقيقية وكيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من ليالي النشر الطويلة والمُجهدة،...

4 يونيو، 2026 قراءة المزيد
الشبكات والـ APIs

كانت إعادة المحاولة كارثة: كيف أنقذتنا مفاتيح عدم تكرار العمليات (Idempotency Keys) من جحيم الفواتير المزدوجة؟

أشارككم قصة حقيقية من الخنادق البرمجية، يوم كاد خطأ بسيط في إعادة محاولة طلبات الدفع أن يكلفنا سمعتنا وأموال عملائنا. اكتشفوا معنا كيف كانت مفاتيح...

4 يونيو، 2026 قراءة المزيد
الحوسبة السحابية

من التوقف التام إلى النجاة: كيف أنقذتنا استراتيجية “الضوء المرشد” (Pilot Light) يوم انقطعت السحابة؟

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

4 يونيو، 2026 قراءة المزيد
التوظيف وبناء الهوية التقنية

كانت مهمتي البرمجية للاختبار مجرد كود: كيف أنقذني توثيق القرارات من جحيم الصمت بعد المقابلة؟

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

4 يونيو، 2026 قراءة المزيد
التكنلوجيا المالية Fintech

من الانتظار لأيام إلى الدفع في ثوانٍ: كيف أنقذتنا شبكات الدفع الفوري من جحيم التحويلات البنكية؟

أسرد لكم من واقع تجربتي كـ "أبو عمر"، كيف عانينا من بطء وتكلفة التحويلات البنكية الدولية، وكيف جاءت شبكات الدفع الفوري ومعيار ISO 20022 لتكون...

4 يونيو، 2026 قراءة المزيد
البنية التحتية وإدارة السيرفرات

كان كل خادم لدينا ‘ندفة ثلج’ فريدة: كيف أنقذنا ‘الكود كبنية تحتية’ (IaC) من جحيم الانجراف اليدوي؟

في هذه المقالة، أشارككم قصة حقيقية من قلب المعركة التقنية مع "خوادم ندفات الثلج" الفوضوية. سنغوص في مفهوم "الكود كبنية تحتية" (IaC) وكيف أن أدوات...

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

كانت تغطية الاختبارات 100% لكن الأخطاء تتسرب: كيف أنقذنا “الاختبار الطفري” من جحيم الثقة الزائفة؟

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

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