Linux Commands Reference

รวมคำสั่ง Linux ที่ใช้บ่อย พร้อมคำอธิบายภาษาไทยและตัวอย่างการใช้งาน

ไฟล์และไดเรกทอรี 10 คำสั่ง
ls -la แสดงรายการไฟล์และโฟลเดอร์ทั้งหมด รวมถึงไฟล์ซ่อน พร้อม permission และขนาด ls -la /var/www/html
cd /path เปลี่ยน working directory ไปยัง path ที่ระบุ cd /etc/nginx/conf.d
pwd แสดง path ของ directory ปัจจุบัน pwd # → /home/ubuntu
mkdir -p dir สร้างโฟลเดอร์ใหม่ รวมถึง parent directories ที่ยังไม่มี mkdir -p /opt/myapp/logs
rm -rf dir ลบไฟล์หรือโฟลเดอร์แบบ recursive โดยไม่ถามยืนยัน (ระวัง!) rm -rf /tmp/old-backups
cp -r src dst คัดลอกไฟล์หรือโฟลเดอร์ (recursive สำหรับโฟลเดอร์) cp -r /opt/myapp /opt/myapp-backup
mv src dst ย้ายไฟล์/โฟลเดอร์ หรือเปลี่ยนชื่อ mv config.php.bak config.php
touch file สร้างไฟล์เปล่า หรืออัปเดต timestamp ของไฟล์ที่มีอยู่ touch /var/log/myapp.log
ln -s target link สร้าง symbolic link (shortcut) ไปยัง target ln -s /opt/node/bin/node /usr/local/bin/node
find /path -name "*.txt" ค้นหาไฟล์ตามชื่อแบบ recursive find /var/log -name "*.log" -mtime +7
สิทธิ์และเจ้าของ 8 คำสั่ง
chmod 755 file เปลี่ยน permission ของไฟล์/โฟลเดอร์ (rwxr-xr-x) chmod -R 755 /var/www/html
chown user:group file เปลี่ยนเจ้าของและกลุ่มของไฟล์/โฟลเดอร์ chown -R www-data:www-data /var/www/html
chgrp group file เปลี่ยนกลุ่มของไฟล์/โฟลเดอร์ chgrp developers /opt/project
umask 022 กำหนด default permission mask สำหรับไฟล์/โฟลเดอร์ที่สร้างใหม่ umask 027 # files=640, dirs=750
sudo command รันคำสั่งด้วยสิทธิ์ root หรือ user อื่น sudo systemctl restart nginx
su - user เปลี่ยนไปใช้ user อื่น พร้อม login environment su - deploy
id แสดง UID, GID และกลุ่มทั้งหมดของ user ปัจจุบัน id ubuntu # uid=1000(ubuntu) gid=1000(ubuntu)
whoami แสดงชื่อ user ที่ใช้งานอยู่ปัจจุบัน whoami # → ubuntu
เครือข่าย 10 คำสั่ง
ip addr show แสดง IP address ของ network interfaces ทั้งหมด ip addr show eth0
ip route show แสดง routing table ของระบบ ip route show default
ping -c 4 host ทดสอบการเชื่อมต่อไปยัง host โดยส่ง 4 packet ping -c 4 8.8.8.8
netstat -tulpn แสดง port ที่กำลัง listen พร้อม process ที่ใช้งาน netstat -tulpn | grep :80
ss -tulpn แสดง socket statistics (ทดแทน netstat ที่ทันสมัยกว่า) ss -tulpn | grep LISTEN
curl -I url ดู HTTP response headers ของ URL curl -I https://example.com
wget url ดาวน์โหลดไฟล์จาก URL wget https://example.com/file.tar.gz
dig domain ค้นหาข้อมูล DNS ของ domain dig example.com A +short
nslookup domain ค้นหาข้อมูล DNS แบบ interactive nslookup -type=MX example.com
traceroute host ติดตามเส้นทาง packet ไปยัง host แสดงทุก hop traceroute 8.8.8.8
กระบวนการ 10 คำสั่ง
ps aux แสดง process ทั้งหมดที่กำลังรันอยู่พร้อม CPU/Memory usage ps aux | grep nginx
top แสดง process แบบ real-time พร้อมการใช้ CPU และ Memory top -b -n 1 | head -20
htop แสดง process แบบ interactive มี UI สวยกว่า top htop -u www-data
kill -9 PID ส่ง SIGKILL บังคับหยุด process ทันที kill -9 $(pgrep -f myapp)
killall process หยุด process ทุก instance ตามชื่อ killall -9 php-fpm
bg %1 ส่ง job ที่ถูก suspend ไปรันใน background bg %1 # หลังกด Ctrl+Z
fg %1 นำ background job กลับมา foreground fg %1
jobs แสดงรายการ jobs ทั้งหมดในเซสชั่นปัจจุบัน jobs -l # แสดง PID ด้วย
nohup cmd & รัน command ที่ไม่หยุดทำงานเมื่อออกจาก terminal nohup ./server.sh > server.log 2>&1 &
nice -n 10 cmd รัน command ด้วย priority ต่ำลง (ไม่แย่ง CPU) nice -n 19 tar -czf backup.tar.gz /data
ดิสก์และพื้นที่ 8 คำสั่ง
df -h แสดงพื้นที่ดิสก์ทั้งหมดและที่ใช้ไปในหน่วยที่อ่านง่าย df -h /var/www
du -sh dir แสดงขนาดรวมของโฟลเดอร์ du -sh /var/log/*
lsblk แสดงรายการ block devices (disk, partition) แบบ tree lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
fdisk -l แสดงข้อมูล partition ของดิสก์ทั้งหมด fdisk -l /dev/sda
mount /dev/sdb1 /mnt mount partition เพื่อใช้งาน mount -t ext4 /dev/sdb1 /mnt/data
umount /mnt ยกเลิก mount partition umount /mnt/data
mkfs.ext4 /dev/sdb1 สร้าง filesystem ext4 บน partition (จะลบข้อมูลทั้งหมด!) mkfs.ext4 -L "data" /dev/sdb1
fsck /dev/sdb1 ตรวจสอบและซ่อมแซม filesystem (ต้อง unmount ก่อน) fsck -y /dev/sdb1
บีบอัด/แตกไฟล์ 7 คำสั่ง
tar -czf archive.tar.gz dir บีบอัดโฟลเดอร์เป็นไฟล์ .tar.gz tar -czf backup-$(date +%F).tar.gz /var/www
tar -xzf archive.tar.gz แตกไฟล์ .tar.gz ใน directory ปัจจุบัน tar -xzf archive.tar.gz -C /opt/
gzip file บีบอัดไฟล์เป็น .gz (แทนที่ไฟล์เดิม) gzip -k access.log # -k เก็บไฟล์เดิมไว้
gunzip file.gz แตกไฟล์ .gz gunzip access.log.gz
zip -r archive.zip dir สร้างไฟล์ .zip จากโฟลเดอร์ zip -r website.zip /var/www/html
unzip archive.zip แตกไฟล์ .zip unzip archive.zip -d /opt/myapp
bzip2 file บีบอัดไฟล์เป็น .bz2 (บีบได้ดีกว่า gzip แต่ช้ากว่า) bzip2 -k largefile.sql
ค้นหาข้อมูล 10 คำสั่ง
grep -r "text" /path ค้นหาข้อความใน files แบบ recursive grep -r "DB_PASSWORD" /var/www --include="*.php"
find / -name file ค้นหาไฟล์จากทั้งระบบตามชื่อ find /etc -name "*.conf" -type f
locate file ค้นหาไฟล์จาก database ที่ cache ไว้ (เร็วกว่า find) locate nginx.conf
which cmd หา full path ของ command ใน PATH which php # → /usr/bin/php
whereis cmd หา binary, manual และ source ของ command whereis nginx
awk '{print $1}' file ประมวลผล text ตาม pattern พิมพ์คอลัมน์แรก awk -F: '{print $1}' /etc/passwd
sed 's/old/new/g' file แทนที่ข้อความทุก instance ใน file sed -i 's/localhost/127.0.0.1/g' config.php
sort file เรียงลำดับบรรทัดใน file ตามตัวอักษร sort -k2 -n file # เรียงตามคอลัมน์ 2 แบบตัวเลข
uniq file ลบบรรทัดที่ซ้ำกัน (ต้อง sort ก่อน) sort access.log | uniq -c | sort -rn
wc -l file นับจำนวนบรรทัดใน file wc -l /var/log/nginx/access.log
systemd/service 8 คำสั่ง
systemctl start svc เริ่มการทำงานของ service systemctl start nginx
systemctl stop svc หยุดการทำงานของ service systemctl stop mysql
systemctl restart svc รีสตาร์ท service (หยุดแล้วเริ่มใหม่) systemctl restart php8.2-fpm
systemctl enable svc ตั้งให้ service เริ่มอัตโนมัติเมื่อ boot systemctl enable --now nginx
systemctl disable svc ยกเลิกการ autostart ของ service systemctl disable apache2
systemctl status svc ดูสถานะการทำงานและ log ล่าสุดของ service systemctl status nginx --no-pager
journalctl -u svc -f ดู log ของ service แบบ real-time (follow mode) journalctl -u nginx -f --since "1 hour ago"
systemctl list-units --type=service แสดงรายการ service ทั้งหมดและสถานะ systemctl list-units --type=service --state=running
ดูข้อมูลระบบ 10 คำสั่ง
uname -a แสดงข้อมูล kernel และ OS ทั้งหมด uname -a # Linux hostname 5.15.0 ...
uptime แสดงเวลาที่ server ทำงาน และ load average uptime # up 30 days, load average: 0.5
free -h แสดงการใช้งาน RAM และ swap ในหน่วยที่อ่านง่าย free -h -s 5 # refresh ทุก 5 วินาที
vmstat 1 แสดงสถิติ CPU, memory, I/O แบบ real-time ทุก 1 วินาที vmstat 1 10 # แสดง 10 ครั้ง
lscpu แสดงข้อมูล CPU รายละเอียด (cores, architecture, speed) lscpu | grep -E "Model|CPU\(s\)|MHz"
cat /proc/cpuinfo แสดงข้อมูล CPU จาก kernel แบบละเอียด grep "model name" /proc/cpuinfo | head -1
dmesg | tail ดู kernel log ล่าสุด (hardware, boot, errors) dmesg -T | grep -i error | tail -20
last แสดงประวัติการ login เข้า-ออกของ users last -n 20 root
who แสดง user ที่กำลัง login อยู่ในขณะนี้ who -a # แสดงรายละเอียดเพิ่มเติม
date แสดงวันที่และเวลาปัจจุบันของระบบ date "+%Y-%m-%d %H:%M:%S"