उबंटू 16.04: अनअटेंडेड-अपग्रेड यादृच्छिक समय पर चलता है


15

मैंने सुरक्षा पैकेजों को स्थापित करने के लिए अप्राप्य-अपग्रेड को कॉन्फ़िगर किया है और ऐसा होने पर मेल द्वारा सूचित किया है।

मैंने देखा है कि स्थापना बहुत ही यादृच्छिक समय पर होती है। मुझे पता है कि नवीनतम संस्करणों ने क्रोन.डेली निष्पादन समय से शुरू होने वाले 30 मिनट तक एक यादृच्छिक देरी को जोड़ा।

हालाँकि मुझे जो देरी का सामना करना पड़ रहा है, वह इससे बहुत बड़ा है। मैं 9am, 3pm, 12am पर अप्राप्य-अपग्रेडिंग को देख रहा हूं ... लॉग समान दिखाई देते हैं, इसलिए यह केवल ईमेल डिलीवरी नहीं है जो अधिक समय लेती है।

अनअटेंडेड अपग्रेड कार्य cron.daily में पहला है, जिसका अर्थ है कि विशाल निष्पादन समय वाला कोई पिछला कार्य नहीं है।

किसी को भी एक ऐसी ही बात का अनुभव किया?


यादृच्छिक व्यवहार जानबूझकर किया जाता है - लाखों प्रणालियों के बजाय प्रत्येक दिन एक ही समय में कुछ दर्पणों की मांग को सुचारू करने के लिए। साधारण डेस्कटॉप उपयोगकर्ताओं को व्यवहार पर बिल्कुल भी ध्यान नहीं देना चाहिए। कुछ उद्यम उपयोगकर्ता व्यवहार को कुछ और अधिक अनुमानित करने के लिए बदलना चाहते हैं, और निश्चित रूप से ऐसा करने के लिए स्वागत करते हैं।
user535733

हां, इस पसंद के पीछे का कारण स्पष्ट है। यह सिर्फ इतना है कि यह व्यवहार उत्पादन प्रणालियों के लिए अस्वीकार्य है। जिस समय मैंने यह प्रश्न पूछा, यह व्यवहार (और तय) कहीं भी प्रलेखित नहीं था
डेनियल एफ।

जवाबों:


20

डिबगिंग के बाद मुझे इसका हल मिला।

इस समस्या का मूल कारण इस तथ्य में रहता है कि उबंटू 16.04 और नए के तहत, अनअटेंडेड-अपग्रेड सिस्टमड का उपयोग करता है - क्रोन नहीं - एक बड़े यादृच्छिक विलंब के साथ अपडेट शेड्यूल करने के लिए:

/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(अंततः डेमॉन को फिर से लोड करने की आवश्यकता थी)।

अनअटेंडेड-अपडेट अब पूर्वानुमेय समय पर चलता है!

संपादित करें : ऐसा लगेगा जैसे उबंटू 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
आप पहले OnCalendar को क्यों साफ़ करते हैं?
jarno

2
क्योंकि अन्यथा यह केवल सुबह 6 बजे एक नया टाइमर जोड़ देगा, जो मौजूदा एक को भी छोड़ देगा। चूँकि मैं 6 पर केवल चलाने के लिए अनअटेंडेड-अपग्रेड चाहता हूँ, मुझे पहले शेड्यूल क्लियर करना होगा।
डेनियल एफ।

मैंने "OnBootSec = 5min" को बूट के बाद भी चलाने में सक्षम करने के लिए जोड़ा, लेकिन यह काम नहीं किया। (यह भी जोड़ा गया OnUnitActiveSec = 12h ताकि यह बहुत बार नहीं चलाया जाए।)
jarno

systemd, या यों कहें, systemd मानसिकता, फिर से हमला करता है। मुझे इस मणि बिट के बाद उत्पादन में क्सीनल ज़ेरुस में अपग्रेड करने पर पुनर्विचार करना पड़ सकता है।
जो

2
@ डैनियल एफ। मेरे पास / apt-daily.timer फ़ाइल / lib / systemd / system / साथ ही /etc/systemd/system/timers.target.wants/ में एक है / हालाँकि मेरे पास / etc / system / system / सिस्टम में कोई नहीं है आप ही की तरह। क्या आपको पता होगा कि मुझे apt-daily.timer.d निर्देशिका और इसके बजाय override.conf / / lib / systemd / system बनाने चाहिए? सभी सलाह कृतज्ञता से thx के साथ याद करते हैं।
परवेज

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। यह सही ड्रॉप-इन फ़ाइल के साथ एक संपादक खोल देगा।
पैरलडुक

2
शुक्रिया पर्लडक, मैंने आपके सुझाव के साथ डेबियन विकी पेज को संपादित किया
रॉल्फ वोजटेक

उपयोगी होने के लिए - और डेबियन विकी पृष्ठ को अपडेट करने के लिए इस उत्तर को प्रस्तुत किया!
एंथोनी जोगेगन

5

मैंने डैनियल के समाधान की कोशिश की लेकिन अपग्रेड अभी भी गलत समय पर चला। वहाँ दो systemd ओवरराइड्स की जरूरत है जो बाहर कर दिया:

डाउनलोड के लिए उपयोग किया जाता है

/lib/systemd/system/apt-daily.timer - /etc/systemd/system/apt-daily.timer.d/override.conf के साथ ओवरराइड करें

उन्नयन के लिए इस्तेमाल किया

/lib/systemd/system/apt-daily-upgrad.timer - /etc/systemd/system/apt-daily-upgrad.timer.d/override.conf के साथ ओवरराइड करें


1
आप किस संस्करण पर हैं? तो आपको एक ही समय में दोनों उल्लिखित टाइमर को ओवरराइड करना होगा?
डेनियल एफ।

उबंटू 16.04.4 x64
नील्स रास्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.