ใช้ tmux ให้คำสั่งทำงานต่อแม้ SSH หลุด
เวลารันคำสั่งที่ใช้เวลานานผ่าน SSH เช่น Import ไฟล์ SQL ขนาดหลาย GB, คัดลอกเว็บไซต์ไปอีกเครื่อง หรืออัปเกรดระบบ ถ้าอินเทอร์เน็ตสะดุดหรือปิดโน้ตบุ๊กกลางคัน การเชื่อมต่อ SSH จะหลุด และคำสั่งที่รันอยู่จะถูกหยุดไปด้วย ซึ่งบางครั้งทิ้งงานไว้ครึ่งทางจนต้องเริ่มใหม่หรือกู้ข้อมูล
tmux (Terminal Multiplexer) แก้ปัญหานี้โดยรัน Shell ไว้ใน Session บนเซิร์ฟเวอร์ แยกจากการเชื่อมต่อ SSH เมื่อ SSH หลุด Session ยังทำงานต่อ และคุณเข้ากลับมาดูหน้าจอเดิมได้ทุกเมื่อ นอกจากนี้ยังแบ่งหน้าจอเป็นหลายส่วนได้ เช่น รันงานด้านหนึ่งและดู Log อีกด้านหนึ่ง
สิ่งที่ต้องเตรียม
- เซิร์ฟเวอร์ Ubuntu 22.04/24.04 หรือ AlmaLinux/Rocky Linux 8-9 ที่เข้าผ่าน SSH ได้
- สิทธิ์ sudo สำหรับติดตั้งแพ็กเกจ (การใช้งาน tmux เองไม่ต้องใช้ sudo)
ขั้นตอนที่ 1: ติดตั้ง tmux
# Ubuntu
sudo apt update && sudo apt install tmux
# AlmaLinux / Rocky
sudo dnf install tmux
ตรวจเวอร์ชันด้วย tmux -V ควรเห็น tmux 3.x ใน Ubuntu Server หลาย Image มี tmux ติดตั้งมาแล้ว
ขั้นตอนที่ 2: สร้าง Session ที่มีชื่อ
tmux new -s import
หน้าจอจะดูเหมือนเดิม แต่มีแถบสถานะสีเขียวด้านล่างแสดงชื่อ Session [import] ตั้งชื่อตามงานเสมอ จะได้รู้ว่า Session ไหนทำอะไรเมื่อกลับมาภายหลัง จากนั้นรันงานตามปกติ เช่น
mysql -u root -p example_db < /home/admin/example_db.sql
ขั้นตอนการ Import ไฟล์ SQL ขนาดใหญ่ให้เร็วและปลอดภัย ดูเพิ่มเติมที่ นำเข้าไฟล์ SQL ขนาดใหญ่ผ่าน Command Line
ขั้นตอนที่ 3: Detach ออกจาก Session
คีย์ลัดของ tmux ขึ้นต้นด้วย Prefix คือ Ctrl+b วิธีกดคือกด Ctrl ค้างแล้วกด b ปล่อยทั้งสองปุ่ม แล้วจึงกดปุ่มคำสั่ง
กด Ctrl+b แล้วกด d เพื่อ Detach หน้าจอจะกลับสู่ Shell ปกติพร้อมข้อความ [detached (from session import)] ตอนนี้งานยังทำงานอยู่บนเซิร์ฟเวอร์ คุณออกจาก SSH หรือปิดเครื่องได้เลย ถ้า SSH หลุดเองระหว่างทาง ผลก็เหมือนการ Detach
ขั้นตอนที่ 4: กลับเข้า Session เดิม
SSH เข้าเซิร์ฟเวอร์อีกครั้งด้วยผู้ใช้เดิม แล้วดูรายการ Session
tmux ls
import: 1 windows (created Fri Sep 19 10:02:11 2026)
tmux attach -t import
คุณจะเห็นหน้าจอเดิมพร้อมผลลัพธ์ทั้งหมดที่เกิดขึ้นระหว่างที่ไม่ได้ดู ถ้ามีเพียง Session เดียว ใช้ tmux a สั้น ๆ ได้ เมื่องานเสร็จ พิมพ์ exit ใน Session เพื่อปิด หรือสั่งจากภายนอกด้วย tmux kill-session -t import
ขั้นตอนที่ 5: ใช้หลาย Window และแบ่ง Pane
Session หนึ่งมีได้หลาย Window (คล้ายแท็บ) และแต่ละ Window แบ่งเป็นหลาย Pane ได้ คีย์ลัดที่ใช้บ่อย (กด Ctrl+b ก่อนทุกครั้ง)
| คีย์ | ผล |
|---|---|
d | Detach ออกจาก Session |
c | สร้าง Window ใหม่ |
n / p | ไป Window ถัดไป / ก่อนหน้า |
0 ถึง 9 | ไป Window หมายเลขนั้น |
, | เปลี่ยนชื่อ Window |
% | แบ่ง Pane ซ้ายขวา |
" | แบ่ง Pane บนล่าง |
| ลูกศร | ย้ายไป Pane อื่น |
z | ขยาย Pane ปัจจุบันเต็มจอ กดซ้ำเพื่อคืน |
x | ปิด Pane ปัจจุบัน (ถามยืนยันก่อน) |
[ | โหมดเลื่อนดูผลลัพธ์ย้อนหลัง ใช้ลูกศรหรือ PageUp กด q เพื่อออก |
s | แสดงรายการ Session ให้เลือกสลับ |
ตัวอย่างการใช้จริง: ใน Session import กด Ctrl+b แล้ว " เพื่อแบ่งจอบนล่าง ด้านบนรันงาน ด้านล่างรัน top หรือ tail -f ดู Log ไปพร้อมกัน
ขั้นตอนที่ 6: ตั้งค่าที่ทำให้ใช้งานง่ายขึ้น
สร้างไฟล์ ~/.tmux.conf ในโฮมของผู้ใช้
set -g mouse on
set -g history-limit 50000
set -g base-index 1
setw -g pane-base-index 1
mouse on ให้คลิกเลือก Pane ลากปรับขนาด และเลื่อน Scroll ด้วยเมาส์ได้ history-limit เพิ่มจำนวนบรรทัดที่เลื่อนดูย้อนหลังได้ ส่วน base-index 1 ให้เลข Window เริ่มที่ 1 ซึ่งตรงกับตำแหน่งปุ่มบนคีย์บอร์ด โหลดค่าใหม่เข้า Session ที่เปิดอยู่ด้วย
tmux source-file ~/.tmux.conf
เมื่อเปิด mouse แล้ว การลากเลือกข้อความจะเป็นของ tmux แทนโปรแกรม Terminal ถ้าต้องการคัดลอกข้อความไปวางบนเครื่องของคุณ ให้กด Shift ค้างขณะลากเลือก (บน macOS ใน iTerm2 ใช้ Option ส่วนใน Terminal ใช้ Fn)
งานที่ควรรันใน tmux เสมอ
- Import หรือ Dump ฐานข้อมูลขนาดใหญ่
- คัดลอกหรือซิงก์ไฟล์จำนวนมากด้วย
rsyncหรือscpดู โอนไฟล์ระหว่างเครื่องด้วย scp และ sftp - อัปเกรดแพ็กเกจจำนวนมาก หรือคำสั่งที่ใช้เวลาเกินไม่กี่นาที (สำหรับ
do-release-upgradeตัวโปรแกรมจะเปิด screen สำรองให้เองอยู่แล้ว ดู อัปเกรด Ubuntu เป็น LTS รุ่นใหม่) - การแก้ไข Firewall หรือเครือข่ายที่อาจทำให้การเชื่อมต่อสะดุด เพื่อให้คำสั่งทำงานจนจบแม้ SSH หลุด แต่ต้องเปิด Session SSH ที่สองทดสอบก่อนปิดหน้าต่างเดิมเสมอ
ตรวจสอบผลลัพธ์
- สร้าง Session ทดสอบด้วย
tmux new -s test - รัน
for i in $(seq 1 300); do date; sleep 1; doneซึ่งพิมพ์เวลาทุกวินาทีเป็นเวลา 5 นาที - ปิดหน้าต่าง SSH ทันทีโดยไม่ Detach
- รอประมาณ 1 นาที แล้ว SSH เข้าใหม่และรัน
tmux attach -t test - ถ้าเห็นเวลาพิมพ์ต่อเนื่องไม่ขาดช่วงระหว่างที่หลุด แปลว่า tmux ทำงานถูกต้อง กด
Ctrl+Cแล้วexitเพื่อปิด
ปัญหาที่พบบ่อย
tmux ls แสดง no server running
ไม่มี Session ของผู้ใช้นี้ Session ของ tmux แยกตามผู้ใช้ ถ้าตอนสร้างใช้ sudo -i เป็น root ก่อน ต้องเป็น root ก่อนเช่นกันจึงจะเห็น นอกจากนี้ Session จะหายเมื่อเครื่องรีบูต เพราะอยู่ในหน่วยความจำ
sessions should be nested with care
คุณกำลังพยายามเปิด tmux ซ้อนใน tmux ให้ Detach ออกก่อน แล้วจึง attach Session ที่ต้องการ หรือสลับ Session จากภายในด้วย Ctrl+b แล้ว s
หน้าจอเล็กผิดปกติหรือมีจุดเต็มขอบจอ
มี Client อื่นที่ Attach Session เดียวกันอยู่ด้วยหน้าจอขนาดเล็กกว่า เช่น หน้าต่างเก่าที่ยังไม่หลุด ให้ attach ด้วย tmux attach -d -t ชื่อ เพื่อตัด Client อื่นออก
ไม่มี tmux และติดตั้งไม่ได้
ใช้ screen แทนได้ (screen -S ชื่อ, Detach ด้วย Ctrl+a แล้ว d, กลับด้วย screen -r ชื่อ) หรือกรณีงานที่ไม่ต้องดูหน้าจอ ใช้ nohup คำสั่ง > output.log 2>&1 & ซึ่งรันงานต่อแม้ SSH หลุด และเก็บผลลัพธ์ลงไฟล์ สำหรับงานที่ต้องรันตามเวลาเป็นประจำ ให้ใช้ Cronjob หรือ systemd แทน ดู จัดการ Service บน Linux ด้วย systemctl
หากทำตามขั้นตอนแล้วยังติดปัญหา สามารถติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/ โดยแจ้งชื่อเซิร์ฟเวอร์ ระบบปฏิบัติการ คำสั่งที่ใช้ และข้อความ Error ที่พบ เพื่อให้ตรวจสอบได้รวดเร็วขึ้น
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


