หลังจากตรวจแก้จุดบกพร่องฉันพบวิธีแก้ปัญหา
สาเหตุหลักของปัญหานี้อยู่ในความจริงที่ว่าภายใต้ Ubuntu 16.04 และใหม่กว่านั้นการอัพเกรดแบบไม่ต้องใส่ข้อมูลใช้ systemd ไม่ใช่ cron เพื่อกำหนดเวลาการอัปเดตด้วยความล่าช้าแบบสุ่มขนาดใหญ่:
/lib/systemd/system/apt-daily.timer
มีการกำหนดค่าด้วย
OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h
ซึ่งหมายความว่าจะทำงานสองครั้งต่อวันเวลา 6:00 น. และ 18:00 น. โดยมีความล่าช้าแบบสุ่มสูงสุด 12 ชั่วโมง เนื่องจากสิ่งนี้ไม่ได้รับการยอมรับเสมอสำหรับสภาพแวดล้อมการผลิตฉันจึงต้องแทนที่การตั้งค่าเหล่านี้
เพื่อให้ไฟล์กำหนดค่าแพ็กเกจไม่ถูกแตะต้องฉันกำหนดทับทับไว้ใน/etc/systemd/system/apt-daily.timer.d/override.conf
( อัปเดต : โปรดอ่านการแก้ไขที่ด้านล่างของคำตอบนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับชื่อไฟล์และตำแหน่งเนื่องจากอาจมีการเปลี่ยนแปลงเล็กน้อย)
ที่นั่นฉันตั้ง
[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h
เพื่อให้มีการอัพเกรดแบบไม่ต้องใส่ข้อมูลทำงานในเวลา 6:00 น. รวมถึงการหน่วงเวลาแบบสุ่มสูงสุดถึงหนึ่งชั่วโมง
จากนั้นฉันก็รีสตาร์ทตัวจับเวลาด้วยsystemctl restart apt-daily.timer
(ในที่สุดก็ต้องโหลด daemon อีกครั้ง)
การอัพเดทแบบอัตโนมัติจะทำงานตามเวลาที่คาดการณ์ได้อีกครั้ง!
แก้ไข : ดูเหมือนว่าสำหรับ Ubuntu 18.04 สิ่งต่าง ๆ เปลี่ยนไปเล็กน้อย การแทนที่จะถูกเก็บไว้ใน/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
และมีลักษณะดังนี้:
[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h
@PerlDuck ได้กล่าวถึงวิธีการสร้างไฟล์แทนที่ด้วยชื่อที่ถูกต้องและสถานที่ในความคิดเห็นด้านล่าง แทนที่จะสร้างไฟล์ด้วยตนเองโปรดลองเรียกใช้sudo systemctl edit apt-daily.timer