Ubuntu 16.04: การอัพเกรดแบบอัตโนมัติจะทำงานแบบสุ่ม


15

ฉันได้กำหนดค่าการอัพเกรดแบบไม่ต้องใส่ข้อมูลเพื่อติดตั้งแพคเกจความปลอดภัยและแจ้งเตือนทางอีเมลเมื่อดำเนินการ

ฉันสังเกตเห็นว่าการติดตั้งเกิดขึ้นในเวลาที่สุ่มมาก ฉันรู้ว่าเวอร์ชันล่าสุดเพิ่มการหน่วงเวลาแบบสุ่มสูงสุด 30 นาทีโดยเริ่มจากเวลาดำเนินการ cron.daily

อย่างไรก็ตามความล่าช้าที่ฉันพบนั้นยิ่งใหญ่กว่านั้นมาก ฉันเห็นการอัปเกรดแบบไม่ต้องใส่ข้อมูลดำเนินการเวลา 9.00 น. และ 15.00 น. ... บันทึกแสดงเหมือนกันดังนั้นจึงไม่ใช่แค่การส่งอีเมลที่ใช้เวลานานกว่า

ภารกิจการอัพเกรดแบบไม่ต้องใส่ข้อมูลเป็นงานแรกใน cron.daily ซึ่งหมายความว่าไม่มีงานก่อนหน้านี้ที่มีการเรียกใช้งานครั้งใหญ่

ใครมีประสบการณ์คล้ายกันไหม


พฤติกรรมแบบสุ่มนั้นมีจุดมุ่งหมายเพื่อลดความต้องการแทนการใช้ระบบหลายล้านครั้งในเวลาเดียวกันในแต่ละวัน ผู้ใช้เดสก์ท็อปธรรมดาไม่ควรสังเกตพฤติกรรมดังกล่าว ผู้ใช้ระดับองค์กรบางคนต้องการเปลี่ยนพฤติกรรมเป็นสิ่งที่คาดการณ์ได้มากกว่านี้และยินดีที่จะทำเช่นนั้น
user535733

ใช่เหตุผลเบื้องหลังตัวเลือกนี้ชัดเจน เพียงว่าพฤติกรรมนี้ไม่เป็นที่ยอมรับสำหรับระบบการผลิต ในขณะที่ฉันถามคำถามนี้พฤติกรรมนี้ (และการแก้ไข) ไม่ได้บันทึกไว้ที่ใดเลย
แดเนียล f

คำตอบ:


20

หลังจากตรวจแก้จุดบกพร่องฉันพบวิธีแก้ปัญหา

สาเหตุหลักของปัญหานี้อยู่ในความจริงที่ว่าภายใต้ 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


1
เหตุใดคุณจึงล้างข้อมูลในปฏิทินก่อน
jarno

2
เพราะไม่เช่นนั้นจะเพิ่มเฉพาะตัวจับเวลาใหม่ตอน 6 โมงเช้าปล่อยให้ตัวที่มีอยู่เดิมเช่นกัน เนื่องจากฉันต้องการอัปเกรดแบบไม่ต้องใส่ข้อมูลเพื่อให้ทำงานที่ 6 เท่านั้นฉันต้องล้างกำหนดการก่อน
แดเนียลฉ.

ฉันเพิ่ม "OnBootSec = 5 นาที" เพื่อเปิดใช้งานหลังจากบูตด้วยเช่นกัน แต่มันไม่ทำงาน (ยังเพิ่ม OnUnitActiveSec = 12h เพื่อที่จะไม่ทำงานบ่อยเกินไป.)
จาร์โนท

systemd หรือว่า systemd mindset โจมตีอีกครั้ง ฉันอาจต้องคิดใหม่อัพเกรด Xenial Xerus ในการผลิตหลังจากอัญมณีนี้บิตฉัน
Joe

2
@daniel f. ฉันมีไฟล์ apt-daily.timer ใน / lib / systemd / system / รวมถึงหนึ่งไฟล์ใน /etc/systemd/system/timers.target.wants/ อย่างไรก็ตามฉันไม่มี / etc / systemd / system / ตัวเองเหมือนคุณ คุณจะรู้หรือไม่ว่าฉันควรสร้างไดเร็กทอรี apt-daily.timer.d และ override.conf ภายใต้ / lib / systemd / system แทน คำแนะนำทั้งหมดขอบคุณมากขอบคุณ
Purvez

6

เอกสารเดเบียนอย่างเป็นทางการในhttps://wiki.debian.org/UnattendedUpgradesปัจจุบันมีข้อผิดพลาดในตัวซึ่งทำให้ผู้คนจำนวนมากเข้าใจผิด มันอ้างว่าคุณสามารถแทนที่เวลาอัพเกรดโดยการสร้างไฟล์ที่เรียกว่า

/etc/systemd/system/apt-daily-upgrade.d/override.conf

อย่างไรก็ตามเส้นทางที่ถูกต้องคือ

/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf

2
การค้นหาที่ดี IMHO sudo systemctl edit apt-daily.timerสิ่งที่ปลอดภัยที่สุดคือการใช้งาน นี่จะเป็นการเปิดตัวแก้ไขพร้อมกับไฟล์ดรอปดาวน์ที่ถูกต้อง
PerlDuck

2
ขอบคุณ PerlDuck ฉันแก้ไขหน้า Debian Wiki พร้อมคำแนะนำของคุณ
Rolf Wojtech

โหวตคำตอบนี้ให้เป็นประโยชน์ - และอัปเดตหน้า Debian wiki!
Anthony Geoghegan

5

ฉันลองใช้โซลูชันของ Daniel แต่การอัพเกรดยังคงทำงานผิดปกติ กลับกลายเป็นว่ามีการแทนที่สอง systemd ที่จำเป็น:

ใช้สำหรับการดาวน์โหลด

/lib/systemd/system/apt-daily.timer - แทนที่ด้วย /etc/systemd/system/apt-daily.timer.d/override.conf

ใช้สำหรับการอัพเกรด

/lib/systemd/system/apt-daily-upgrade.timer - แทนที่ด้วย /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf


1
คุณเป็นเวอร์ชั่นไหน ดังนั้นคุณต้องแทนที่ทั้งตัวนับที่กล่าวถึงในเวลาเดียวกัน?
แดเนียลฉ.

Ubuntu 16.04.4 x64
Niels Rask
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.