วันพุธที่ 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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)
1
2
# use snap to install terminal multiplexer
sudo snap install tmux
tmux ใช้งานง่ายโดยต้องทำความเข้าใจก่อน 3 ส่วนแรก ได้แก่ session, window, panes ครับ
session เป็นส่วนของการติดต่อโดยใน session ก็ จะมี window กับ panes
window เป็นหน้าจอใหญ่ หน้าจอเดียว และถ้าต้องการแบ่งหน้าก็จะเรียกว่า panes ครับ
1
2
3
4
5
6
7
8
# 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
### 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
### 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
## 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 ":" จากนั้นถึงพิมพ์ คำสั่ง
1
2
3
4
5
6
# 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

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

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