วันพุธที่ 16 มกราคม พ.ศ. 2562

[Ubuntu] การใช้งาน Screen และ Terminal Multiplexer

ปกติแล้วเวลาเราทำการ Secure Shell เข้าไปเพื่อทำงานบ้างอย่าง พอเราออกมา Process พวกนั้นก็จะถูก Terminate ไปด้วย
หากเราต้องการจะให้มันทำงานต่อไปเรื่อยๆ แม้เราจะออกมาแล้วจะทำยังไง ผมได้ไปค้นหาข้อมูลดูก็เจอ 2 ตัวนี้คือ screen และ tmux
เท่าที่ผมรู้ตัว screen เป็นตัวเก่ามีมานานแล้ว พอลองไปเล่นที่เครื่องดูก็พบว่าติดตั้งไว้ให้อยู่แล้ว แต่พอหัดใช้สักพักรู้สึกงงๆ
ผมเลยลองเล่นอีกตัวที่เขาแนะนำมาคือ tmux ชื่อเต็มๆ คือ Terminal Multiplexer ครับ

การใช้งาน GNU Screen

ตัว GNU Screen ก็จะมี Session, Window, Region
เมื่อเราทำการสร้าง session เราจะมีอยู่แล้ว 1 window แล้วถ้าจะ split หน้าจอก็จะเรียกว่า region

การจัดการ Session

# list screen session
$ screen -ls

# create screen session
$ screen
or 
$ screen -S name

# detach screen session
"Ctrl + a" then "d" 
or
$ screen -d <session-id|session-name>

# reattach screen session
$ screen -r <session-id|session-name>

# terminate screen session
"Ctrl + a" then "k"
or
"Ctrl + d"
or 
$ exit

การจัดการ Window

# list window
"Ctrl + a" then """

# create new window
"Ctrl + a" then "c"

# rename window
"Ctrl + a" then "A"

# switch to window number
"Ctrl + a" then "0" to "9"

# change window next, or previous
"Ctrl + a" then "n" or "p"

การจัดการ Region

# split screen (create region)/ vertical 
"Ctrl + a" then "|"

# split screen (create region)/ horizontal
"Ctrl + a" then "S"

# change split screen (change focus region)
"Ctrl + a" then "Tab"

# close split screen (region)
"Ctrl + a" then "X"

# close all split screen (all region)
"Ctrl + a" then "Q"

การใช้งาน tmux

tmux สามารถติดตั้งได้โดยคำสั่ง (Ubuntu 18.04)
# use snap to install terminal multiplexer
sudo snap install tmux
tmux ใช้งานง่ายโดยต้องทำความเข้าใจก่อน 3 ส่วนแรก ได้แก่ session, window, panes ครับ
session เป็นส่วนของการติดต่อโดยใน session ก็ จะมี window กับ panes
window เป็นหน้าจอใหญ่ หน้าจอเดียว และถ้าต้องการแบ่งหน้าก็จะเรียกว่า panes ครับ
# list session are running
$ tmux ls

# output show is no have any session
no server running on /tmp/tmux-1000/default

# create new connection
$ tmux new -s <session-name>

สังเกตุได้จาก status bar ที่อยู่ด้านล่างสีเขียวๆ ครับ แสดงแบบนี้ [sarankon] 0:bash*
แสดงว่าเราอยู่ session แล้วชื่อ sarankon มี window เลขที่ 0 ชื่อว่า bash ส่วน * คือบอกเราว่าเราอยู่ที่ window นี้
เมื่อเราต้องการออกจาก session แต่ยังไม่ต้องการ terminate session ไปเพื่อให้เรากลับมาดูที่หลังให้เรากด key
"Ctrl + b" จากนั้นพิมพ์ "d" เพื่อทำการ Detach ออกมากสู่ Secure Shell หลักของเรา โดย session ยังทำงานอยู่
แล้วลองพิมพ์คำสั่ง tmux ls ดูจะเห็นว่ามี session และมีจำนวน window บอกไว้ด้วย


เมื่อต้องการกลับเข้าไปใน session ให้เราพิมพ์ tmux a -t ก็จะกลับเข้าไปทำงานต่อได้เลยครับ
เท่านี้เราก็สามารถ run คำสั่งทิ้งไว้ในเครื่องได้แล้วครับ

สรุปคำสั่งที่ใช้บ่อยๆ ครับ

Session

### Session Management
# list tmux session
$ tmux ls 

# create tmux session
$ tmux new -s <session-name>

# rename tmux session
"Ctrl+b" then "$"

# show session list and structure
"Ctrl+b" then "s"

# detach session
"Ctrl+b" then "d"

# reattach session
$ tmux a -t <session-name>

Window

### Window Management
# create new window
"Ctrl+b" then "c"

# rename window
"Ctrl+b" then ","

# show window list and structure
"Ctrl+b" then "w"

# change to next window or previous windows
"Ctrl+b" then "n" or "p"

# change to window number
"Ctrl+b" then "0" to "9"

Panes

## Panes Management
# Split to vertical panes [-]
"Ctrl+b" then "%" S

# Split to horizontal panes [|]
"Ctrl+b" then """

# Move panes
"Ctrl+b" then "{" or "}" 

# Use next panes
"Ctrl+b" then "o"

# Make panes to window
"Ctrl+b" then "!"

# Minimize and Maximize panes
"Ctrl+b" then "z"

# Resize panes
"Ctrl+b" then "<arrow-key>"

# Terminate panes
"Ctrl+b" then "x"
or "Ctrl+d"
or $ exit

คำสั่ง break-pane ใช้เหมือนกันกับ make pane to window และ join-pane ใช้เพื่อ split
เมื่อเราต้องการใช้งาน ให้เรากด key "Ctrl+b" then ":" จากนั้นถึงพิมพ์ คำสั่ง
# join number from คือเอา window number นั้นมา join
join-pane -s <windows-number> [-v|-h]
# join number to คือเอา window ที่เราทำงานอยู่ไป join กับ window number นั้น
join-pane -t <windows-number> [-v|-h]

# -v Vertical [-], -h Horizontal [|]



ขอบคุณข้อมูลจากเว็บ
Linuxize | How to use linux screen
Blog (Korakot Rakhuang) | How to use screen tmux

ไม่มีความคิดเห็น:

แสดงความคิดเห็น