tmux terminal multiplexer - mrolarik/simple-iot GitHub Wiki
tmux เป็นโปรแกรมที่อนุญาตให้ผู้ใช้งานสามารถที่จะเข้าถึง terminal ได้หลาย session โดยอยู่ภายใน terminal เดียว ซึ่งจะเป็นประโยชน์อย่างมากเมื่อต้องสั่งให้หลาย ๆ โปรแกรมทำงานพร้อมกัน จะได้หลีกเลี่ยงการเปิดหลาย ๆ terminal ให้เต็มหน้าจอ
การติดตั้งโปรแกรม tmux
- ให้เปิด terminal และพิมพ์คำสั่ง tmux ดังตัวอย่างต่อไปนี้
$ tmux
The program 'tmux' is currently not installed. You can install it by typing:
sudo apt install tmux
- จากตัวอย่างหากยังไม่ได้ติดตั้งโปรแกรม tmux จะขึ้นข้อความเตือน และบอกวิธีการติดตั้งโปรแกรมให้ ดังนั้น ให้พิมพ์คำสั่งดังต่อไปนี้เพื่อติดตั้งโปรแกรม tmux
* จากนั้นจะปรากฎหน้าจอดังต่อไปนี้
![nano](https://github.com/mrolarik/simple-iot/raw/master/img/nano-image/nano-01.png)
sudo apt install tmux
- ระบบจะตรวจสอบ package และทำการติดตั้งโปรแกรม tmux
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
blender-data libasound2-dev libcuda1-367 libcuda1-375 libjemalloc1
libopencolorio1v5 libopenimageio1.6 libportaudiocpp0 libsamplerate0:i386
libspeexdsp1:i386 libspnav0 libtinyxml2.6.2v5 libyaml-cpp0.3v5
linux-headers-4.4.0-112 linux-headers-4.4.0-112-generic
linux-headers-4.4.0-119 linux-headers-4.4.0-119-generic
linux-headers-4.4.0-121 linux-headers-4.4.0-121-generic
linux-headers-4.4.0-127 linux-headers-4.4.0-127-generic
linux-image-4.4.0-112-generic linux-image-4.4.0-119-generic
linux-image-4.4.0-121-generic linux-image-4.4.0-127-generic
linux-image-extra-4.4.0-112-generic linux-image-extra-4.4.0-119-generic
linux-image-extra-4.4.0-121-generic linux-image-extra-4.4.0-127-generic
nvidia-367 nvidia-367-dev nvidia-375 nvidia-375-dev nvidia-opencl-icd-367
nvidia-opencl-icd-375 uuid-dev
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
tmux
0 upgraded, 1 newly installed, 0 to remove and 173 not upgraded.
Need to get 223 kB of archives.
After this operation, 601 kB of additional disk space will be used.
Get:1 http://th.archive.ubuntu.com/ubuntu xenial/main amd64 tmux amd64 2.1-3build1 [223 kB]
Fetched 223 kB in 0s (684 kB/s)
Selecting previously unselected package tmux.
(Reading database ... 614642 files and directories currently installed.)
Preparing to unpack .../tmux_2.1-3build1_amd64.deb ...
Unpacking tmux (2.1-3build1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up tmux (2.1-3build1) ...
การเข้าใช้โปรแกรม tmux
- เมื่อติดตั้งโปรแกรม tmux เสร็จเรียบร้อย สามารถใช้งานโดยพิมพ์คำสั่ง ดังต่อไปนี้
$ tmux
- จากนั้นจะปรากฎหน้าจอดังต่อไปนี้
- สังเกต แถบสีด้านล่าง จะเห็น
[1] 0:bash*
นั่นหมายความว่ากำลังทำงานอยู่ในโปรแกรม tmux ใน seesion 1
การออกจากโปรแกรม tmux
- การจะออกจากโปรแกรม tmux ใช้คำสั่ง
ctrl + b d
เมื่อออกจากโปรแกรม tmux จะปรากฎข้อความดังนี้
[detached (from session 1)]
- หมายถึงออกจากการทำงาน (detached) ใน session 1
การตรวจสอบ session
- หากต้องการทราบว่าได้เปิดการทำงาน tmux ไปทั้งหมดกี่ session สามารถทำได้โดยพิมพ์คำสั่ง ดังต่อไปนี้
$ tmux ls
หรือ
$ tmux list-sessions
- โปรแกรมจะแสดง session ทั้งหมดที่ยังทำงานอยู่ ดังนี้
1: 1 windows (created Sun Jul 29 18:20:12 2018) [80x23]
rpi: 1 windows (created Sun Jul 29 17:42:15 2018) [80x23]
- จากตัวอย่าง มีทั้งสิ้น 2 session ประกอบด้วย session 1 และ session rpi
- ดังนั้น สามารถที่จะสร้าง session ใหม่พร้อมกำหนดชื่อของ session ได้
การสร้างและกำหนดชื่อ session
- หากต้องการสร้าง session และกำหนดชื่อของ session ขึ้นมาใหม่ โดยกำหนดใช้ session ชื่อ run_rpi สามารถทำได้ดังตัวอย่างต่อไปนี้
$ tmux new -s run_rpi
- ผลลัพธ์ที่ได้แสดงดังภาพดังต่อไปนี้
- สังเกตจากแถบด้านล่างจะปรากฎข้อความ
[run_rpi] 0:bash*
นั่นหมายถึงทำงานใน session ชื่อ run_rpi - จากนั้นทดสอบด้วยคำสั่ง linux เบื้องต้น เพื่อทดสอบการทำงานของ session ที่ชื่อ run_rpi เช่น
$ cd
$ ls -la
- ขั้นตอนถัดไป ให้ออกจากโปรแกรม tmux ด้วยคำสั่ง
ctrl + b d
- จะปรากฎข้อความดังต่อไปนี้ นั่นแสดงว่าออกจากการทำงานของ session run_rpi
[detached (from session run_rpi)]
การเรียกใช้งาน session เดิม
- หากต้องการที่จะเข้าไปใช้งาน session เดิม จากตัวอย่างก่อนหน้าได้สร้าง session ชื่อ run_rpi ดังนั้นสามารถเข้าไปใช้งาน session เดิม ดังต่อไปนี้
$ tmux a -t run_rpi
- โปรแกรม tmux จะเปิดใช้งาน session run_rpi และปรากฎหน้าจอเดิม เหมือนกับตอนที่ออกจากโปรแกรม
- เมื่อออกจากโปรแกรม tmux ในแต่ละ session จะยังไม่ถูกลบออกจากระบบ ดังนั้น หาก session ใดถูกสั่งให้ทำงาน (run) session นั้นก็จะทำงานไปจนกว่าจะเสร็จสิ้น ซึ่งเปรียบเสมือนทำงานอยู่ในแบบเบื้องหลัง (Background Process)
ลบ session ที่ไม่ต้องการ
- เมื่อสั่งให้แต่ละ session ทำงาน และทำงานเสร็จสิ้น โปรแกรม tmux จะไม่ลบ session ทิ้ง ดังนั้น session ทั้งหมดก็ยังคงอยู่
- หากไม่ต้องการให้ session ทำงานต้องการที่จะลบ (kill) seesion ที่ไม่ต้องการทิ้ง เช่น หากต้องการลบ session run_rpi สามารถทำได้โดย
$ tmux kill-session -t run_rpi
- สามารถเข้าไปตรวจสอบว่าคำสั่งดังกล่าวได้ลบ session run_rpi ทิ้งหรือไม่ สามารถทำได้โดย
$ tmux ls
- หากไม่ปรากฎ session ใด ๆ โปรแกรมจะแสดงข้อความดังนี้
no server running on /tmp/tmux-1000/default
รายละเอียดเพิ่มเติม
- หากต้องการทราบรายละเอียดเพิ่มเติมสามารถเข้าไปค้นหาได้จากเว็บไซต์
- https://tmuxcheatsheet.com/
- https://gist.github.com/MohamedAlaa/2961058