Ubuntu 16.04: Katılımsız yükseltmeler rastgele zamanlarda çalışıyor


15

Güvenlik paketlerini yüklemek ve gerektiğinde posta ile bilgilendirmek için katılımsız yükseltmeler yapılandırdım.

Kurulumun çok rastgele zamanlarda gerçekleştiğini fark ettim. En son sürümlerin cron.daily yürütme süresinden başlayarak 30 dakikaya kadar rastgele bir gecikme eklediğini biliyorum.

Ancak yaşadığım gecikmeler bundan çok daha büyük. 9:00, 15:00, 12:00 'de yürütülürken katılımsız yükseltmeler görüyorum ... Günlükler aynı gösteriyor, bu yüzden daha uzun süren e-posta teslimi değil.

Katılımsız yükseltme görevi, cron.daily dosyasındaki ilk görevdir, yani büyük yürütme süreleri olan önceki bir görev yoktur.

Benzer bir şey yaşayan var mı?


Rastgele davranış kasıtlıdır - her gün aynı saatlerde birkaç aynaya çarpan milyonlarca sistem yerine talebi düzeltmek. Sıradan masaüstü kullanıcıları davranışı hiç fark etmemelidir. Bazı kurumsal kullanıcılar, davranışı biraz daha öngörülebilir bir şeye dönüştürmek istemektedir ve kesinlikle bunu yapmaya açıktır.
user535733

Evet, bu seçimin arkasındaki neden açık. Sadece bu davranış üretim sistemleri için kabul edilemez. Bu soruyu sorduğum zaman, bu davranış (ve düzeltme) hiçbir yerde belgelenmedi
daniel f.

Yanıtlar:


21

Bu hata ayıklama sonra çözümü buldum.

Bu sorunun temel nedeni, Ubuntu 16.04 ve daha yeni, katılımsız yükseltmeler altında, güncellemeleri büyük bir rasgele gecikmeyle planlamak için cron değil systemd kullanmasıdır:

/lib/systemd/system/apt-daily.timer ile yapılandırıldı

OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h

Bu, günde iki kez, 6:00 ve 18:00 saatleri arasında, 12 saate kadar rastgele bir gecikmeyle çalışacağı anlamına gelir. Bu üretim ortamları için her zaman kabul edilebilir olmadığından, bu ayarları geçersiz kılmak zorunda kaldım.

Paket yapılandırma dosyalarını dokunulmadan tutmak için, geçersiz kılmamı /etc/systemd/system/apt-daily.timer.d/override.conf( Güncelleme : dosya adı ve konumu hakkında daha fazla bilgi için lütfen değişikliğe tabi olduğu için bu cevabın altındaki düzenlemeyi okuyun) tanımladım .

Orada ayarladım

[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h

katılımsız yükseltmelerin 6: 00'da çalıştırılması ve bir saate kadar rastgele bir gecikme olması.

Sonra sadece zamanlayıcıyı yeniden başlattım systemctl restart apt-daily.timer(sonunda daemon'u tekrar yüklemeliyim).

Katılımsız güncellemeler artık tahmin edilebilir zamanlarda da çalışıyor!

Edit : Sanki Ubuntu 18.04 şeyler için biraz değişmiş gibi görünüyor. Geçersiz kılma şimdi depolanmalı /etc/systemd/system/apt-daily-upgrade.timer.d/override.confve şöyle görünmelidir:

[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h

@PerlDuck, aşağıdaki yorumda doğru ad ve konuma sahip bir geçersiz kılma dosyası oluşturmanın bir yolundan bahsetti. Manuel olarak bir dosya oluşturmak yerine, lütfen çalıştırmayı düşününsudo systemctl edit apt-daily.timer


1
OnCalendar'ı neden önce temizlersiniz?
jarno

2
Aksi takdirde, sadece sabah 6'da yeni bir zamanlayıcı ekler ve mevcut olanı da bırakır. Katılımsız yükseltmelerin SADECE 6'da çalışmasını istediğim için önce programı temizlemem gerekiyor.
daniel f.

Önyüklemeden sonra da çalışmayı etkinleştirmek için "OnBootSec = 5min" ekledim, ancak çalışmadı. (ayrıca çok sık çalışmaması için OnUnitActiveSec = 12h eklendi.)
jarno

systemd veya daha doğrusu systemd zihniyeti tekrar vurur. Bu gem beni ısırdıktan sonra üretimde Xenial Xerus için yükseltme yeniden düşünmek zorunda kalabilirsiniz.
Joe

2
@daniel f. / Lib / systemd / system / içinde bir apt-daily.timer dosyası ve /etc/systemd/system/timers.target.wants/ içinde bir tane var. Ancak / etc / systemd / system / kendisi gibi. Bunun yerine apt-daily.timer.d dizinini ve override.conf dosyasını / lib / systemd / system altında mı oluşturmam gerektiğini biliyor muydunuz? Tüm tavsiyeler minnetle thx ile recd.
Purvez

6

Https://wiki.debian.org/UnattendedUpgrades adresindeki resmi debian belgelerinde şu anda birçok insanı yanıltan bir hata var. Adlı dosyayı oluşturarak yükseltme süresini geçersiz kılabileceğinizi iddia ediyor

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

Ancak doğru yol

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

2
Güzel bir bulgu. IMHO en güvenli olanı kullanmaktır sudo systemctl edit apt-daily.timer. Bu, doğru açılan dosyaya sahip bir düzenleyici açar.
PerlDuck

2
Teşekkür ederim PerlDuck, Debian Wiki sayfasını önerinizle düzenledim
Rolf Wojtech

Bu cevabı faydalı olduğu ve Debian wiki sayfasını güncellediği için onayladı!
Anthony Geoghegan

@PerlDuck - 18.04LTS'nin altında koştum sudo systemctl edit apt-daily.timer. Yaratıldı /etc/systemd/system/apt-daily.timer.d/override.conf... Neden öyle olsun ki? Düzgün çalışıp çalışmadığını kontrol edeceğim.
sancho.s ReinstateMonicaCellio

@ sancho.sReinstateMonicaCellio Belki 18.04'ünüzü yeni bir kurulum yapmak yerine önceki bir sürümden yükselttiniz. Bir güncelleme sırasında birim dosyalarının konumunu değiştirmediklerini, ancak yeni bir kurulumda ( /lib/…yerine /etc/…) sadece yeni konumu kullandıklarını düşünüyorum . Yine de sadece bir tahmin. Yine de: doğru yol olduğunu systemctl edit …düşünüyorsanız /etc/…, ona güvenebilirsiniz. Ben rahatsız olmazdım. Ayrıca systemctl cat …birimin geçerli yolunu (ve içeriğini) görmeyi de deneyebilirsiniz . (BTW: Bu cevabın yazarı değilim, sadece bazı formatları düzelttim.)
PerlDuck

5

Daniel'in çözümünü denedim ama yükseltme hala yanlış zamanlarda gerçekleşti. Orada gerekli iki sistemd geçersiz kılma ortaya çıktı:

Yüklemeler için kullanılır

/lib/systemd/system/apt-daily.timer

... ile geçersiz kılınan:

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

Yükseltme için kullanılır

/lib/systemd/system/apt-daily-upgrade.timer

... ile geçersiz kılınan:

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

1
Hangi versiyondasın? Yani her iki zamanlayıcıyı da aynı anda geçersiz kılmak zorunda kaldınız mı?
daniel f.

Ubuntu 16.04.4 x64
Niels Rask
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.