คำตอบสั้น ๆ: รวมคำสั่ง Linux ที่ใช้บ่อยในงานดูแลเซิร์ฟเวอร์ ทั้งการจัดการไฟล์ ดูพื้นที่ดิสก์ ตรวจ Process และเครือข่าย พร้อมตัวอย่างที่นำไปใช้ได้ทันที
คู่มือนี้อธิบาย Linux ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
เมื่อเข้าเซิร์ฟเวอร์ Linux ผ่าน SSH ได้แล้ว งานส่วนใหญ่ของผู้ดูแลระบบจะวนอยู่กับคำสั่งชุดเดิมไม่กี่สิบคำสั่ง ได้แก่ การเดินไปตามโฟลเดอร์ การดูและแก้ไฟล์ การค้นหาข้อความใน Log การตรวจพื้นที่ดิสก์ และการดูว่า Process ใดกำลังทำงานอยู่ บทความนี้รวบรวมคำสั่งเหล่านั้นไว้ในที่เดียว พร้อมตัวอย่างที่ใช้ได้จริงบน Ubuntu 22.04/24.04 และ AlmaLinux/Rocky Linux 8-9
คำสั่งเกือบทั้งหมดในบทความนี้เหมือนกันทุก Distribution ส่วนที่ต่างกันจริงคือตัวจัดการแพ็กเกจ (apt บน Ubuntu และ dnf บน AlmaLinux/Rocky) ซึ่งจะแยกให้ดูในหัวข้อของมัน
สิ่งที่ต้องเตรียม
- เซิร์ฟเวอร์ Linux ที่เข้าผ่าน SSH ได้ (ถ้ายังไม่ได้ตั้งค่า SSH Key ดูบทความ ตั้งค่า SSH Key และปิดการเข้าสู่ระบบด้วยรหัสผ่านบน Linux)
- ผู้ใช้ที่มีสิทธิ์ sudo สำหรับคำสั่งที่ต้องใช้สิทธิ์ผู้ดูแล (ดู สร้างผู้ใช้ใหม่และให้สิทธิ์ sudo บน Linux)
- ความเข้าใจเบื้องต้นว่า Linux แยกตัวพิมพ์เล็กและใหญ่ในชื่อไฟล์
Backup.sqlกับbackup.sqlคือคนละไฟล์
ขั้นตอนที่ 1: รู้ว่าตัวเองอยู่ที่ไหนและเป็นใคร
ก่อนรันคำสั่งที่แก้ไขไฟล์ ควรเช็กทุกครั้งว่ากำลังอยู่โฟลเดอร์ไหน และใช้ผู้ใช้อะไร
whoami
pwd
hostnamectl
whoami แสดงชื่อผู้ใช้ปัจจุบัน pwd แสดงโฟลเดอร์ปัจจุบัน เช่น /home/admin และ hostnamectl แสดงชื่อเครื่อง ระบบปฏิบัติการ และเวอร์ชัน Kernel ซึ่งช่วยยืนยันว่ากำลังทำงานอยู่บนเครื่องที่ถูกต้อง โดยเฉพาะเมื่อเปิดหลายหน้าต่าง SSH พร้อมกัน
ขั้นตอนที่ 2: เดินไปตามโฟลเดอร์และดูรายการไฟล์
cd /var/www
ls -lah
cd ..
cd ~
cd -
ls -lah แสดงไฟล์ทั้งหมดรวมไฟล์ที่ขึ้นต้นด้วยจุด (ไฟล์ซ่อน เช่น .htaccess หรือ .env) พร้อมสิทธิ์ เจ้าของ ขนาดแบบอ่านง่าย (K, M, G) และวันที่แก้ไข ส่วน cd .. ขึ้นไปหนึ่งระดับ cd ~ กลับโฮมของผู้ใช้ และ cd - กลับไปโฟลเดอร์ก่อนหน้า ความหมายของคอลัมน์สิทธิ์อย่าง -rw-r--r-- อธิบายไว้ในบทความ ทำความเข้าใจสิทธิ์ไฟล์บน Linux ด้วย chmod และ chown
ขั้นตอนที่ 3: สร้าง คัดลอก ย้าย และลบไฟล์
mkdir -p /home/admin/backup/2026
cp -a /etc/nginx/nginx.conf /home/admin/backup/nginx.conf.bak
mv report.txt /home/admin/backup/
rm old-file.log
rm -r /home/admin/tmp-folder
mkdir -pสร้างโฟลเดอร์ซ้อนกันได้ในคำสั่งเดียว และไม่ Error ถ้ามีอยู่แล้วcp -aคัดลอกโดยรักษาสิทธิ์ เจ้าของ และวันที่ไว้ เหมาะกับการสำรองไฟล์ Config ก่อนแก้ไขmvใช้ทั้งย้ายและเปลี่ยนชื่อไฟล์rm -rลบโฟลเดอร์และทุกอย่างข้างใน
หมายเหตุ: Linux ไม่มีถังขยะสำหรับคำสั่ง
rmไฟล์ที่ลบแล้วกู้คืนไม่ได้ ก่อนใช้rm -rfให้รันpwdและlsดูเป้าหมายก่อนทุกครั้ง ระวังช่องว่างเกินในคำสั่ง เช่นrm -rf / home/admin/tmpจะพยายามลบทั้งระบบ และควรมีข้อมูลสำรองก่อนลบสิ่งที่สำคัญ
ขั้นตอนที่ 4: อ่านไฟล์และติดตาม Log
cat /etc/os-release
less /var/log/syslog
head -n 20 access.log
tail -n 50 /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
cat เหมาะกับไฟล์สั้น ส่วนไฟล์ยาวให้ใช้ less ซึ่งเลื่อนด้วยลูกศร ค้นหาด้วย /คำที่ต้องการ และกด q เพื่อออก tail -f จะแสดงบรรทัดใหม่ที่ถูกเขียนต่อท้ายไฟล์แบบสด เหมาะกับการเปิดดู Log ขณะทดลองเข้าเว็บ กด Ctrl+C เพื่อหยุด
ตำแหน่ง Log ระบบต่างกันตาม Distribution: Ubuntu ใช้ /var/log/syslog และ /var/log/auth.log ส่วน AlmaLinux/Rocky ใช้ /var/log/messages และ /var/log/secure และทั้งสองระบบอ่าน Log ของ Service ได้จาก journald ด้วย ดูรายละเอียดใน อ่าน Log ระบบบน Linux ด้วย journalctl
ขั้นตอนที่ 5: ค้นหาข้อความและค้นหาไฟล์
grep -i "error" /var/log/nginx/error.log
grep -rn "DB_PASSWORD" /var/www/example.com --include="*.php"
find /var/www -name "*.log" -size +100M
find /home/admin -type f -mtime -1
grep -i ค้นหาโดยไม่สนตัวพิมพ์เล็กใหญ่ -r ค้นทั้งโฟลเดอร์ และ -n แสดงเลขบรรทัด ส่วน find ค้นจากคุณสมบัติของไฟล์ ตัวอย่างข้างบนหาไฟล์ .log ที่ใหญ่กว่า 100 MB และหาไฟล์ที่ถูกแก้ไขภายใน 1 วันที่ผ่านมา ซึ่งมีประโยชน์มากเวลาสงสัยว่าเว็บถูกแก้ไฟล์โดยไม่ได้ตั้งใจ
คำสั่งสามารถต่อกันด้วยเครื่องหมาย | (Pipe) ได้ เช่น นับจำนวน IP ที่เข้าเว็บมากที่สุด 10 อันดับจาก Access Log
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -n 10
ขั้นตอนที่ 6: ตรวจพื้นที่ดิสก์และหน่วยความจำ
df -h
du -sh /var/log/*
free -h
uptime
df -h บอกพื้นที่ที่เหลือของแต่ละ Filesystem ถ้าคอลัมน์ Use% ของ / เกิน 90% ควรเริ่มหาไฟล์ใหญ่ทันที du -sh บอกขนาดรวมของแต่ละโฟลเดอร์ free -h แสดง RAM และ Swap โดยให้ดูคอลัมน์ available ไม่ใช่ free เพราะ Linux นำ RAM ว่างไปใช้เป็น Cache และคืนให้เมื่อโปรแกรมต้องการ ส่วน uptime บอกเวลาที่เครื่องเปิดมาและ Load Average การวิเคราะห์เชิงลึกมีในบทความ ดิสก์เต็ม: ตรวจสอบพื้นที่และหาไฟล์ขนาดใหญ่บน Linux และ ตรวจสอบ CPU, RAM และ Load Average ของ Linux Server