ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

Home คำสั่ง Linux พื้นฐานที่ผู้ดูแลเซิร์ฟเวอร์ควรรู้

คำสั่ง Linux พื้นฐานที่ผู้ดูแลเซิร์ฟเวอร์ควรรู้

เมื่อเข้าเซิร์ฟเวอร์ Linux ผ่าน SSH ได้แล้ว งานส่วนใหญ่ของผู้ดูแลระบบจะวนอยู่กับคำสั่งชุดเดิมไม่กี่สิบคำสั่ง ได้แก่ การเดินไปตามโฟลเดอร์ การดูและแก้ไฟล์ การค้นหาข้อความใน Log การตรวจพื้นที่ดิสก์ และการดูว่า Process ใดกำลังทำงานอยู่ บทความนี้รวบรวมคำสั่งเหล่านั้นไว้ในที่เดียว พร้อมตัวอย่างที่ใช้ได้จริงบน Ubuntu 22.04/24.04 และ AlmaLinux/Rocky Linux 8-9

คำสั่งเกือบทั้งหมดในบทความนี้เหมือนกันทุก Distribution ส่วนที่ต่างกันจริงคือตัวจัดการแพ็กเกจ (apt บน Ubuntu และ dnf บน AlmaLinux/Rocky) ซึ่งจะแยกให้ดูในหัวข้อของมัน

สิ่งที่ต้องเตรียม

ขั้นตอนที่ 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

ขั้นตอนที่ 7: ดูและหยุด Process

top
ps aux --sort=-%mem | head -n 10
pgrep -a php-fpm
kill 12345
kill -9 12345

top แสดง Process ที่ใช้ CPU มากที่สุดแบบสด กด M เพื่อเรียงตาม RAM และกด q เพื่อออก ps aux พร้อม --sort=-%mem แสดง Process ที่ใช้ RAM มากที่สุด kill ส่งสัญญาณให้โปรแกรมปิดตัวอย่างเรียบร้อย ใช้ kill -9 เฉพาะเมื่อโปรแกรมค้างจริง เพราะโปรแกรมจะไม่มีโอกาสบันทึกข้อมูลก่อนปิด สำหรับ Service อย่าง Nginx หรือ MySQL ให้ใช้ systemctl แทนการ kill ดูที่ จัดการ Service บน Linux ด้วย systemctl

ขั้นตอนที่ 8: ตรวจเครือข่าย

ip -br addr
ip route
ping -c 4 8.8.8.8
curl -I https://example.com
sudo ss -tulpn

ip -br addr แสดง IP ของแต่ละ Interface แบบย่อ ip route แสดง Default Gateway curl -I ขอเฉพาะ HTTP Header ใช้ดูว่าเว็บตอบ 200, 301 หรือ 500 ส่วน ss -tulpn แสดงพอร์ตที่เปิดรออยู่พร้อมชื่อโปรแกรม รายละเอียดเพิ่มเติมอยู่ใน ตรวจสอบพอร์ตที่เปิดอยู่บน Linux ด้วย ss และ lsof

ขั้นตอนที่ 9: ติดตั้งและอัปเดตแพ็กเกจ

งานUbuntuAlmaLinux / Rocky
อัปเดตรายการแพ็กเกจsudo apt updatesudo dnf check-update
อัปเกรดทั้งหมดsudo apt upgradesudo dnf upgrade
ติดตั้งsudo apt install htopsudo dnf install htop (ต้องเปิด EPEL ก่อน)
ค้นหาapt search nginxdnf search nginx
ลบsudo apt remove htopsudo dnf remove htop

บน AlmaLinux/Rocky แพ็กเกจเสริมหลายตัว เช่น htop อยู่ใน EPEL ให้เปิดด้วย sudo dnf install epel-release ก่อน การอัปเดตอัตโนมัติบน Ubuntu ดูได้ใน อัปเดตแพ็กเกจและเปิด Security Update อัตโนมัติบน Ubuntu

ขั้นตอนที่ 10: ใช้ประวัติคำสั่งและคู่มือในเครื่อง

history | tail -n 20
man find
ls --help

กด Ctrl+R แล้วพิมพ์บางส่วนของคำสั่งเพื่อค้นหาคำสั่งที่เคยใช้ กด Tab เพื่อเติมชื่อไฟล์หรือคำสั่งอัตโนมัติ ซึ่งช่วยลดการพิมพ์ผิดได้มาก และ man เปิดคู่มือฉบับเต็มของคำสั่งนั้น

ตรวจสอบผลลัพธ์

ลองทำแบบฝึกหัดสั้น ๆ นี้บนเซิร์ฟเวอร์ทดสอบ ถ้าทำได้ครบแสดงว่าพร้อมใช้งานคำสั่งพื้นฐานแล้ว

  1. รัน df -h และบอกได้ว่า / เหลือพื้นที่เท่าไร
  2. สร้างโฟลเดอร์ ~/lab คัดลอกไฟล์ /etc/hosts เข้าไป แล้วดูด้วย ls -lah ~/lab
  3. ใช้ grep หาคำว่า localhost ในไฟล์ที่คัดลอกมา
  4. ลบโฟลเดอร์ ~/lab ด้วย rm -r ~/lab แล้วยืนยันด้วย ls ~ ว่าหายไปแล้ว

ปัญหาที่พบบ่อย

Permission denied

ผู้ใช้ปัจจุบันไม่มีสิทธิ์อ่านหรือเขียนไฟล์นั้น ถ้าเป็นไฟล์ระบบให้เติม sudo หน้าคำสั่ง ถ้าเป็นไฟล์เว็บไซต์ให้ตรวจเจ้าของไฟล์ด้วย ls -l อย่าแก้ด้วยการ chmod 777

command not found

โปรแกรมยังไม่ได้ติดตั้ง หรือพิมพ์ชื่อผิด เช่น htop ไม่มีมาให้บนบาง Image ให้ติดตั้งผ่าน apt หรือ dnf ตามตารางด้านบน

No such file or directory

มักเกิดจากพิมพ์ Path ผิดตัวพิมพ์เล็กใหญ่ หรือใช้ Path แบบสัมพัทธ์ขณะอยู่ผิดโฟลเดอร์ ให้ตรวจด้วย pwd และใช้ปุ่ม Tab เติมชื่อ ถ้าชื่อไฟล์มีช่องว่างให้ครอบด้วยเครื่องหมายคำพูด เช่น "my file.txt"

หน้าจอค้างหลังพิมพ์คำสั่ง

คำสั่งอย่าง tail -f หรือ top ทำงานต่อเนื่องจนกว่าจะสั่งหยุด ให้กด Ctrl+C หรือ q ถ้างานยาวอย่างการ Import ฐานข้อมูลต้องรันต่อแม้ SSH หลุด ให้ใช้ tmux

หากทำตามขั้นตอนแล้วยังติดปัญหา สามารถติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/ โดยแจ้งชื่อเซิร์ฟเวอร์ ระบบปฏิบัติการ คำสั่งที่ใช้ และข้อความ Error ที่พบ เพื่อให้ตรวจสอบได้รวดเร็วขึ้น

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security