หลังจากเปิดใช้งาน Unattended-Upgrades เพื่อติดตั้ง Security Patch อัตโนมัติ ปัญหาที่หลายคนสงสัยคือ “แล้วตกลงระบบจะเริ่มรันกี่โมง?” และ “ทำงานล่าสุดไปเมื่อไหร่ สำเร็จหรือไม่?”
ระบบของ Ubuntu/Debian ยุคปัจจุบันไม่ได้พึ่งพา Cron ในการสั่งรัน แต่ส่งต่อหน้าที่ให้ Systemd Timers เป็นผู้ควบคุมเวลาทั้งหมด บทความนี้จะพาไปดูวิธีตรวจเช็กรอบเวลาและผลการรันจริงแบบเจาะลึก
เข้าใจกลไก: ทำไมมี 2 บริการที่ชื่อคล้ายกัน?
เมื่อพูดถึงการอัปเดตอัตโนมัติ ระบบจะแบ่งงานออกเป็น 2 จังหวะ
apt-daily(Update) — เทียบเท่าapt-get updateทำหน้าที่ตรวจสอบรายชื่อแพ็กเกจใหม่และดาวน์โหลดไฟล์เตรียมไว้ล่วงหน้า (ปกติรัน วันละ 2 ครั้ง)apt-daily-upgrade(Upgrade) — ทำหน้าที่เรียกสคริปต์unattended-upgradeเพื่อติดตั้งแพ็กเกจความปลอดภัยลงเครื่องจริง (ปกติรัน วันละ 1 ครั้ง)
เช็กรอบเวลาทำงาน (รันล่าสุดเมื่อไหร่ และจะรันรอบถัดไปกี่โมง)
ใช้คำสั่งตรวจสอบสถานะ Systemd Timer ที่เกี่ยวข้องกับ apt
systemctl list-timers | grep -E 'apt-daily|apt-daily-upgrade'
ตัวอย่างผลลัพธ์
NEXT LEFT LAST PASSED UNIT ACTIVATES
Wed 2026-09-09 13:46:50 +07 3h 41min Tue 2026-09-08 23:16:15 +07 10h ago apt-daily.timer apt-daily.service
Thu 2026-09-10 06:43:54 +07 20h left Wed 2026-09-09 06:56:47 +07 3h 10min ago apt-daily-upgrade.timer apt-daily-upgrade.service
วิธีอ่านผลลัพธ์
LAST(ทำล่าสุดเมื่อไหร่):apt-daily-upgrade.timerติดตั้งแพ็กเกจล่าสุดไปเมื่อเช้า06:56:47 น.
NEXT(จะรันรอบถัดไปกี่โมง):- รอบถัดไปคือพรุ่งนี้เช้า
06:43:54 น.
- รอบถัดไปคือพรุ่งนี้เช้า
- ทำไมเวลาถึงเป็นเศษนาทีแปลก ๆ (เช่น 06:43 น.)?
- ระบบเปิดใช้ฟังก์ชัน
RandomizedDelaySecเพื่อสุ่มกระจายเวลา ไม่ให้เซิร์ฟเวอร์ทั่วโลกยิงไปโหลดแพ็กเกจจาก Mirror พร้อมกันในวินาทีเดียวกัน
- ระบบเปิดใช้ฟังก์ชัน
เช็คว่าการรันล่าสุด ติดตั้งอะไรไปบ้าง (Log Files)
แม้ Timer จะบอกว่ารันแล้ว แต่ถ้าอยากรู้ว่ามีแพ็กเกจอะไรถูกอัปเกรดไปบ้าง ให้ดูจากไฟล์ Log ของตัว Unattended-Upgrades โดยตรง
ดูประวัติการอัปเกรดล่าสุด
sudo cat /var/log/unattended-upgrades/unattended-upgrades.log
กรณีที่มีการอัปเดตแพ็กเกจจริง
2026-09-09 06:56:49,236 INFO Starting unattended upgrades script
2026-09-09 06:56:55,102 INFO Packages that will be upgraded: linux-libc-dev openssl
2026-09-09 06:57:10,884 INFO All upgrades installed
กรณีที่ระบบปลอดภัยและไม่มีอะไรต้องอัปเดต
2026-09-09 06:56:49,236 INFO Starting unattended upgrades script
2026-09-09 06:56:52,410 INFO No packages found that can be upgraded unattended
ดูบันทึกการทำงานของตัวติดตั้งระบบ (dpkg log)
หากต้องการยืนยันว่าไฟล์ binary บนระบบถูกเขียนทับตอนกี่โมง ให้ดูที่ dpkg log
sudo cat /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
เช็คสถานะการเรียกทำงานผ่าน Systemd Journal
หากไฟล์ log ใน /var/log/ ไม่มีข้อมูลใหม่ หรือสงสัยว่า service มีปัญหาตอนถูกเรียกขึ้นมา สามารถดู system log ย้อนหลังเฉพาะของวันนี้ได้:
เช็กรอบดาวน์โหลดข้อมูล (apt-daily)
journalctl -u apt-daily.service --since today
เช็กรอบติดตั้งแพ็กเกจ (apt-daily-upgrade)
journalctl -u apt-daily-upgrade.service --since today
หากทำงานปกติ จะพบข้อความสรุปสถานะ Deactivated successfully ปรากฏอยู่ท้ายกระบวนการ
ทิปส่งท้าย: ถ้าอยากเปลี่ยนเวลาติดตั้ง ไม่ให้ตรงกับช่วงเช้า
หากระบบของคุณมีผู้ใช้งานหนาแน่นช่วง 06:00–07:00 น. และต้องการเลื่อนเวลาติดตั้งไปเป็นช่วงดึก (เช่น 03:00 น.) สามารถสั่ง override เวลาได้ง่าย ๆ ผ่านคำสั่ง
sudo systemctl edit apt-daily-upgrade.timer
แล้วระบุเวลาใหม่ลงไป
[Timer]
OnCalendar=
OnCalendar=*-*-* 03:00:00
RandomizedDelaySec=0
บันทึกไฟล์แล้วรัน
sudo systemctl daemon-reload
sudo systemctl restart apt-daily-upgrade.timer
เมื่อใช้คำสั่ง systemctl list-timers ตรวจสอบอีกครั้ง คอลัมน์ NEXT จะเปลี่ยนเป็นเวลา 03:00:00 น. ตรงเป๊ะตามที่กำหนดไว้ทันที