ปกติใน unix command ถ้าเรามีการ รัน command บางตัวที่ใช้เวลาในการโปรเซสนาน เช่น download kernel ไฟล์ใหญ่ๆ หรือ install module application ใหญ่ๆอยู่ ซึ่ง ณ เวลานั้น เราจำเป็นต้องออกจากออฟฟิศ แล้วไป รีโมตเข้าไปเชคจากที่อื่นอยู่
ใน unix จะมี command อยู่ สองตัวที่ อำนวยความสะดวกให้ ครับนั่นคือ
1. screen
2. tmux
ยกตัวอย่าง สถานะการณ์ ครับ
ผมนั่งรีโมตไปยัง server A ผ่าน SSH จากเครื่อง notebook ที่ office
เพื่อที่จะอัฟเดท kernel ของ debian
#apt-get upgrade
มีขึ้นมาให้อัฟเกรด 65 packages ใช้เวลาประมาณ 25 นาทีได้ (เนตช้า 1MB share 50 คน )
แต่จังหวะนั้น แฟนผมโทรมาว่าลืมกุญแจ เข้าห้องไม่ได้ ต้องให้ผมกลับมาด่วน (555) เหตุการณ์สมมติ นะครับ อิอิ
ผมไม่อยากเสียเวลา เลยให้มัน download packages รอครับ ก็จัดโดย
#screen
#apt-get upgrade
ออกจาก terminal ของ ssh ในเครื่อง client
#ctrl a+d
มาถึงห้องแล้ว ไขกุญแจ เปิดห้องให้แฟนเรียบร้อย
ผมก็นั่ง จิบชา แล้วก็ remote ผ่าน SSH เข้าไปที่ server A
แล้วทำการ โยก session ที่ทำค้างไว้กลับมา
#screen -r -d
ก็จะสามารถใช้เวลาได้อย่างคุ้มค่ามากที่สุด ครับ ฮ่าๆๆ : )
ตัว screen และ tmux สามารถ split session ได้นะครับ
ถ้าใน screen ก็
ctrl a + S(ใหญ่)
แล้ว
ctrl a +tab
เพื่อเลื่อนลงมาอีกหน้าที่ split ออก
แล้วทำการ
ctrl a +a
เพื่อให้ command promt แสดงออกมา
เวลาจะออกจาก ตัว split ก็
ctrl a + d ครับ
ข้อแตกต่างระหว่าง tmux กับ screen ครับผม
Action | tmux | screen |
start a new session | tmux OR tmux new OR tmux new-session |
screen |
re-attach a detached session | tmux attach OR tmux attach-session |
screen-r |
re-attach an attached session (detaching it from elsewhere) | tmux attach -d OR tmux attach-session -d |
screen -dr |
re-attach an attached session (keeping it attached elsewhere) | tmux attach OR tmux attach-session |
screen -x |
detach from currently attached session | ^b d OR ^b :detach |
^a ^d OR ^a :detach |
rename-window to newname | ^b , <newname> OR ^b :rename-window <newn> |
^a A <newname> |
list windows | ^b w | ^a w |
list windows in chooseable menu | ^a “ | |
go to window # | ^b # | ^a # |
go to last-active window | ^b l | ^a ^a |
go to next window | ^b n | ^a n |
go to previous window | ^b p | ^a p |
see keybindings | ^b ? | ^a ? |
list sessions | ^b s OR tmux ls OR tmux list-sessions |
screen -ls |
toggle visual bell | ^a ^g | |
create another window | ^b c | ^a c |
exit current shell/window | ^d | ^d |
split window/pane horizontally | ^b “ | ^a S |
split window/pane vertically | ^b % | ^a | |
switch to other pane | ^b o | ^a <tab> |
kill the current pane | ^b x OR (logout/^D) | |
collapse the current pane/split (but leave processes running) | ^a X | |
close other panes except the current one | ^b ! | |
cycle location of panes | ^b ^o | |
swap current pane with previous | ^b { | |
swap current pane with next | ^b } | |
show time | ^b t | |
show numeric values of panes | ^b q | |
toggle zoom-state of current pane (maximize/return current pane) | ^b z | |
break the current pane out of its window (to form new window) | ^b ! |
Special thank : http://www.dayid.org/comp/tm.html และ http://www.packetlove.com