Home

Byphunsanit

Linux: update อัตโนมัติ

จริง ๆ แล้วตัว 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

  1. การทำงานตามตารางเวลา (Trigger)
    Unattended-Upgrades ไม่ได้รันตลอดเวลา แต่มันจะทำงานร่วมกับ systemd-timers (หรือในรุ่นเก่าคือ cron) โดยปกติระบบจะตั้งค่าให้รันวันละ 1-2 ครั้ง เมื่อถึงเวลา ระบบจะเรียกสคริปต์ /usr/bin/unattended-upgrade ขึ้นมาทำงาน
  2. การตรวจสอบและคัดกรอง (Filtering)
    • คัดเลือกเฉพาะแหล่งที่เชื่อถือได้: ตามค่าเริ่มต้น มันจะดาวน์โหลดเฉพาะไฟล์จาก Repository ที่ลงท้ายด้วย -security เท่านั้น เพื่อป้องกันไม่ให้เวอร์ชันของแอปพลิเคชันทั่วไป (เช่น Nginx หรือ PHP) เปลี่ยนแปลงจนทำให้ Config พัง
    • เช็คเงื่อนไขเครื่อง: มันสามารถตั้งค่าได้ว่า “ห้ามอัปเดตถ้าแบตเตอรี่ต่ำ” (สำหรับ Laptop) หรือ “จำกัด Bandwidth” ในการโหลด
  3. กระบวนการติดตั้ง (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”;
(รันการอัปเดตอัตโนมัติทุกวัน)