จริง ๆ แล้วตัว Unattended-Upgrades คือเครื่องมือ (Utility) มาตรฐานบน Debian และ Ubuntu ที่ถูกออกแบบมาเพื่อทำหน้าที่ “อัปเดตระบบในส่วนของความปลอดภัย (Security Updates) โดยอัตโนมัติ” โดยที่ไม่ต้องเข้ามาสั่งงานใน Terminal เองเป็นครั้ง ๆ อย่างคำสั่ง sudo apt-get update && sudo apt-get upgrade
ทำไม่ควรใช้ Unattended-Upgrades มากกว่า sudo apt-get update && sudo apt-get upgrade หรือ cron
- การทำงานตามตารางเวลา (Trigger)
Unattended-Upgrades ไม่ได้รันตลอดเวลา แต่มันจะทำงานร่วมกับ systemd-timers (หรือในรุ่นเก่าคือ cron) โดยปกติระบบจะตั้งค่าให้รันวันละ 1-2 ครั้ง เมื่อถึงเวลา ระบบจะเรียกสคริปต์ /usr/bin/unattended-upgrade ขึ้นมาทำงาน
- การตรวจสอบและคัดกรอง (Filtering)
- คัดเลือกเฉพาะแหล่งที่เชื่อถือได้: ตามค่าเริ่มต้น มันจะดาวน์โหลดเฉพาะไฟล์จาก Repository ที่ลงท้ายด้วย
-security เท่านั้น เพื่อป้องกันไม่ให้เวอร์ชันของแอปพลิเคชันทั่วไป (เช่น Nginx หรือ PHP) เปลี่ยนแปลงจนทำให้ Config พัง
- เช็คเงื่อนไขเครื่อง: มันสามารถตั้งค่าได้ว่า “ห้ามอัปเดตถ้าแบตเตอรี่ต่ำ” (สำหรับ Laptop) หรือ “จำกัด Bandwidth” ในการโหลด
- กระบวนการติดตั้ง (Installation)
- ถ้ามีไฟล์ Config ใหม่ (เช่น Config ของ Nginx) มันจะเลือก Keep the local version (เก็บไฟล์เดิมของคุณไว้) เสมอ เพื่อให้ระบบของคุณยังทำงานได้ปกติ
- มีการทำ Locking เพื่อไม่ให้ไปชนกับกระบวนการ apt อื่น ๆ ที่คุณอาจรันค้างไว้
| ฟีเจอร์ | Cron (apt upgrade) | Unattended-Upgrades |
|---|
| ความปลอดภัย | อัปเดตทุกอย่าง (เสี่ยง Config พัง) | เน้นเฉพาะ Security Patch (ปลอดภัยกว่า) |
| การจัดการ Log | ต้องตั้งค่าเอง | มี Log ละเอียดที่ /var/log/unattended-upgrades/ |
| การ Reboot | ไม่รองรับเองอัตโนมัติ | ตั้งค่าให้ Reboot เองได้ถ้าจำเป็น (เช่น หลังอัปเดต Kernel) |
| ความฉลาด | รันตามเวลาเป๊ะ ๆ | มีระบบรอคิวและเช็คความพร้อมของระบบ |
การติดตั้งและเปิดการทำงาน
ในความเป็นจริง แล้วมันจะถูกติดตั้งมาเป็นมาตราฐานอยู่แล้ว (Pre-installed) แต่อาจจะต้องติดตั้งเองในบางระบบ
การติดตั้ง ใช้คำสั้ง
sudo apt update
sudo apt install unattended-upgrades
การเปิดการทำงาน
sudo dpkg-reconfigure -plow unattended-upgrades
ให้กดเลือก <Yes> แล้วกด Enter
ดูว่า log ทำงานอยู่มั๋ย
sudo cat /var/log/unattended-upgrades/unattended-upgrades.log
ควรจะมี log ออกมาบ้างเช่น
2026-01-01 06:56:49,236 INFO Starting unattended upgrades script
2026-01-01 06:56:49,237 INFO Allowed origins are: o=Ubuntu,a=questing, o=Ubuntu,a=questing-security, o=UbuntuESMApps,a=questing-apps-security, o=UbuntuESM,a=questing-infra-security
ตรวจสอบสถานะการทำงาน (Timer)
systemctl list-timers | grep apt
มันจะตอบมาว่า มีการ update อีกครั้งในวันที่เท่าไหร่
ไฟล์คอนฟิก
cat /etc/apt/apt.conf.d/20auto-upgrades
เนื้อหามีแค่ 2 บรรทัด
APT::Periodic::Update-Package-Lists “1”;
(อัปเดตรายชื่อแพ็กเกจทุกวัน)
APT::Periodic::Unattended-Upgrade “1”;
(รันการอัปเดตอัตโนมัติทุกวัน)