كيفية استخدام tmux على Linux (ولماذا هو أفضل من الشاشة)
نشرت: 2022-01-29 أمر Linux tmux
هو مُضاعِف طرفي ، مثل screen
. المدافعون عنها كثيرون وصريحون ، لذلك قررنا المقارنة بين الاثنين. هل tmux
أفضل حقًا ، أم أنه مجرد حالة تفضيل ما تعرفه؟
tmux مقابل الشاشة
كلا من أوامر screen
tmux
و GNU عبارة عن معددات طرفية. إنها تسمح لك بالحصول على عدة نوافذ داخل نافذة طرفية واحدة ، والقفز ذهابًا وإيابًا بينها. يمكن تقسيم النافذة إلى أجزاء ، كل منها يمنحك سطر أوامر مستقل.
يمكنك أيضًا فصل الجلسة وتصبح كيانًا بدون رأس يعمل في الخلفية - يمكنك حتى إغلاق نافذة المحطة الطرفية التي قامت بتشغيلها. عندما تكون جاهزًا ، يمكنك فتح نافذة طرفية جديدة وإعادة توصيل الجلسة التي لا تزال قيد التشغيل. يمكنك أيضًا القيام بذلك عبر اتصال SSH.
يمكنك فصل جلسة على كمبيوتر واحد ، والعودة إلى المنزل ، وتسجيل الدخول إلى الكمبيوتر البعيد. عند إعادة الاتصال ، يمكنك إعادة توصيل جلسة الخلفية واستخدامها بشكل تفاعلي مرة أخرى.
ما هو الأمر على الشاشة؟
أمر screen
هو أيضًا معدد إرسال طرفي ، ومليء بالخيارات. للحصول على معلومات تفصيلية حول كل ما يمكنك فعله به ، تحقق من مقالتنا المتعمقة.
هذه المرة ، سنركز على tmux
. بينما نمضي قدمًا ، سنذكر كيف تتعامل screen
مع نفس الميزة أو الوظيفة.
شيء واحد فقط أزعجنا بشأن screen
. سنغطي ذلك عندما نصل إليه ، ونرى ما إذا كان tmux
أفضل.
ذات صلة: كيفية استخدام أمر شاشة Linux
تركيب tmux
بينما يتم تثبيت screen
بشكل افتراضي على توزيعات Linux الشائعة ، tmux
ليس كذلك. لتثبيت tmux
على Ubuntu ، اكتب ما يلي:
sudo apt-get install tmux
في pacman
، يمكنك استخدام Pacman:
sudo pacman -Sy tmux
في Fedora 31 ، تم تثبيت tmux
بالفعل.
بدء جلسة tmux
لبدء tmux
، فقط اكتبه واضغط على Enter:
تمكس
ستعرض نافذة المحطة الطرفية شريط الحالة عندما تكون في جلسة tmux
.
يُظهر الجانب الأيمن من شريط الحالة اسم المضيف والوقت والتاريخ. يظهر الجانب الأيسر المعلومات المتعلقة بالجلسة التالية:
- [0]: هذا هو اسم الجلسة. بشكل افتراضي ، يتم ترقيمها ، بدءًا من الصفر. نغطي كيف يمكنك إعطاء أسماء ذات معنى للجلسات أدناه.
- 0: bash *: يشير الرقم 0 إلى أن هذه هي النافذة الأولى في هذه الجلسة. العملية الوحيدة التي يتم تشغيلها في هذه الجلسة هي
bash
. إذا قمت بتشغيل برنامج ، فسيظهر اسمه هنا. علامة النجمة (*) تعني أن هذه هي النافذة التي تنظر إليها. في كل مرة تقوم فيها بإنشاء نافذة جديدة في جلسةtmux
، تتم إضافة رقم النافذة واسم البرنامج الذي يتم تشغيله فيها إلى شريط الحالة.
لا يمنحك أمر screen
شريط الحالة افتراضيًا. عليك أن تطير أعمى وتعتمد على ذكائك لتعرف ما يحدث ، الأمر الذي يتطلب القليل من الممارسة. (ما لم تقم بتكوين شريط الحالة الخاص بك.)
على الجانب الإيجابي ، لن تفقد صفًا من عقارات النافذة الطرفية. بالطبع ، عادةً ما تقوم بتوسيع النافذة الطرفية الخاصة بك لجعل استخدام معدد الإرسال طرفيًا مفيدًا. في هذه الحالة ، لا يمثل فقدان سطر واحد لشريط الحالة مشكلة كبيرة. لقد تركنا صور النوافذ الطرفية هنا بالحجم الافتراضي حتى تتمكن من رؤية المعلومات.
يتم إعطاء الأوامر إلى tmux
باستخدام ضغطات المفاتيح ، وهناك جزءان لهذا الأمر. أولاً ، تضغط على Ctrl + B لجذب انتباه tmux
. ثم تضغط بسرعة على المفتاح التالي لإرسال أمر إلى tmux
. يتم إعطاء الأوامر عن طريق الضغط على الأحرف أو الأرقام أو علامات الترقيم أو مفاتيح الأسهم.
إنه نفسه في screen
، باستثناء الضغط على Ctrl + A لجذب انتباهه.
لإغلاق النافذة ، اضغط على Ctrl + B ، ثم اضغط بسرعة على X. يتحول شريط الحالة إلى اللون الكهرماني. سيُطلب منك بعد ذلك تأكيد رغبتك في إنهاء النافذة.
اضغط Y لإغلاق النافذة أو N إذا غيرت رأيك. ليس عليك الضغط على Enter بعد ذلك ؛ Y أو N كافيان لتسجيل اختيارك.
إذا قمت بالضغط على Y ، يتم إغلاق النافذة. نظرًا لأن هذه هي النافذة الوحيدة في هذه الجلسة ، يتم إنهاء الجلسة.
يتم إغلاق جلسة tmux
ويتم إرجاعك إلى سطر الأوامر الذي قمت tmux
. سترى "[خروج]" في نافذة المحطة.
قد يبدو هذا وكأنه يوضح ما هو واضح ، لكنه تأكيد على إغلاق الجلسة وعدم تركها منفصلة وتشغيلها. سنناقش فصل الجلسات أدناه.
بدء جلسة tmux المحددة
إذا بدأت جلسات tmux
متعددة بانتظام ، فستقدر بسرعة وظيفة إعطاء كل منها اسمًا ذا معنى. يمكنك تسمية الجلسات في screen
أيضًا ، لكن لا يتم عرضها في أي مكان في نوافذ الجلسة.
لبدء tmux
باسم جلسة ، استخدم الأمر new
(جلسة جديدة) وخيار -s
(اسم الجلسة). ستطلق على جلستنا اسم "geek-1" ، لذلك نكتب ما يلي:
tmux new -s geek-1
عند تحميل جلسة tmux
، يتم عرض "geek-1" كأول إدخال في شريط الحالة ، في أقصى اليسار.
إضافة المزيد من النوافذ
لإنشاء نافذة جديدة في الجلسة الحالية ، اضغط على Ctrl + B ، ثم C. ستحصل على نافذة طرفية فارغة في الجلسة الحالية. لذلك سيكون لدينا شيء ما قيد التشغيل في هذه النافذة الجديدة ، فلنبدأ الأمر dmesg
مع الخيار -w
(متابعة):
dmesg -w
الآن لدينا نافذتان في الجلسة ؛ أحدهما top
، والآخر dmesg
. يمكننا فقط رؤية واحدة في كل مرة (المزيد عن ذلك في لحظة).
ألق نظرة على الجانب الأيسر من شريط الحالة. ما زلنا في جلسة tmux
"المهوس -1". في النافذة صفر ، يتم تشغيل الجزء العلوي ، وفي النافذة الأولى ، يتم تشغيل dmesg
. تخبرنا العلامة النجمية (*) بعد dmesg
بالنافذة المرئية.
للتنقل بين النوافذ ، اضغط على Ctrl + B ، ثم أحد المفاتيح التالية:
- N : اعرض النافذة التالية.
- P: عرض النافذة السابقة.
- من 0 إلى 9: اعرض نافذة مرقمة من 0 إلى 9.
يمكنك أيضًا اختيار نافذة من القائمة. إذا ضغطت على Ctrl + B ، ثم W ، فستظهر قائمة بالنوافذ.
لتحريك شريط التظليل الكهرماني ، اضغط على السهمين لأعلى أو لأسفل ، أو الصفحة الرئيسية ، أو النهاية. يعرض القسم السفلي من الشاشة معاينة للمحتوى في النافذة المميزة.
اضغط على Enter للانتقال إلى النافذة المميزة ، أو اضغط على Esc لمغادرة قائمة النوافذ دون التبديل.
جلسات الفصل والارفاق
إذا قمت بالضغط على Ctrl + B ، ثم D ، فسوف تقوم بفصل الجلسة. سيستمر تشغيله في الخلفية ، لكنك لن تتمكن من رؤيته أو التفاعل معه.
لقد بدأنا في top
في الجلسة لذلك لدينا عملية جارية للتوضيح معها. ثم نضغط على Ctrl + B ، ثم D. تختفي الجلسة وتصبح جلسة خلفية.
نعود إلى نافذة المحطة الأصلية. هناك رسالة من tmux
تخبرنا بأن الجلسة مفصولة. كما يذكرنا بالاسم الذي أطلقناه على الجلسة. هذا مفيد لأن هذا هو ما نستخدمه لإرفاق جلسة خلفية ، ثم استعادتها إلى جلسة تفاعلية.
لإرفاق جلسة منفصلة ، سنستخدم الأمر attach-session
الموضح ذاتيًا مع الخيار -t
(الجلسة المستهدفة). سنقدم أيضًا اسم الجلسة التي نرغب في تذكرها.
نكتب ما يلي:
tmux attach-session -t geek-1
تعود جلستنا وتصبح جلسة تفاعلية مرئية مرة أخرى.
ستظل أي عمليات طويلة الأمد أو مستمرة بدأتها قبل فصل الجلسة قيد التشغيل في الخلفية (ما لم تنته) عند إرفاق الجلسة.
يمكن screen
القيام بذلك ، ولكن ليس بشكل حدسي.
التعامل مع جلسات متعددة
لنفتح نافذة طرفية أخرى ، ونبدأ جلسة tmux
جديدة تسمى "geek-2":
tmux new -s geek-2
في تلك الجلسة ، سنبدأ dmesg
:
dmesg -w
الآن ، لدينا جلسة tmux
الأصلية "geek-1" ، وجلسة جديدة تسمى "geek-2".
يوضح لنا شريط الحالة أن هذه الجلسة تسمى "geek-2" ، ولها نافذة واحدة تقوم بتشغيل dmesg
.
إذا ضغطنا على Ctrl + B ، ثم D ، فإننا نفصل تلك الجلسة.
مرة أخرى في جلسة tmux
"geek-1" ، نضغط على Ctrl + B ، ثم S لمشاهدة قائمة بجلسات tmux
.
لنكون واضحين ، هذه قائمة الجلسات. كان العرض المماثل الذي رأيناه سابقًا عبارة عن قائمة من النوافذ في جلسة واحدة.
يمكنك تحريك شريط التظليل الكهرماني بالضغط على السهمين لأعلى ولأسفل والصفحة الرئيسية والنهاية. يعرض القسم السفلي معاينة للمحتوى في الجلسة المميزة.
إذا قمت بالضغط على السهم الأيمن ، يتم عرض نوافذ الجلسة المميزة.
اضغط على Enter للانتقال إلى الجلسة أو النافذة المميزة أو اضغط على Esc لمغادرة قائمة الجلسات دون تغيير الجلسات. إذا حددت جلسة جديدة ، فسيتم فصل جلستك الحالية وإرفاق الجلسة التي حددتها.
فصلنا جلسة "geek-2" قبل أن نفعل ذلك. ومع ذلك ، يمكنك القيام بذلك مع الجلسات التي لا تزال متصلة بنوافذها الطرفية الأصلية. عندما تفعل ذلك ، ستظهر أي تغييرات على الشاشة في وقت واحد في كلتا tmux
.
يمكن لأمر screen
القيام بذلك أيضًا عبر مجموعة أوامر مماثلة.
العمل مع النوافذ
إذا قمت بالضغط على Ctrl + B ، ثم علامات الاقتباس المزدوجة ("") ، فإنك تقوم بتقسيم النافذة أفقيًا إلى جزأين.
هذا يؤثر فقط على النافذة الحالية ؛ لن يتم تغيير الآخرين في الجلسة. لقد استخدمنا الأمر tmux ls
في الجزء العلوي لسرد النوافذ في هذه الجلسة. يوجد اثنان ، ويخبرنا سطر الحالة أننا في النافذة الأولى. إذا قفزنا إلى النافذة صفر بالضغط على Ctrl + B ، ثم 0 (صفر) ، فإننا نراها تمامًا كما تركناها.
هذان هما سطرا أوامر مستقلان ، وليست طريقتي عرض في نافذة واحدة ؛ هم قذائف متميزة ومنفصلة. يمكننا إظهار ذلك عن طريق تشغيل أمر مختلف في كل جزء.
نكتب ما يلي:
uname -a
ls -hl
للانتقال من جزء إلى آخر ، اضغط على Ctrl + B ، ثم السهم لأعلى أو لأسفل أو لليسار أو لليمين.
إذا قمت بالضغط على Ctrl + B ، ثم علامة النسبة المئوية ( %)
فإنها تقسم الجزء الحالي عموديًا.
اضغط على Ctrl + B ، ثم Q لجعل tmux
يومض رقم كل جزء لفترة وجيزة.
يتم استخدام هذه الأرقام في المطالبات والرسائل من tmux
. اضغط على Ctrl + B ، ثم X لإغلاق الجزء الحالي. يتغير شريط الحالة إلى اللون الكهرماني ، وستتم مطالبتك بتأكيد رغبتك في إغلاق رقم الجزء هذا. اضغط على Y لإزالة الجزء ، أو N لترك الأشياء كما هي.
إذا قمت بالضغط على Y ، فسيتم إزالة الجزء.
يحتوي أمر screen
أيضًا على أجزاء ، ولكنها مرة أخرى أقل سهولة في الاستخدام. الشيء الذي يزعجنا بشأن screen
هو أنه إذا قمت بفصل جلسة باستخدام الأجزاء ، فإنها تختفي عند إعادة تلك الجلسة. هذا يتقدم في العمر بسرعة كبيرة.
ورقة الغش Ctrl + B
لقد قمنا بتضمين ورقة الغش للأوامر المختلفة التي يمكنك استخدامها في tmux
أدناه.
أوامر الجلسة
- S: قائمة الجلسات.
- $: إعادة تسمية الجلسة الحالية.
- D: فصل الجلسة الحالية.
- Ctrl + B ثم؟: عرض صفحة التعليمات في
tmux
.
أوامر النافذة
- ج: إنشاء نافذة جديدة.
- ،: إعادة تسمية النافذة الحالية.
- W: قائمة النوافذ.
- N: الانتقال إلى النافذة التالية.
- P: الانتقال إلى النافذة السابقة.
- 0 إلى 9: الانتقال إلى رقم النافذة المحدد.
أوامر الجزء
- ٪: إنشاء تقسيم أفقي.
- ": أنشئ انقسامًا رأسيًا.
- H أو سهم لليسار: الانتقال إلى الجزء الموجود على اليسار.
- أنا أو السهم الأيمن: الانتقال إلى الجزء الموجود على اليمين.
- J أو سهم لأسفل: الانتقال إلى الجزء أدناه.
- K أو سهم لأعلى: الانتقال إلى الجزء أعلاه.
- س : عرض أرقام الأجزاء بإيجاز.
- O: التنقل عبر الأجزاء بالترتيب. تنقلك كل ضغطة إلى التالية ، حتى تقوم بالمرور عليها جميعًا.
- }: قم بتبديل موضع الجزء الحالي بالجزء التالي.
- {: تبديل موضع الجزء الحالي بالجزء السابق.
- X: أغلق الجزء الحالي.
كيف يقارنون
من حيث الوظائف ، تعمل كل من screen
و tmux
بشكل مشابه وتقدم نفس الميزات الرئيسية. إنها الطريقة التي تصل بها إلى تلك الميزات التي تختلف بشكل ملحوظ. يوفر tmux
أكثر سهولة وراحة للوصول إلى الوظائف المختلفة. ومع ذلك ، ليس هذا هو الاختلاف الوحيد.
تعد القدرة على إعادة تسمية الجلسات والنوافذ في tmux
، وحقيقة أنه يحتفظ بالألواح عند إعادة إرفاق جلسة ما هو تغيير قواعد اللعبة.
من ناحية أخرى ، تفقد screen
الأجزاء تمامًا عند فصل الجلسة وإعادة توصيلها. هذا مزعج بما يكفي ليجعلك تتجنب الانفصال في المقام الأول.
هناك الكثير من tmux
، بما في ذلك إمكانيات البرمجة النصية المرنة بشكل لا يصدق. أنت مدين لنفسك للتحقق من ذلك.
أوامر لينكس | ||
الملفات | tar · pv · cat · tac · chmod · grep · diff _ _ _ _ _ _ _ _ _ _ _ · ذيل · ستات · ls · fstab · صدى · أقل · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · تثبيت · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · تحويل · rclone · shred · srm | |
العمليات | الاسم المستعار · شاشة · أعلى · لطيف · رينييس · تقدم · ستريس · systemd · tmux · chsh · تاريخ · في · دفعة · مجانية · أي · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · نعم · قتل · نوم · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
الشبكات | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · حفر · إصبع · nmap · ftp · curl · wget · who · who · w · iptables · ssh-keygen · ufw |
ذات صلة: أفضل أجهزة كمبيوتر Linux المحمولة للمطورين والمتحمسين