Son kez bulmam gerek.
apt-get update
Komut sunucumda çalıştırıldı. Bu bilgiyi nasıl belirleyebilirim?
Son kez bulmam gerek.
apt-get update
Komut sunucumda çalıştırıldı. Bu bilgiyi nasıl belirleyebilirim?
Yanıtlar:
En azından Ubuntu sistemlerinde aşağıdakileri içeren bir /etc/apt/apt.conf.d/15update-stamp dosyası var:
APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
Öyleyse / var / lib / apt / periodic / update-success-stamp'iniz varsa ve varsa, kullanabilirsiniz.
stat -c %y /var/lib/apt/periodic/update-success-stamp
son "apt-get update" çağrısı zamanını alma komutu.
Sisteminizde uygun bir yapılandırma dosyası yoksa, her zaman ekleyebilirsiniz.
Apt-get update komutunu çalıştırdığınızda güncellenen / var / lib / apt / list dosyalarındaki Access zamanlarını kontrol edebilirsiniz. Apt-get update sudo ile çalıştırıldıysa, /var/log/auth.log’da oturum açmış bir satırın olması gerekir.
Bir apt-get update
dosya oluşturmayabilir veya güncelleyemez, önbellek dizinini günceller, böylece son apt-get update
çalıştırıldığında zaman damgasını almak için bunu kullanabiliriz :
stat -c %Y /var/cache/apt/
apt-get update
Kilit dosyalarından gitme. Kilitleme dosyaları güvenilir değildir, yeni Linux sürümleri ile zaman içinde hareket etme eğilimindedirler ve çoğu program bunlarla birlikte çalıştıklarında kilitleme dosyalarını temizler (kaldırır).
Aşağıdaki komut size aradığınızı verecektir.
ls -lt --time-style="long-iso" /var/log/apt | grep -o '\([0-9]\{2,4\}[- ]\)\{3\}[0-9]\{2\}:[0-9]\{2\}' -m 1
Bu bir iki komuttur. Birinci komut filtresinin sonuçları, boru (|) sembolünden ikinciye girer.
İlk komutta, / var / log / apt dizininin dosya içeriklerini listelemek için "ls" kullanıyorum, apt-get için erişim geçmişi günlüklerini saklayan dizin. "-Lt" kısmı aslında iki anahtardır. İlk "l" anahtarı "ls" e satır başına bir dosya ayrıntılarıyla listelemesini söyler. İkinci "t" düğmesi "ls" ye tarih ve saate göre sıralama yapmasını söyler. "- time-style" tarih saatini "YYYY-AA-GG YG: AA" biçiminde göstermeye zorlar.
Komutun "grep" bölümünde, "-o" düğmesi grep'e yalnızca normal ifadeyle tam olarak eşleşen her satırın bölümlerini göstermesini söyler. Burada kullandığım normal ifade, "ls" komutunda belirtilen formattaki tarih saatlerini algılar. Ayrıca, "grep" komutunun en sonunda, hemen ardından "1" sayısının bulunduğu bir "-m" düğmesi bulunduğunu gösteren gerçek sihir parçasını fark edeceksiniz. Bu, "grep" e birinciyi bulduktan sonra kibrit aramayı bırakmasını söyler.
Bu yüzden, özet olarak, uygun günlük dosyası ayrıntılarını listeliyoruz, böylece en son değiştirilen tarihi görebiliyoruz, daha sonra tarihe göre sıralıyoruz ve grep'e, ilk tarihi en baştan çekmesini ve ardından geri dönmesini söylüyoruz. Bu apt-get koştu son tarih.
Bununla birlikte, bir an için şeytanın avukatı oynamak, Ubuntu gibi Debian platformlarının apt-get'i düzenli olarak çalışan bir iş olarak planlaması yaygındır. Apt-get yürütmesinin diğer ucundaki kişiyi arıyorsanız, aslında bir makine bulabilirsiniz. Herhangi bir zaman damgasının çakışmadığını görmek için erişim günlüklerini her zaman uygun günlüklerle eşleştirebilirsiniz. Bir kullanıcının komut geçmişine bir ölçüde bakmak da mümkündür.
Bu yardımcı olur umarım!
/var/log/apt
Ben mesela bir yaptığınızda bunun da kaydedilir apt-get install some-package
. Aslında Ubuntu'da yaptığım zaman hiçbir şeyi apt-get update
Son değişikliklerin paket listelerine ne zaman uygulandığını bulmak için / var / cache / apt üzerindeki son değiştirilmiş zamanları kontrol edebileceğinizden şüpheleniyorum.
Bunu yeni test ettim ve üst üste iki kez "sudo apt-get update" komutunu kullandım ve tarihler şu anki değerlerinden farklı değildi, ancak bunun uygulanacağı için yeni güncellemeler olmadığından ve önbelleklerin hazır olduğundan şüpheliyim. bugüne kadar.
$ ls -l /var/lib/dpkg/lock
-rw-r----- 1 root root 0 2011-11-16 09:40 /var/lib/dpkg/lock
Synaptic bir geçmiş dosyası (> Dosya> Geçmiş) kaydeder, yetenek / tarih / var / log / yetenek ve otomatik olarak yüklenmiş paketleri / var / lib / aptitude / pkgstates içine otomatik olarak kaydeder, böylece bunları en son etkinlik için kontrol edebilirsiniz.
/var/cache/apt
Koşmam gerekip gerekmediğini belirlemek için kullanıyorum apt-get update
. Varsayılan olarak, geçerli saat ile önbellek süresi arasındaki fark /var/cache/apt
24 saatten azsa, çalıştırmam gerekmez apt-get update
. Varsayılan güncelleme aralığı, bir sayı fonksiyona geçirilerek geçersiz kılınabilirrunAptGetUpdate()
function getLastAptGetUpdate()
{
local aptDate="$(stat -c %Y '/var/cache/apt')"
local nowDate="$(date +'%s')"
echo $((nowDate - aptDate))
}
function runAptGetUpdate()
{
local updateInterval="${1}"
local lastAptGetUpdate="$(getLastAptGetUpdate)"
if [[ "$(isEmptyString "${updateInterval}")" = 'true' ]]
then
# Default To 24 hours
updateInterval="$((24 * 60 * 60))"
fi
if [[ "${lastAptGetUpdate}" -gt "${updateInterval}" ]]
then
info "apt-get update"
apt-get update -m
else
local lastUpdate="$(date -u -d @"${lastAptGetUpdate}" +'%-Hh %-Mm %-Ss')"
info "\nSkip apt-get update because its last run was '${lastUpdate}' ago"
fi
}
Örnek çıktı:
<root@ubuntu><~/ubuntu-cookbooks/libraries>
# runAptGetUpdate
Skip apt-get update because its last run was '0h 37m 43s' ago
Bu fonksiyonları kişisel github'umdan aldım: https://github.com/gdbtek/ubuntu-cookbooks/blob/master/libraries/util.bash
info
ve isEmptyString
? Ayrıca, info
aynı zamanda bir komut olduğundan, işlev adı için kötü bir seçimdir. Bunun dışında güzel bir çözüm!
apt-get 'i bir dosyaya önce bir zaman damgası yazan bir betiğe yerleştirin ve ardından normal işleri yapar. Bu şekilde zaman damgası formatını ve konumunu tanımlayabilirsiniz;)
İşte son gün içinde çalıştırılmamışsa, güncelleme yapmak için basit bir astar.
(find /var/lib/apt/periodic/update-success-stamp -mtime +1 | grep update-success-stamp) && (/usr/bin/apt-get update)
Bir günden daha önce değiştirilmiş olan güncelleme-başarı damgası dosyasını arar. Doğru yaştaki dosyayı bulursa, güncellemeyi çalıştırır. Not: Bunun çalışması için güncelleme-başarı damgası dosyasının var olması gerekir.
/var/lib/apt/periodic/update-stamp