برنامهای برای مدیریت
Shell
ها.
tmux به روی پوسته اجرا میشود و
با تعریف
پنجره
(window)
و
صفحه
(pane)
به تقسیم بهتر فضا کمک میکند.
tmux مثل
Screen
در ارتباط با سرور از طریق
SSH
به عنوان پوسته، کاربرد دارد.
به این وسیله، مجبور نیستیم چند ارتباط مجزا با سرور برقرار کنیم، در صورت قطع ارتباط، به راحتی میتوانیم فرآیند در حال اجرا را بازگردانیم
(attach)
و نیز اگر از طریق ارتباطی کند، در سرور در حال اجرای برنامهای هستیم که خروجی بی اهمیت زیادی تولید میکند و انتقال آهسته خروجی برنامه، سرعت پیشبرد کار را پایین میآورد،
میتوانید پنجره را عوض کنیم.
- تعریف صفحه و پنجره
- بافر اسکرول برای نمایش خروجی، انتخاب و کپی کردن
- انتقال صفحات بین tty های مختلف
- طراحی کلاینت-سروری
-
جدا
(detach)
کردن یک نشست(session)
و بازگردانی آن
کاربردها
جدا کردن یک نشست و بازگردانی آن
فرض کنید از طریق SSH با رایانهای دیگر ارتباط برقرار کردهاید و در آن با فراخوانی tmux مشغول عملیاتی هستید:
local $ ssh user@remote1 remote1 $ tmux remote1 (tmux) $ <C-b> c # make new window remote1 (tmux) $ ssh user@remote2 # ssh to another machine remote2 $ tailf_some_log_path # doing some works remote2 $ <C-b> n # switch tmux window remote1 (tmux) $ cd some_path; ./configure; make; # make work on remote1
در این شرایط حوصلهتان سر میرود و میخواهید ارتباط خود را با اینترنت قطع کنید.. کافی است این نشست (session)
را جدا کنید:
remote1 (tmux) $ <C-b> d # detach session [detached] remote1 $ <C-d> logout connection to remote1 closed. local $
عملیاتی که در رایانههای دیگر توسط شما شروع شدهاند، به کار خود ادامه میدهند. روز بعد میخواهید به همان محیطی که ترک کردید بازگردید:
local $ ssh user@remote1 remote1 $ tmux list-sessions 1: 2 windows (created Fir Jan 4 15:14:15 2013) [158x49] remote1 $ tmux attach-session -t 1 -d # attach session 1 and detach other references ... outputs for last compile in remote1 remote1 (tmux) $ <C-b> p # switch tmux window ... last tailf log remote2 $ # you're still connected to remote2
احتمالاً کمپایل برنامه تمام شده و ارتباط با remote2
هنوز برقرار است.
نمونه تنظیمات
# screen like set-option -g prefix C-a # nested tmux bind-key a send-prefix # vi mode set-window-option -g mode-keys vi set-option -g status-keys vi bind-key h select-pane -L bind-key j select-pane -D bind-key k select-pane -U bind-key l select-pane -R bind-key -r C-h resize-pane -L bind-key -r C-j resize-pane -D bind-key -r C-k resize-pane -U bind-key -r C-l resize-pane -R bind-key [ copy-mode bind-key ] paste-buffer bind-key -t vi-copy v begin-selection bind-key -t vi-copy y copy-selection bind-key -t vi-copy C-v rectangle-toggle # status and title set-option -g display-time 2001 set-option -g status 0 # I'm always using tmux set-option -g set-titles on set-option -g set-titles-string '#W' # make it easy for i3-msg # visual bell could be handled by xterm set-option -g visual-bell off set-window-option -g aggressive-resize on # copy-paste to X bind-key Y run "tmux show-buffer | xsel -i -b" bind-key P run "tmux set-buffer \"$(xsel -o -b)\"; tmux paste-buffer " bind-key Space choose-buffer bind-key | split-window -h