- Debian Linux Tutorial
- สารบัญ
- 1. เริ่มต้น
- 2. คำสั่งพื้นฐานและการใช้งาน Terminal
- 3. โครงสร้างไฟล์ใน Debian
- 4. การใช้คำสั่ง man และเอกสารช่วยเหลือ
- 5. การจัดการแพ็คเกจใน Debian
- 6. การจัดการผู้ใช้และกลุ่ม
- 7. พื้นฐานเครือข่ายและการบริหารระบบ
- 8. Shell Scripting
- 9. เครื่องมือเพิ่มเติมสำหรับ DevOps
- 10. การจัดการสิทธิ์ไฟล์และการบริหารโปรเซส
- 11. หัวข้อเพิ่มเติม
- 12. ระบบไฟล์ขั้นสูง
- 13. การจัดการผู้ใช้ขั้นสูง
- 14. ความปลอดภัยระบบ Linux
- 15. Systemd และการจัดการบริการ
- 16. Linux Performance Monitoring
- 17. การทำ Linux Automation
- 18. การสำรองข้อมูลและการกู้คืน
เปรียบเทียบกับ Windows:
- Windows: ส่วนใหญ่ใช้ Control Panel หรือ Settings ในการปรับแต่ง
- Linux: ใช้การแก้ไขไฟล์การตั้งค่าภายใน /etc
- Virtual Machine (VM): ใช้ VirtualBox, VMware หรือ Hyper-V เพื่อทดลองใช้งาน Linux โดยไม่กระทบระบบ Windows
- Dual Boot: ติดตั้ง Debian คู่กับ Windows
- Live USB: รัน Debian จาก USB โดยไม่ต้องติดตั้งลงฮาร์ดดิสก์
- WSL2 (Windows Subsystem for Linux 2): สำหรับผู้ใช้ Windows 10/11 สามารถติดตั้ง Debian ผ่าน WSL2 ได้ทันที
ตัวอย่างการติดตั้งผ่าน WSL2:
wsl --install -d Debianหลังการติดตั้ง ให้เปิด Windows Terminal แล้วเลือก Debian เพื่อเข้าใช้งาน
Terminal คือโปรแกรมที่ให้ผู้ใช้พิมพ์คำสั่งเพื่อควบคุมและบริหารระบบ Linux (คล้าย Command Prompt หรือ PowerShell ใน Windows)
pwd: แสดงไดเรกทอรีปัจจุบันls: แสดงรายชื่อไฟล์และโฟลเดอร์cd: เปลี่ยนไดเรกทอรีmkdir: สร้างโฟลเดอร์ใหม่touch: สร้างไฟล์ว่างcp,mv,rm: คัดลอก, ย้าย, ลบ ไฟล์หรือโฟลเดอร์
ตัวอย่างการใช้งาน:
pwd
ls -alF
cd /home/username/Documents
mkdir learn-debian
touch learn-debian/example.txt
cp source.txt destination.txt
mv file.txt newfile.txt
rm file.txt
rm -r foldername # ลบโฟลเดอร์พร้อมไฟล์ภายใน- เปิด Terminal ไปยังโฟลเดอร์ Home (
cd ~) - สร้างโฟลเดอร์ชื่อ
learn-debian - ภายในโฟลเดอร์ สร้างไฟล์ชื่อ
example.txt - ใช้
ls -lเพื่อตรวจสอบ
Linux ใช้โครงสร้างไฟล์แบบลำดับชั้น โดยมี Root Directory เป็น / แตกต่างจาก Windows ที่แบ่งเป็นไดรฟ์ C:, D: เป็นต้น
/
├── bin # คำสั่งพื้นฐานของผู้ใช้ทั่วไป
├── boot # ไฟล์สำหรับบูทระบบ เช่น kernel, boot loader
├── dev # ไฟล์อุปกรณ์
├── etc # ไฟล์ตั้งค่าระบบ
├── home # โฟลเดอร์ของผู้ใช้ (user home directories)
├── lib # ไลบรารีที่จำเป็น
├── media # จุด mount สำหรับอุปกรณ์ (USB/CD-ROM)
├── mnt # จุด mount ชั่วคราว
├── opt # โปรแกรม/แอปพลิเคชันเพิ่มเติม
├── proc # ไฟล์ระบบแบบเวอร์ชวล (process info)
├── root # โฟลเดอร์ home ของ root user
├── run # ไฟล์ runtime (PID, sock)
├── sbin # คำสั่งระบบ/ผู้ดูแลระบบ
├── sys # ไฟล์ระบบแบบเวอร์ชวล (hardware info)
├── tmp # ไฟล์ชั่วคราว
├── usr # ไฟล์/โปรแกรมที่ใช้ร่วมกัน
└── var # ไฟล์ที่มีการเปลี่ยนแปลงบ่อย (log, cache)
ls -l /
ls -la /etc
find / -name "ssh_config" 2>/dev/nullติดตั้ง tree (ถ้ายังไม่มี):
sudo apt install treeใช้ tree -L 2 / เพื่อดูโครงสร้างไฟล์แบบต้นไม้
ใช้ tree ดูโครงสร้างใน / หรือ /etc แล้วสังเกตการจัดเรียง
tree /etcMan Page (Manual Page) คือเอกสารออนไลน์ของ Linux ที่อธิบายวิธีใช้งานของคำสั่งต่าง ๆ
man lsใช้ปุ่มลูกศรหรือ Page Up/Down เพื่อเลื่อนดู
กด / ตามด้วยคำที่ต้องการค้นหา
กด q เพื่อออก
- NAME: ชื่อคำสั่งและคำอธิบายสั้น
- SYNOPSIS: รูปแบบการเรียกใช้งาน
- DESCRIPTION: คำอธิบายรายละเอียด
- OPTIONS: ตัวเลือกหรือ flag ที่ใช้กับคำสั่ง
- EXAMPLES: ตัวอย่างการใช้งาน
man -k network # ค้นหาคำสั่งที่เกี่ยวกับ network
man -f ls # แสดงข้อมูลสั้น ๆ ของ lsเปิด man grep
กด /option เพื่อค้นหาเรื่องของ option ใน man page
sudo apt update
sudo apt upgrade
sudo apt install <ชื่อแพ็คเกจ>
sudo apt remove <ชื่อแพ็คเกจ>
apt search <คำค้นหา>sudo apt update
sudo apt install nano
nano --versionสร้างผู้ใช้ใหม่:
sudo adduser <ชื่อผู้ใช้>เปลี่ยนรหัสผ่าน:
sudo passwd <ชื่อผู้ใช้>เพิ่มผู้ใช้เข้าในกลุ่ม:
sudo usermod -aG <ชื่อกลุ่ม> <ชื่อผู้ใช้>สร้างกลุ่มใหม่:
sudo groupadd <ชื่อกลุ่ม>เพิ่มผู้ใช้เข้าในกลุ่ม:
sudo usermod -aG <ชื่อกลุ่ม> <ชื่อผู้ใช้>ใช้ id <ชื่อผู้ใช้> เพื่อตรวจสอบว่าผู้ใช้อยู่ในกลุ่มใด
ip addr show: แสดงที่อยู่ IPping google.com: ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตnetstat -tulnหรือss -tuln: ดูพอร์ตที่เปิดรับการเชื่อมต่อ
/etc/hosts: แมปชื่อโฮสต์กับ IP/etc/resolv.conf: ตั้งค่า DNS Server
ใช้ ip addr show ตรวจสอบ IP
แก้ไข /etc/hosts เพิ่ม 127.0.0.1 mylocal.dev แล้วลอง ping mylocal.dev
Shell Scripting คือการเขียนโปรแกรม (สคริปต์) เพื่อสั่งงานซ้ำ ๆ และอัตโนมัติบน Shell
#!/bin/bash
echo "สวัสดี, $(whoami)! ยินดีต้อนรับสู่ Debian Linux."อ่านค่าจากผู้ใช้:
read -p "กรุณาใส่ชื่อของคุณ: " username
echo "สวัสดี, $username!"ลูป for:
for i in {1..5}; do
echo "เลขที่: $i"
doneif-else:
if [ -f "example.txt" ]; then
echo "ไฟล์ example.txt มีอยู่แล้ว"
else
echo "ไม่พบไฟล์ example.txt"
fi- สร้างไฟล์ชื่อ
greet.shแล้วใส่สคริปต์ - เปลี่ยนโหมดให้ไฟล์รันได้ด้วย
chmod +x greet.sh - รันไฟล์ด้วยคำสั่ง
./greet.sh
git clone <repository_url>
git add .
git commit -m "ข้อความ commit"
git push origin main- Jenkins
- Ansible
- ติดตั้ง Git (
sudo apt install git) - สร้างหรือ clone repository และทดลอง commit
-
chmod: ปรับระดับสิทธิ์ (r, w, x) สำหรับ owner, group, otherschmod 755 script.sh chmod u+x file.txt
-
chown: เปลี่ยนเจ้าของไฟล์/โฟลเดอร์sudo chown user:group file.txt
-
chgrp: เปลี่ยนกลุ่มของไฟล์/โฟลเดอร์sudo chgrp developers file.txt
ps: แสดงรายการโปรเซสที่กำลังทำงาน (ps aux)top/htop: ดูการใช้งาน CPU/Memory แบบเรียลไทม์kill: หยุดโปรเซสkill <PID>
ใช้ตรวจสอบอุณหภูมิ ความเร็วพัดลม และแรงดันไฟฟ้าของฮาร์ดแวร์
sudo apt install lm-sensors
sudo sensors-detect
sensorsคำสั่งบีบอัดและแตกไฟล์
-
tar:
tar -czvf archive.tar.gz folder/ tar -xzvf archive.tar.gz
-
gzip / gunzip:
gzip file.txt gunzip file.txt.gz
-
zip / unzip:
apt install zip unzip zip -r compress_file.zip original_file.txt unzip compress_file.zip
คำสั่ง w แสดงผู้ใช้ที่ล็อกอินอยู่และกิจกรรมล่าสุด
w- Absolute Path: ระบุจาก
/เช่น/home/user/docs - Relative Path: ระบุจากตำแหน่งปัจจุบัน เช่น
./docsหรือ../docs
เครื่องมือสำหรับดาวน์โหลด
wget https://www.domain.com/file.zipแสดงพื้นที่ใช้งานในดิสก์
df -hแสดงประวัติการล็อกอินของผู้ใช้
lastแสดงข้อความ kernel log ใช้ตรวจสอบปัญหาเกี่ยวกับฮาร์ดแวร์หรือ driver
dmesg | lessค้นหาไฟล์หรือโฟลเดอร์ในระบบ
find / -name "*.log"หาตำแหน่งของคำสั่งในระบบ
which python3Linux รองรับระบบไฟล์หลายประเภท แต่ละประเภทมีข้อดีและข้อเสียต่างกัน:
- ext4: ระบบไฟล์มาตรฐานของ Linux ที่มีประสิทธิภาพสูงและเสถียร
- XFS: เหมาะสำหรับไฟล์ขนาดใหญ่และระบบที่มีการเขียนข้อมูลมาก
- Btrfs: ระบบไฟล์รุ่นใหม่ที่มีคุณสมบัติ copy-on-write และ snapshots
- ZFS: ระบบไฟล์ขั้นสูงที่มี data integrity สูงและรองรับการทำ RAID
- F2FS: ออกแบบมาเพื่ออุปกรณ์ flash storage
# ตรวจสอบระบบไฟล์ของพาร์ติชัน
sudo df -T
# สร้างระบบไฟล์บน USB drive
sudo mkfs.ext4 /dev/sdX1LVM ช่วยให้การจัดการพื้นที่ดิสก์มีความยืดหยุ่นมากขึ้น:
# ติดตั้ง LVM
sudo apt install lvm2
# สร้าง Physical Volume
sudo pvcreate /dev/sdb
# สร้าง Volume Group
sudo vgcreate vg_data /dev/sdb
# สร้าง Logical Volume
sudo lvcreate -n lv_apps -L 20G vg_data
# สร้างระบบไฟล์บน Logical Volume
sudo mkfs.ext4 /dev/vg_data/lv_apps
# Mount Logical Volume
sudo mount /dev/vg_data/lv_apps /mnt/appsการทำ RAID ช่วยเพิ่มประสิทธิภาพและความน่าเชื่อถือของระบบ:
# ติดตั้ง mdadm
sudo apt install mdadm
# สร้าง RAID 1 (Mirror)
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
# ตรวจสอบสถานะ RAID
cat /proc/mdstat
sudo mdadm --detail /dev/md0การจัดการจุดเชื่อมต่อ (mount points) แบบถาวรด้วยการแก้ไขไฟล์ /etc/fstab:
# เพิ่มบรรทัดใน /etc/fstab สำหรับ mount อัตโนมัติเมื่อเริ่มระบบ
/dev/vg_data/lv_apps /mnt/apps ext4 defaults 0 2
# สำหรับ NFS
server:/share /mnt/nfs nfs defaults 0 0
# สำหรับ SMB/CIFS
//server/share /mnt/smb cifs credentials=/etc/samba/credentials,uid=1000,gid=1000 0 0
# ตรวจสอบ fstab หาข้อผิดพลาด
sudo findmnt --verify# ตรวจสอบการใช้งาน inodes
df -i
# หาโฟลเดอร์ที่มีไฟล์จำนวนมาก (ใช้ inodes เยอะ)
find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -nPAM เป็นระบบรับรองตัวตนแบบโมดูลาร์ใน Linux:
# ไฟล์ตั้งค่า PAM
ls -la /etc/pam.d/
# ตัวอย่างการตั้งค่าให้ผู้ใช้ต้องมีรหัสผ่านที่ซับซ้อน
sudo apt install libpam-pwquality
sudo nano /etc/pam.d/common-password
# เพิ่มพารามิเตอร์: retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1ACL ช่วยให้กำหนดสิทธิ์ได้ละเอียดมากกว่า chmod ปกติ:
# ติดตั้ง ACL
sudo apt install acl
# กำหนดสิทธิ์ให้ผู้ใช้เฉพาะ
setfacl -m u:username:rwx file.txt
# กำหนดสิทธิ์ให้กลุ่ม
setfacl -m g:groupname:rw file.txt
# แสดงการตั้งค่า ACL
getfacl file.txt
# นำ ACL ออก
setfacl -x u:username file.txtการตั้งค่าขั้นสูงของ sudo:
# แก้ไขไฟล์ sudoers (แนะนำให้ใช้ visudo เสมอ)
sudo visudo
# ตัวอย่างการกำหนดสิทธิ์เฉพาะคำสั่ง
username ALL=(ALL) /usr/bin/apt, /bin/systemctl restart apache2
# กำหนดให้ไม่ต้องใส่รหัสผ่านเมื่อใช้ sudo
username ALL=(ALL) NOPASSWD: ALLจำกัดทรัพยากรที่ผู้ใช้สามารถใช้งานได้:
# แก้ไขไฟล์ limits.conf
sudo nano /etc/security/limits.conf
# ตัวอย่าง - จำกัดจำนวนไฟล์ที่เปิดได้
username hard nofile 4096
username soft nofile 1024
# จำกัด CPU และ RAM ที่ใช้ได้
username hard as 1000000
username hard cpu 50จำกัดพื้นที่ดิสก์ที่ผู้ใช้สามารถใช้ได้:
# ติดตั้ง quota
sudo apt install quota
# แก้ไข /etc/fstab เพิ่ม usrquota,grpquota
/dev/sda1 / ext4 defaults,usrquota,grpquota 0 1
# Remount หรือรีบูท
sudo mount -o remount /
# เปิดใช้งาน quota
sudo quotacheck -cugm /
sudo quotaon -v /
# กำหนด quota
sudo edquota -u username
sudo edquota -g groupname
# ตรวจสอบ quota ที่ใช้งาน
sudo quota -vs username# อัปเดตระบบสม่ำเสมอ
sudo apt update && sudo apt upgrade
# ตรวจสอบพอร์ตที่เปิดรับการเชื่อมต่อ
sudo ss -tuln
# ปิดบริการที่ไม่จำเป็น
sudo systemctl disable SERVICE_NAME
sudo systemctl stop SERVICE_NAME# ติดตั้ง UFW
sudo apt install ufw
# กำหนดกฎเบื้องต้น - ปฏิเสธการเชื่อมต่อขาเข้าทั้งหมด
sudo ufw default deny incoming
sudo ufw default allow outgoing
# อนุญาตบริการเฉพาะ
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow from 192.168.1.0/24 to any port 22
# เปิดใช้งาน UFW
sudo ufw enable
# ตรวจสอบสถานะและกฎ
sudo ufw status verbose# ติดตั้ง Fail2ban
sudo apt install fail2ban
# สร้างไฟล์ตั้งค่าเอง
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# ตัวอย่างการตั้งค่า - แบนหลังจากล็อกอินผิด 5 ครั้ง เป็นเวลา 1 ชั่วโมง
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
# รีสตาร์ท Fail2ban
sudo systemctl restart fail2ban
# ตรวจสอบสถานะ
sudo fail2ban-client status
sudo fail2ban-client status sshd# ตรวจสอบสถานะ
aa-status
# ดูโปรไฟล์ทั้งหมด
ls /etc/apparmor.d/
# สร้างโปรไฟล์ใหม่
sudo aa-genprof /path/to/program
# เปิด/ปิดโปรไฟล์
sudo aa-enforce /etc/apparmor.d/profile_name
sudo aa-complain /etc/apparmor.d/profile_name
sudo aa-disable /etc/apparmor.d/profile_name# ติดตั้ง SELinux บน Debian
sudo apt install selinux-basics selinux-policy-default
# เรียกใช้ selinux-activate และรีบูท
sudo selinux-activate
sudo reboot
# ตรวจสอบสถานะ
sestatus# ติดตั้ง auditd
sudo apt install auditd
# ตั้งค่ากฎการตรวจสอบ
sudo nano /etc/audit/rules.d/audit.rules
# เพิ่มกฎติดตามการเข้าถึงไฟล์สำคัญ
-w /etc/passwd -p wa -k user_modification
-w /etc/shadow -p wa -k user_modification
-w /etc/sudoers -p wa -k sudo_modification
# รีสตาร์ท auditd
sudo systemctl restart auditd
# ค้นหาข้อมูล audit
sudo ausearch -k user_modification# สร้างคู่กุญแจ GPG
gpg --full-generate-key
# เข้ารหัสไฟล์
gpg --encrypt --recipient user@example.com file.txt
# ถอดรหัสไฟล์
gpg --decrypt file.txt.gpg > file.txt
# เซ็นไฟล์ดิจิทัล
gpg --sign document.txt
# ตรวจสอบลายเซ็น
gpg --verify document.txt.gpg# ติดตั้ง Lynis
sudo apt install lynis
# ทำการสแกนระบบ
sudo lynis audit system
# ดูรายงานล่าสุด
cat /var/log/lynis.logSystemd เป็นระบบ init และจัดการบริการหลักของ Linux สมัยใหม่:
# ตรวจสอบสถานะบริการ
systemctl status SERVICE_NAME
# เปิด/ปิดบริการ
sudo systemctl start SERVICE_NAME
sudo systemctl stop SERVICE_NAME
# ตั้งค่าให้ทำงานเมื่อเริ่มระบบ
sudo systemctl enable SERVICE_NAME
sudo systemctl disable SERVICE_NAME
# รีสตาร์ทบริการ
sudo systemctl restart SERVICE_NAME
# โหลดการตั้งค่าใหม่โดยไม่หยุดบริการ
sudo systemctl reload SERVICE_NAME# สร้างไฟล์บริการใหม่
sudo nano /etc/systemd/system/myapp.service
# ตัวอย่างไฟล์ service
[Unit]
Description=My Custom Application
After=network.target
[Service]
Type=simple
User=myuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
# โหลดไฟล์บริการใหม่
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp# สร้างไฟล์ timer
sudo nano /etc/systemd/system/backup.timer
# ตัวอย่างไฟล์ timer
[Unit]
Description=Daily backup timer
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
# สร้างไฟล์ service ที่ทำงานเมื่อ timer ทำงาน
sudo nano /etc/systemd/system/backup.service
[Unit]
Description=Daily backup service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-script.sh
# เปิดใช้งาน timer
sudo systemctl daemon-reload
sudo systemctl enable backup.timer
sudo systemctl start backup.timer
# ดูรายการ timers ทั้งหมด
systemctl list-timers# ดูข้อความ log ล่าสุด
journalctl -e
# ดูข้อความ log ของบริการเฉพาะ
journalctl -u SERVICE_NAME
# กรองตามช่วงเวลา
journalctl --since "2023-01-01" --until "2023-01-02"
# ติดตาม log แบบเรียลไทม์
journalctl -f
# ดูข้อความ log ของการบูทครั้งล่าสุด
journalctl -b# สถิติ CPU, Memory, Process
top
htop # (ต้องติดตั้งเพิ่ม: sudo apt install htop)
# สถานะการใช้ Memory
free -h
# การใช้งานดิสก์
df -h
du -sh /path/to/directory
# สถิติระบบ
vmstat 1# ติดตั้ง Atop และ Iotop
sudo apt install atop iotop
# ใช้งาน Atop
atop
# ดูกิจกรรม I/O ของระบบ
sudo iotop# ติดตั้ง SAR
sudo apt install sysstat
# เปิดใช้งานการเก็บข้อมูล
sudo nano /etc/default/sysstat
ENABLED="true"
# รีสตาร์ทบริการ
sudo systemctl restart sysstat
# ดูรายงานประสิทธิภาพ CPU
sar -u
# ดูรายงานการใช้งาน Memory
sar -r
# ดูรายงานการใช้งานดิสก์
sar -b# ติดตั้ง nethogs และ iftop
sudo apt install nethogs iftop
# ดูแบนด์วิดท์ที่ใช้โดยแต่ละโปรเซส
sudo nethogs
# ดูการใช้งานเครือข่ายแบบเรียลไทม์
sudo iftop# ติดตั้ง strace และ ltrace
sudo apt install strace ltrace
# ติดตาม system calls ของโปรเซส
sudo strace -p PID
# ติดตาม library calls ของโปรเซส
sudo ltrace -p PID# แก้ไข crontab
crontab -e
# รูปแบบ crontab: m h dom mon dow command
# ตัวอย่าง - รันทุกวันจันทร์เวลา 8:00
0 8 * * 1 /path/to/script.sh
# รองรับช่วงเวลาและตัวคั่น
*/5 9-17 * * 1-5 /path/to/workday_script.sh # ทุก 5 นาทีในเวลาทำงานวันจันทร์-ศุกร์# ติดตั้ง Ansible
sudo apt install ansible
# สร้างไฟล์ inventory
sudo nano /etc/ansible/hosts
[webservers]
web1.example.com
web2.example.com
# ทดสอบการเชื่อมต่อ
ansible webservers -m ping
# รันคำสั่งบนเซิร์ฟเวอร์ทั้งหมด
ansible webservers -a "df -h"
# สร้างและรัน playbook
sudo nano webserver.yml
---
- hosts: webservers
tasks:
- name: Install Nginx
apt:
name: nginx
state: latest
# รัน playbook
ansible-playbook webserver.ymlExpect ช่วยให้ทำงานอัตโนมัติกับโปรแกรมที่ต้องการการโต้ตอบ:
# ติดตั้ง Expect
sudo apt install expect
# ตัวอย่าง script expect
#!/usr/bin/expect
spawn ssh user@example.com
expect "password:"
send "your-password\r"
expect "$ "
send "ls -la\r"
expect "$ "
send "exit\r"
expect eof# ดึงคอลัมน์เฉพาะจากไฟล์
awk '{print $1, $3}' file.txt
# คำนวณค่าเฉลี่ย
cat values.txt | awk '{sum+=$1} END {print sum/NR}'
# นับจำนวนการเกิดของแต่ละคำ
cat file.txt | awk '{for(i=1;i<=NF;i++) words[$i]++} END {for(w in words) print w, words[w]}'
# แทนที่ข้อความในไฟล์
awk '{gsub(/old/, "new"); print}' file.txt > newfile.txt# รันงานในพื้นหลัง
command &
# แสดงรายการงานที่กำลังทำงาน
jobs
# นำงานกลับมาทำงานในพื้นหน้า
fg %job_number
# ส่งงานไปทำงานในพื้นหลัง
bg %job_number
# รันคำสั่งอย่างต่อเนื่องแม้จะออกจาก terminal (nohup)
nohup command > output.log &
# จำกัดทรัพยากรสำหรับคำสั่ง
nice -n 19 command # น้อยที่สุด
sudo nice -n -20 command # มากที่สุด# ทำสำเนาไฟล์และโฟลเดอร์
rsync -a source/ destination/
# รวมการบีบอัด
rsync -az source/ destination/
# แสดงความคืบหน้า
rsync -azP source/ destination/
# สำรองข้อมูลไปยัง remote server
rsync -azP source/ user@remote_host:/path/to/destination/
# แบบเก็บประวัติ
rsync -azP --link-dest=/path/to/prev_backup source/ /path/to/new_backup/# ติดตั้ง Duplicity
sudo apt install duplicity
# สำรองข้อมูลไปยัง FTP server
duplicity /home/user/data ftp://user:pass@ftp.example.com/backup
# สำรองข้อมูลแบบเข้ารหัส
duplicity --encrypt-key key_id /home/user/data rsync://user@backup.example.com/backup
# กู้คืนข้อมูลทั้งหมด
duplicity restore rsync://user@backup.example.com/backup /home/user/restored_data# สำรองพาร์ติชันทั้งหมด
sudo dd if=/dev/sda1 of=/path/to/sda1.img bs=4M status=progress
# กู้คืนพาร์ติชัน
sudo dd if=/path/to/sda1.img of=/dev/sda1 bs=4M status=progress
# สำรอง MBR
sudo dd if=/dev/sda of=mbr.img bs=512 count=1