اگر زمان زیادی را در ترمینال لینوکس سپری میکنید، یادگیری tmux میتواند نحوه کار شما را متحول کند. این ابزار به شما اجازه میدهد یک پنجره ترمینال را به چند بخش تقسیم کنید، سشنهایی ایجاد کنید که حتی پس از قطع اتصال SSH همچنان فعال بمانند و بین پروژههای مختلف به سرعت جابهجا شوید.
بسیاری از کاربران لینوکس سالها از ابزار screen استفاده میکردند، اما tmux تقریبا تمام قابلیتهای screen را ارائه میدهد و در کنار آن امکانات بیشتری نیز در اختیار شما قرار میدهد. در این مقاله به صورت کامل با tmux، نحوه نصب، تنظیمات و کاربردهای عملی آن آشنا میشویم.
tmux چیست؟
tmux مخفف عبارت Terminal Multiplexer است. شاید این اصطلاح در نگاه اول کمی پیچیده به نظر برسد، اما مفهوم آن بسیار ساده است:
شما تنها یک پنجره ترمینال دارید، اما میتوانید چندین محیط کاری مختلف را درون آن مدیریت کنید.
سه مفهوم اصلی در tmux وجود دارد:
Session
سشن بالاترین سطح ساختار tmux است. شما میتوانید از یک سشن خارج شوید و بعدا دوباره به آن متصل شوید، بدون اینکه برنامههای در حال اجرا متوقف شوند.
Window
هر سشن میتواند شامل چندین پنجره باشد. این پنجرهها مشابه تبهای مرورگر عمل میکنند.
Pane
هر پنجره میتواند به چند بخش تقسیم شود. این بخشها که Pane نام دارند به شما اجازه میدهند چندین ترمینال را همزمان مشاهده کنید.
نصب tmux
tmux در مخازن رسمی اکثر توزیعهای لینوکس موجود است.
اوبونتو و دبیان
sudo apt install tmux
فدورا، RHEL و CentOS
sudo dnf install tmux
آرچ لینوکس و مانجارو
sudo pacman -S tmux
پس از نصب میتوانید نسخه نصبشده را بررسی کنید:
tmux -V
پیشنهاد میشود از نسخه ۳.۰ یا جدیدتر استفاده کنید.
شروع اولین سشن
برای ایجاد یک سشن جدید کافی است دستور زیر را اجرا کنید:
tmux
در پایین صفحه یک نوار وضعیت ظاهر میشود که نشان میدهد اکنون داخل tmux هستید.
برای ایجاد یک سشن نامگذاری شده:
tmux new -s mysession
نامگذاری سشنها زمانی که چند سشن مختلف دارید بسیار مفید خواهد بود.
کلید Prefix
تقریبا تمام دستورات tmux با یک کلید پیشوند آغاز میشوند.
کلید پیشفرض:
Ctrl + b
ابتدا این ترکیب را فشار میدهید، سپس کلید مربوط به دستور مورد نظر را میزنید.
برای مثال:
Prefix + c
یعنی ابتدا Ctrl+b و سپس c.
میانبرهای مهم tmux
مدیریت سشنها
قطع اتصال از سشن فعلی:
Prefix + d
تغییر نام سشن:
Prefix + $
نمایش لیست سشنها:
Prefix + s
بازگشت به آخرین سشن:
Prefix + L
اتصال مجدد به سشن:
tmux attach -t mysession
نمایش تمام سشنها:
tmux ls
مدیریت پنجرهها
ایجاد پنجره جدید:
Prefix + c
تغییر نام پنجره:
Prefix + ,
رفتن به پنجره بعدی:
Prefix + n
رفتن به پنجره قبلی:
Prefix + p
پرش به پنجره شماره مشخص:
Prefix + ۰-۹
نمایش تمام پنجرهها:
Prefix + w
بستن پنجره فعلی:
Prefix + &
مدیریت Pane ها
تقسیم عمودی صفحه:
Prefix + %
تقسیم افقی صفحه:
Prefix + "
جابجایی بین Pane ها:
Prefix + Arrow Keys
بزرگنمایی موقت Pane فعلی:
Prefix + z
بستن Pane:
Prefix + x
تعویض جای Pane ها:
Prefix + { یا }
جابجایی بین چیدمانهای مختلف:
Prefix + Space
حالت Copy Mode
برای پیمایش در خروجیهای قبلی ترمینال میتوانید وارد Copy Mode شوید.
ورود به حالت کپی:
Prefix + [
خروج از حالت کپی:
q
جستجو در خروجی:
/search-term
شروع انتخاب متن:
Space
کپی متن انتخاب شده:
Enter
چسباندن متن:
Prefix + ]
پیکربندی tmux
فایل تنظیمات tmux در مسیر زیر قرار دارد:
~/.tmux.conf
نمونهای از تنظیمات کاربردی:
# تغییر Prefix به Ctrl+a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# بارگذاری مجدد تنظیمات
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
# فعال کردن ماوس
set -g mouse on
# استفاده از کلیدهای Vim در Copy Mode
setw -g mode-keys vi
# شروع شمارهگذاری از ۱
set -g base-index ۱
setw -g pane-base-index ۱
# افزایش بافر تاریخچه
set -g history-limit ۱۰۰۰۰
# حذف تاخیر کلید Escape
set -s escape-time ۰
پس از ذخیره فایل:
Prefix + r
یا:
tmux source-file ~/.tmux.conf
فعال کردن ماوس
برای فعال شدن قابلیتهای ماوس:
set -g mouse on
پس از فعالسازی میتوانید:
- روی Pane ها کلیک کنید.
- اندازه Pane ها را تغییر دهید.
- با چرخ ماوس اسکرول کنید.
- راحتتر بین بخشهای مختلف جابهجا شوید.
کاربردهای عملی tmux
حفظ اجرای برنامهها پس از قطع SSH
یکی از مهمترین مزایای tmux این است که حتی اگر اتصال SSH قطع شود، فرآیندهای در حال اجرا متوقف نمیشوند.
ایجاد سشن:
tmux new -s deploy
اجرای یک وظیفه طولانی:
rsync -avz /data/ backup@۱۹۲.۱۶۸.۱.۵۰:/backup/
خروج از سشن:
Ctrl+b d
اتصال مجدد:
tmux attach -t deploy
ایجاد محیط مانیتورینگ سرور
یک ساختار رایج شامل:
- پنل اصلی برای اجرای دستورات
- پنل مشاهده لاگها
- پنل مانیتورینگ منابع سیستم
نمونه ابزارهای مناسب:
tail -f /var/log/syslog
و:
htop
اجرای خودکار چیدمانها
میتوانید یک اسکریپت بسازید تا محیط کاری شما به صورت خودکار آماده شود.
نمونه:
#!/bin/bash
tmux new-session -d -s work
tmux rename-window -t work:۱ 'main'
tmux new-window -t work:۲ -n 'logs'
tmux new-window -t work:۳ -n 'monitor'
tmux attach-session -t work
اجرا:
chmod +x start-work.sh
./start-work.sh
دستورات کاربردی خارج از tmux
نمایش سشنها:
tmux ls
حذف یک سشن:
tmux kill-session -t mysession
حذف تمام سشنها:
tmux kill-server
ارسال دستور به یک سشن فعال:
tmux send-keys -t mysession 'uptime' Enter
اجرای یک فرمان در سشن پسزمینه:
tmux new -d -s background -n task 'bash backup.sh'
tmux یا screen؟
هر دو ابزار امکان حفظ سشنها را فراهم میکنند، اما tmux مزایای مهمی دارد:
- فایل پیکربندی قدرتمندتر
- مدیریت بهتر Pane ها
- امکان اسکریپتنویسی پیشرفته
- حالت Copy Mode بهتر
- توسعه فعال و مداوم
اگر تازه میخواهید یادگیری را شروع کنید، tmux انتخاب مناسبتری خواهد بود.
مدیریت افزونهها با TPM
برای نصب مدیر افزونه tmux:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
افزودن به انتهای فایل تنظیمات:
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
run '~/.tmux/plugins/tpm/tpm'
نصب افزونهها:
Prefix + I
برخی افزونههای محبوب:
- tmux-resurrect
- tmux-continuum
- tmux-yank
- tmux-cpu
سخن پایانی
tmux یکی از ارزشمندترین ابزارهایی است که هر کاربر حرفهای لینوکس باید یاد بگیرد. شاید در روزهای اول حفظ کردن میانبرها کمی دشوار به نظر برسد، اما پس از مدتی استفاده، کار کردن بدون tmux برایتان عجیب خواهد شد.
اگر مدیریت سرورهای لینوکسی، برنامهنویسی، DevOps یا کارهای طولانی در ترمینال بخشی از فعالیت روزانه شماست، یادگیری tmux میتواند بهرهوری شما را به شکل چشمگیری افزایش دهد. پیشنهاد میشود ابتدا مدیریت سشنها و تقسیم صفحه را یاد بگیرید و سپس به سراغ شخصیسازی تنظیمات و استفاده از افزونهها بروید. در این صورت tmux به یکی از مهمترین ابزارهای روزمره شما تبدیل خواهد شد.
هشتگها: #لینوکس #برنامه_نویسی