tmux terminal multiplexer - mrolarik/simple-iot GitHub Wiki

tmux เป็นโปรแกรมที่อนุญาตให้ผู้ใช้งานสามารถที่จะเข้าถึง terminal ได้หลาย session โดยอยู่ภายใน terminal เดียว ซึ่งจะเป็นประโยชน์อย่างมากเมื่อต้องสั่งให้หลาย ๆ โปรแกรมทำงานพร้อมกัน จะได้หลีกเลี่ยงการเปิดหลาย ๆ terminal ให้เต็มหน้าจอ

tmux

การติดตั้งโปรแกรม 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
  • จากนั้นจะปรากฎหน้าจอดังต่อไปนี้ 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
  • ผลลัพธ์ที่ได้แสดงดังภาพดังต่อไปนี้
    tmux-new-session
  • สังเกตจากแถบด้านล่างจะปรากฎข้อความ [run_rpi] 0:bash* นั่นหมายถึงทำงานใน session ชื่อ run_rpi
  • จากนั้นทดสอบด้วยคำสั่ง linux เบื้องต้น เพื่อทดสอบการทำงานของ session ที่ชื่อ run_rpi เช่น
$ cd 
$ ls -la

run_rpi-ls

  • ขั้นตอนถัดไป ให้ออกจากโปรแกรม 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-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

รายละเอียดเพิ่มเติม