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

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

خليني أحكيلكم قصة صارت معي قبل كم سنة، قصة من اللي بتعلّم في الواحد وبتخليه يضرب كف بكف. كنا وقتها شغالين على مشروع ذكاء اصطناعي كبير، وكان لازم أعمل تدريب لنموذج (Model Training) على سيرفر بعيد. العملية هاي، زي ما بعضكم بعرف، بتاخد وقت… مش بس وقت، بتاخد وقت طوييييل. يعني بنحكي عن ساعات وأحياناً أيام.

المهم، شبكت على السيرفر عن طريق الـ SSH، شغّلت السكربت، والشاشة قدامي بتطبع أرقام وحسابات… شعور حلو صراحة، بتحس حالك بتصنع إشي عظيم. مرت أول ساعة، ثاني ساعة، والوضع تمام التمام. فجأة، وبدون سابق إنذار، “Connection to server lost…”، انقطع النت! طبعاً عنا في فلسطين، النت “ما شاء الله عليه”، بروح وبيجي على كيفه. حاولت أرجع أشبك… شبكت… بس شو الفايدة؟ الجلسة (Session) القديمة طارت، والسكربت اللي كان شغال وقف، وكل الساعات اللي راحت… راحت عالفاضي. يا الله شو انقهرت يومها! شعور العجز هداك، إنه شغلك كله معلّق بخيط رفيع اسمه “اتصال الإنترنت”، شعور بقتل الإنتاجية.

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

ما هو الـ `tmux` يا أبو عمر؟ ليش كل هالضجة؟

بكل بساطة، الـ `tmux` هو اختصار لـ “Terminal Multiplexer”، أو “مُضاعِف الطرفية” بالعربي الفصيح. بس انسى الاسم التقني المعقّد، خليني أشرحلك إياه بطريقتي.

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

بتقدر تفصل عن هاي الجلسة (Detach) وترجع لحياتك الطبيعية، وبعد ساعة، يوم، أو أسبوع، ترجع تتصل فيها (Attach) وتلاقي كل شي زي ما تركته بالزبط. كل النوافذ مفتوحة، كل الأوامر اللي كانت شغالة لساها شغالة، وكأنك ما غبت عنها دقيقة.

يلا نبلش شغل: كيف نبدأ مع `tmux`

كلام جميل، بس كيف بنستخدمه؟ الموضوع أسهل مما بتتخيل. خلينا نمشي خطوة بخطوة.

h3: 1. التثبيت (Installation)

أول شي لازم نثبّت الأداة. افتح الطرفية (Terminal) على جهازك المحلي أو على السيرفر واكتب الأمر المناسب لنظامك:

# For Debian/Ubuntu
sudo apt-get install tmux

# For CentOS/Fedora
sudo yum install tmux

# For macOS (using Homebrew)
brew install tmux

h3: 2. إنشاء أول جلسة (Your First Session)

بعد التثبيت، اكتب الأمر التالي لإنشاء جلسة جديدة:

tmux

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

نصيحة من أبو عمر: لا تنشئ جلسة بدون اسم! رح تتوه بينهم بعدين. استخدم الأمر `-s` (اختصار لـ session) لتسمية الجلسة.

خلينا نطلع من هاي الجلسة (اكتب `exit` واضغط Enter) ونجرب الطريقة الصح:

tmux new -s my-project

الآن أنت داخل جلسة اسمها “my-project”. بتقدر تبدأ تشغل أوامرك، مثلاً تشغل سيرفر التطبيق تبعك أو أي عملية طويلة.

h3: 3. السحر الحقيقي: الفصل والعودة (Detaching & Attaching)

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

Ctrl + b (اترك الأزرار) ثم اضغط على حرف d (اختصار لـ detach).

رح تلاقي حالك رجعت للطرفية العادية تبعتك، مع رسالة بتقول “[detached (from session my-project)]”. الجلسة الآن عايشة بأمان على السيرفر.

طيب، كيف نرجع؟

أولاً، بتقدر تشوف كل الجلسات الشغالة باستخدام الأمر:

tmux ls

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

tmux attach -t my-project

وها أنت قد عدت! كل شيء كما تركته تماماً. الآن لو انقطع النت، كل اللي عليك تعمله هو تعيد الاتصال بالسيرفر وتكتب أمر الـ `attach` لترجع لشغلك.

للمحترفين فقط: إتقان `tmux`

الـ `tmux` مش بس عشان يحفظ الجلسات. هو أداة إنتاجية جبارة بتسمحلك تنظم شاشة الطرفية تبعتك بشكل مذهل.

h3: النوافذ (Windows) والأجزاء (Panes)

الـ `tmux` بعطيك مستويين من التنظيم داخل الجلسة الواحدة:

  • النوافذ (Windows): تخيلها مثل التابات (Tabs) في متصفح جوجل كروم. بتقدر تفتح أكتر من نافذة، كل واحدة لها غرض معين (واحدة للسيرفر، واحدة للداتا بيز، واحدة للـ Git).
  • الأجزاء (Panes): داخل كل نافذة، بتقدر تقسم الشاشة نفسها لأجزاء، سواء بشكل أفقي أو عمودي.

