OOZOU
تواصلوا معنا
العودة إلى المدونة

اترك عملك في Tmux وعُد إليه لاحقًا

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

18 نوفمبر 2020
4 دقائق للقراءة
اترك عملك في Tmux وعُد إليه لاحقًا

ما هو Tmux؟

Tmux هو terminal multiplexer، ومن هنا جاء اسمه. يتيح لكم إنشاء عدة طرفيات (terminals) داخل نافذة واحدة. ويمكن أيضًا تشغيله في الخلفية، فتنفصلون عن الجلسة وتعودون إليها لاحقًا.

أليست هناك بدائل أخرى؟

قبل Tmux كنا نستخدم screen عادةً، وهو أيضًا قابل للفصل، وعمره الآن 33 عامًا. لكن screen لم يعد يحظى بتطوير نشط، ولم يُصمَّم أصلًا مع وضع UNIX في الاعتبار. ويمكن القول إنه أصعب في الاستخدام، وله بعض العيوب المذكورة في wiki الخاص بـ Tmux. أما Tmux فواسع الانتشار ويحظى بتطوير نشط، وستجدون كثيرًا من الأدلة التي تشرح إعداده واستخدامه. كما أن العمل به ممتع، فشريط الحالة مفيد، ومعظم أوامر الطرفية تعمل مباشرة داخل tmux.

لماذا قد تحتاجون إلى terminal multiplexer؟

هناك أسباب عديدة لاستخدام terminal multiplexer، أما أنا فأستخدم tmux لغرضين رئيسيين:

  1. تشغيل المهام على الخوادم البعيدة عبر SSH
  2. تشغيل عدة خدمات أثناء التطوير

وحتى لمجرد التجوّل على الخوادم البعيدة، فإن tmux مفيد. إذ يتيح لكم فتح اتصال واحد وإدارة عدة مهام، والتنقل بينها بسهولة، والمقارنة بينها، والاحتفاظ بالسجلات في كل pane.

تشغيل المهام على الخوادم البعيدة

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

تشغيل عدة خدمات أثناء التطوير

مع tmuxinator يمكنكم تشغيل عدة خدمات بسهولة في جلسة واحدة، وبذلك تُشغّلون بيئة التطوير بأكملها بأمر واحد. لإنشاء ملف إعدادات، شغّلوا

tmuxinator edit project_name

سيظهر لكم ملف إعدادات معبّأ مسبقًا. ستحتاجون إلى تحديث مسار root ليشير إلى مسار المشروع، ثم يمكننا إعداد نوافذ tmux التي ستُنشأ. تتضمن بيئة تطوير rails المعتادة لديّ: rails server وrails console وelasticsearch وsidekiq وguard للـ specs وwebpack-dev-server، ونافذة لعمل commit للتغييرات. وستبدو إعدادات النوافذ لديّ تقريبًا كالتالي

windows:
  - server:
    - rails server
  - sidekiq: sidekiq
  - webpack: webpack-dev-server
  - guard: GUARD_ALL_ON_START=true guard start --no-interactions
  - console: rails console
  - elasticsearch: elasticsearch
  - git: git status

والآن لتشغيل المشروع يكفي أن أستدعي

tmuxinator start project_name

ومع iTerm2 يمكنكم أيضًا دمج tmux بشكل أنيق، وجعل كل نافذة tmux تبدو وتعمل كنافذة iTerm عادية. لقد أعددت iTerm2 لديّ ليفتح tabs، ويُخفي عميل tmux، ويعرض محتوى شريط حالة tmux. وبهذا أشغّل بيئة التطوير كأنني فتحت tabs للتو وشغّلت الأوامر يدويًا. ويمكنني أيضًا إنهاء جلسة tmux فتُغلق جميع النوافذ، وأعود إلى النافذة الأصلية التي كنت فيها قبل تشغيل tmuxinator.

هل تريدون معرفة المزيد؟

أنصحكم بحفظ بعض الأوراق المرجعية المختصرة (cheat sheets). قد يبدو Tmux غريبًا بعض الشيء في البداية، لكن مع هذه الأوراق يصبح التعامل معه سهلًا. وإن أردتم التعمق أكثر، فإن tmux يوفّر توثيقًا ممتازًا و أسئلة شائعة في wiki الخاص به. ويتناول دليل Getting Started قدرًا كبيرًا من المعلومات التي ستمنحكم فهمًا جيدًا للأساسيات.

Related Articles

كيف أصمّم برمجيات؟ دليل المبتدئين لأصحاب الأعمال

كيف أصمّم برمجيات؟ دليل المبتدئين لأصحاب الأعمال

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

اقرأوا المزيد
مستقبل الحوسبة الطرفية: ما تحتاج الشركات إلى معرفته

مستقبل الحوسبة الطرفية: ما تحتاج الشركات إلى معرفته

يتطور المشهد الرقمي بسرعة، وعلى الشركات أن تتكيّف لتواكب الطلب المتزايد على السرعة والكفاءة والمعالجة في الوقت الفعلي.

اقرأوا المزيد
مستقبل قطاع التجزئة: الذكاء الاصطناعي والواقع المعزّز واتجاهات التحوّل الرقمي

مستقبل قطاع التجزئة: الذكاء الاصطناعي والواقع المعزّز واتجاهات التحوّل الرقمي

يتطور قطاع التجزئة بوتيرة غير مسبوقة بفضل الذكاء الاصطناعي (AI) والواقع المعزّز (AR) وتقنيات التحوّل الرقمي. فلم تعد المتاجر التقليدية مجرد أماكن لبيع المنتجات، بل أصبحت متاجر ذكية وتفاعلية.

اقرأوا المزيد

Have a Project in Mind?

Let's discuss how we can help bring your ideas to life with our expertise in web and mobile development.

ابدأوا المحادثةhello@oozou.com
OOZOU Logo

بانكوك · سنغافورة · هونغ كونغ

X
Facebook
Instagram
LinkedIn
OOZOU Co., Ltd.
548 One City Centre
Ploenchit Road
Bangkok 10330
Thailand
+66 2544 0000
hello@oozou.com

الخدمات

  • تطوير الويب
  • وكلاء الذكاء الاصطناعي والذكاء الاصطناعي التوليدي
  • تطوير تطبيقات الجوال
  • تحليلات البيانات وهندستها
  • تصميم تجربة المستخدم وواجهته (UX/UI) وتصميم المنتجات
  • التحوّل الرقمي

الشركة

  • من نحن
  • الوظائف
  • المدونة
  • دراسات الحالة
  • عروض حية
  • تعلّمت اليوم
  • تواصل معنا

المزيد

  • القطاعات
  • شبكة الشركاء
© 2026 OOZOU. جميع الحقوق محفوظة.
سياسة الخصوصيةمدونة قواعد السلوكسياسة مكافحة الرشوة والفساد