Bash Script คืออะไร
Bash Script คือไฟล์ข้อความที่เก็บชุดคำสั่ง Bash Shell (Bourne Again Shell) เพื่อให้ผู้ใช้สามารถรันคำสั่ง Linux/Unix หลายคำสั่งพร้อมกันได้ โดยไม่ต้องพิมพ์แต่ละคำสั่งเดี่ยวๆ ทำให้สามารถทำงาน Server Administration และ Automation ได้อย่างมีประสิทธิภาพ
เหตุผลที่ต้องใช้ Bash Script
Bash Script มีประโยชน์มากมาย โดยเฉพาะสำหรับงาน DevOps ดังนี้
- การจัดการตัวแปร (Variables) – สามารถเก็บและใช้ข้อมูลได้อย่างมีประสิทธิภาพ
- การวนซ้ำ (Loops) – เช่น For Loop, While Loop สำหรับประมวลผลข้อมูลหลายรายการ
- เงื่อนไข (Conditional Statements) – เช่น If, Else เพื่อตัดสินใจทำงาน
- ฟังก์ชัน (Functions) – สามารถสร้างโค้ดที่นำกลับมาใช้ได้
- การจัดการข้อความและตัวเลข (String and Numeric Operations) – ประมวลผลข้อมูล
- Regular Expressions – ค้นหาและแทนที่ข้อความตามรูปแบบ
- การจัดการไฟล์ (File Operations) – อ่าน เขียน และจัดการไฟล์
- การจัดการสิทธิ์การเข้าถึง (Permissions) – ควบคุมการเข้าถึงไฟล์และไดเรกทอรี
1. Script สำหรับ Backup Files
Script นี้ใช้สำหรับสำรองข้อมูลไฟล์อย่างอัตโนมัติ พร้อมการลบไฟล์ backup เก่าเพื่อประหยัดพื้นที่ดิสก์
#!/bin/bash
BACKUP_DIR="/backups"
SOURCE_DIR="/home/user/documents"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup_${DATE}.tar.gz"
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
tar -czf "$BACKUP_FILE" "$SOURCE_DIR"
if [ $? -eq 0 ]; then
echo "Backup created: $BACKUP_FILE"
# ลบ backup ที่มีอายุเกิน 30 วัน
find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +30 -delete
echo "Old backups removed"
else
echo "Backup failed"
exit 1
fi
2. Script สำหรับตรวจสอบพื้นที่ดิสก์
Script นี้ช่วยตรวจสอบการใช้พื้นที่ดิสก์บน VPS และเตือนเมื่อพื้นที่เต็มเกินขีดจำกัด
#!/bin/bash
THRESHOLD=80
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
usage=$(echo $output | awk '{ print $1}' | cut -d'%' -f1)
partition=$(echo $output | awk '{ print $2 }')
if [ $usage -ge $THRESHOLD ]; then
echo "Warning: Partition $partition is $usage% full"
# สามารถเพิ่มการส่ง email แจ้งเตือน
# mail -s "Disk Space Alert" [email protected]
fi
done
3. Script สำหรับอัพเดตระบบ
Script นี้ใช้เพื่ออัพเดตแพคเกจและระบบปฏิบัติการบนเซิร์ฟเวอร์ Linux โดยอัตโนมัติ
#!/bin/bash
echo "Starting system update..."
# อัพเดตรายการแพคเกจ
apt-get update
# อัพเกรดแพคเกจทั้งหมด
apt-get upgrade -y
# อัพเกรดระบบเมื่อจำเป็น
apt-get dist-upgrade -y
# ลบแพคเกจที่ไม่ใช้
apt-get autoremove -y
# ล้างไฟล์ cache
apt-get clean
echo "System update completed successfully"
echo "Please reboot the server if needed"
4. Script สำหรับโปรแกรมการสำรองข้อมูลอัตโนมัติ (Cron Job)
Script นี้สามารถตั้งเวลาให้ทำงานอัตโนมัติทุกวัน โดยใช้ crontab
#!/bin/bash
# ไฟล์บันทึก
LOG_FILE="/var/log/daily_backup.log"
# ฟังก์ชันสำรองข้อมูล
perform_backup() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Starting backup..." >> $LOG_FILE
# สำรองข้อมูลเว็บไซต์
tar -czf /backups/website_$(date +%Y%m%d).tar.gz /var/www/html
# สำรองข้อมูลฐานข้อมูล
mysqldump -u user -ppassword database > /backups/database_$(date +%Y%m%d).sql
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Backup completed" >> $LOG_FILE
}
perform_backup
Best Practices สำหรับ Bash Scripting
- ใส่ Shebang ที่บรรทัดแรก – ใช้ #!/bin/bash เพื่อระบุว่าเป็น Bash Script
- ตั้งชื่อตัวแปรที่มีความหมาย – ใช้ชื่อที่อธิบายตัวแปร เช่น BACKUP_DIR, SOURCE_FILE
- เพิ่มความเห็น (Comments) – อธิบายสิ่งที่ Script ทำเพื่อให้ผู้อื่นเข้าใจ
- ใส่เครื่องหมายคำพูด (Quotes) รอบตัวแปร – ป้องกันปัญหาจากช่องว่างในเส้นทาง
- ตรวจสอบ Return Code – ตรวจสอบว่าคำสั่งสำเร็จหรือไม่ด้วย $?
- ใช้ Error Handling – จัดการข้อผิดพลาดด้วยการตรวจสอบและการออกจาก Script
- ทดสอบ Script ก่อนใช้งาน – รันด้วยอาร์กิวเมนต์ต่างๆ เพื่อตรวจสอบข้อผิดพลาด
- ใช้ Logging – เก็บบันทึกการทำงานของ Script เพื่อการ Debug และตรวจสอบ
- ตั้งสิทธิ์ในการปฏิบัติการ (Execute Permission) – ใช้ chmod +x ก่อนรัน Script
วิธีรัน Bash Script
- รันโดยตรง: ./script.sh (เมื่อ Script มี execute permission)
- รันด้วย Bash: bash script.sh
- รันด้วย Source: source script.sh (Script จะรันใน Shell ปัจจุบัน)
- ตั้งเวลาด้วย Cron: crontab -e เพื่อตั้งเวลารัน Script อัตโนมัติ
Bash Script กับ Cloud VPS
- การสำรองข้อมูลอัตโนมัติเพื่อป้องกันการสูญเสีย
- การตรวจสอบสุขภาพของเซิร์ฟเวอร์แบบ Real-time
- การบริหารจัดการแพคเกจและอัพเดตระบบอัตโนมัติ
- การปรับความสามารถของระบบได้ตามความต้องการ
- การลดงานที่ต้องทำด้วยมือและเพิ่มความปลอดภัย
สรุป
Bash Scripting เป็นทักษะสำคัญสำหรับวิศวกร DevOps ที่ต้องการทำให้การทำงานกับเซิร์ฟเวอร์เป็นไปโดยอัตโนมัติและลดข้อผิดพลาด บันทึกบทความนี้และลองสร้าง Script ของตัวเองเพื่อเพิ่มประสิทธิภาพในการจัดการเซิร์ฟเวอร์ VPS ของคุณ