أهم الاختصارات (كلها تبدأ بـ `Ctrl + b` ثم…):

  • c: لإنشاء نافذة جديدة (create).
  • ,: لإعادة تسمية النافذة الحالية.
  • w: لعرض قائمة بكل النوافذ والتنقل بينها.
  • n: للانتقال للنافذة التالية (next).
  • p: للانتقال للنافذة السابقة (previous).
  • %: لتقسيم الشاشة عمودياً (vertical split).
  • ": لتقسيم الشاشة أفقياً (horizontal split).
  • Arrow Keys (الأسهم): للتنقل بين الأجزاء المقسمة.
  • x: لإغلاق الجزء الحالي.

مثال عملي: تخيل أنك تعمل على مشروع ويب. بتقدر تقسم شاشتك كالتالي:

  • جزء علوي كبير: لكتابة الكود باستخدام محرر نصوص مثل `vim` أو `nano`.
  • جزء سفلي مقسوم نصفين:
    • النصف الأيسر: لتشغيل سيرفر التطوير ومراقبة المخرجات.
    • النصف الأيمن: لتنفيذ أوامر `git` أو أي أوامر طرفية أخرى.

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

نصائح من دار أبو عمر

  • التخصيص هو المفتاح: أنشئ ملف `~/.tmux.conf` وقم بتخصيص `tmux` على كيفك. يمكنك تغيير الألوان، اختصارات الأزرار (كثيرون يفضلون `Ctrl+a` بدلاً من `Ctrl+b`)، وتعديل شريط الحالة السفلي.
  • النسخ واللصق: النسخ واللصق في `tmux` له طريقة خاصة (scrollback mode). للدخول لوضع النسخ اضغط `Ctrl+b` ثم `[`. يمكنك الآن التحرك بالأسهم. اضغط `Space` لبدء التحديد و `Enter` لنسخ المحدد. للصق، استخدم `Ctrl+b` ثم `]`.
  • البرمجة الثنائية عن بعد (Remote Pair Programming): هل تعلم أنه يمكنك أنت وزميلك الاتصال بنفس جلسة `tmux` من جهازين مختلفين؟ هذا يسمح لكما بالكتابة على نفس الطرفية ورؤية ما يفعله الآخر في نفس اللحظة. كنا نستخدمها للمراجعة المباشرة للكود وحل المشاكل معاً، وكأننا جالسين في نفس الغرفة.

الخلاصة يا جماعة الخير 📝

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

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

نصيحتي لك: لا تتردد. خصص ساعة من وقتك اليوم لتثبيت `tmux` وتعلم أساسياته. قد يبدو الأمر معقداً في البداية، ولكن أعدك أنك ستشكرني لاحقاً. استثمر في أدواتك، فهي التي تصنع الفارق بين المبرمج العادي والمبرمج المحترف. 😉

والله ولي التوفيق.

أبو عمر

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

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

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

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

آخر المدونات

​معمارية البرمجيات

تحديث المونوليث كجراحة قلب مفتوح: كيف أنقذنا نمط الخانق (Strangler Fig) من جحيم “إياك أن تلمس هذا الكود”؟

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

25 مايو، 2026 قراءة المزيد
تسويق رقمي

ما وراء الكلمات المفتاحية: كيف حولنا بيانات Schema.org إلى أسلحة سرية في حرب نتائج البحث؟

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

25 مايو، 2026 قراءة المزيد
صورة المقال
تجربة المستخدم والابداع البصري

كانت شاشاتنا الفارغة مقبرة للتفاعل: كيف أنقذتنا ‘الحالات الفارغة الذكية’ من جحيم ‘وماذا الآن؟’

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

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

كانت استعلاماتنا تزحف: كيف أنقذتنا فهارس قواعد البيانات من جحيم البحث البطيء؟

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

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

من جحيم الـ Polling إلى نعيم الـ Webhooks: كيف أنقذت “خطافات الويب” تطبيقاتنا من السؤال المستمر “هل من جديد؟”

أروي لكم قصة من واقع تجربتي كمبرمج، كيف انتقلنا من طريقة الاستطلاع المستمر (Polling) المرهقة للخوادم، إلى الاعتماد على "خطافات الويب" (Webhooks) الذكية. مقالة عملية...

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

ملفي الشخصي كان مقبرة للمشاريع: كيف أنقذتني ‘سردية المشاريع’ من جحيم ‘وماذا بعد؟’

هل ملفك الشخصي مجرد قائمة بمشاريع غير مكتملة أو تطبيقات تعليمية؟ اكتشف كيف حوّلتُ 'مقبرة المشاريع' الخاصة بي إلى قصة نجاح متماسكة باستخدام تقنية 'سردية...

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