मुझे आखिरी बार खोजने की जरूरत है कि
apt-get update
कमांड मेरे सर्वर पर चलाया गया था। मैं यह जानकारी कैसे निर्धारित कर सकता हूं?
मुझे आखिरी बार खोजने की जरूरत है कि
apt-get update
कमांड मेरे सर्वर पर चलाया गया था। मैं यह जानकारी कैसे निर्धारित कर सकता हूं?
जवाबों:
कम से कम उबंटू प्रणालियों में एक फ़ाइल है /etc/apt/apt.conf.d/15update-stamp:
APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
इसलिए देखें कि क्या आपके पास / var / lib / apt / periodic / update-success-Stamp है और यदि आपके पास है, तो आप इसका उपयोग कर सकते हैं
stat -c %y /var/lib/apt/periodic/update-success-stamp
अंतिम "उपयुक्त-अद्यतन अपडेट" आह्वान का समय प्राप्त करने के लिए कमांड करें।
और अगर आपके सिस्टम में वह उपयुक्त कॉन्फ़िगरेशन फ़ाइल नहीं है, तो आप इसे हमेशा जोड़ सकते हैं।
आप / var / lib / apt / सूचियों में फ़ाइलों पर एक्सेस समय की जाँच कर सकते हैं जो कि जब आप apt-get अद्यतन चलाते हैं तो अद्यतन किया जाता है। अगर apt-get अपडेट को sudo के साथ चलाया जाता था तो आपके पास /var/log/auth.log में लॉग इन की गई लाइन होनी चाहिए ..
कोई apt-get update
फ़ाइलें नहीं बना सकता है या अपडेट नहीं कर सकता है, यह कैश डायरेक्टरी को अपडेट करता है ताकि हम अंतिम बार apt-get update
चलने पर टाइमस्टैम्प प्राप्त करने के लिए उपयोग कर सकें :
stat -c %Y /var/cache/apt/
apt-get update
लॉक फ़ाइलों से मत जाओ। लॉक फ़ाइलें विश्वसनीय नहीं हैं, वे नए लिनक्स रिलीज़ के साथ समय के साथ घूमने लगते हैं, और जब वे उनके साथ होते हैं तो कई प्रोग्राम क्लीन (निकालें) लॉक फ़ाइलों को साफ करते हैं।
निम्न आदेश आपको वह मिलेगा जो आप खोज रहे हैं।
ls -lt --time-style="long-iso" /var/log/apt | grep -o '\([0-9]\{2,4\}[- ]\)\{3\}[0-9]\{2\}:[0-9]\{2\}' -m 1
यह एक में दो कमांड है। पाइप के माध्यम से दूसरे में पहले कमांड फिल्टर के परिणाम (!) प्रतीक।
पहले कमांड में, मैं "ls" का उपयोग / var / log / apt निर्देशिका की फ़ाइल सामग्री को सूचीबद्ध करने के लिए कर रहा हूं, जो कि वह निर्देशिका है जो apt-get के लिए एक्सेस इतिहास लॉग को संग्रहीत करती है। "-Lt" भाग वास्तव में दो स्विच है। पहला "एल" स्विच विस्तार से एक फ़ाइल प्रति पंक्ति को सूचीबद्ध करने के लिए "ls" बताता है। दूसरा "t" स्विच दिनांक और समय के अनुसार "ls" बताता है। - "समय-शैली" प्रारूप "YYYY-MM-DD HH: MM" प्रारूप में प्रदर्शित होने के लिए समय निर्धारित करता है।
कमांड के "grep" भाग में, "-o" स्विच grep को केवल प्रत्येक पंक्ति के कुछ हिस्सों को दिखाने के लिए कहता है जो नियमित अभिव्यक्ति से बिल्कुल मेल खाते हैं। मैंने यहाँ जो नियमित अभिव्यक्ति का उपयोग किया है वह "एलएस" कमांड में निर्दिष्ट प्रारूप में दिनांक समय का पता लगाता है। आप "grep" कमांड के बहुत ही अंत में जादू के असली छोटे टुकड़े को देखेंगे जो तुरंत "1" नंबर के साथ "-m" स्विच होता है। यह "grep" बताता है कि पहले एक को खोजने के बाद मैचों की तलाश करना बंद कर दें।
इसलिए, सारांश में, हम apt लॉग फ़ाइल विवरण सूचीबद्ध कर रहे हैं ताकि हम अंतिम संशोधित तिथि देख सकें, हम फिर तिथि के अनुसार क्रमबद्ध करते हैं और grep को शीर्ष से पहली तारीख खींचने के लिए कहते हैं, जो तब वापस आ जाता है। वह आखिरी तारीख है, जिसे दौड़ना है।
एक पल के लिए शैतान के वकील की भूमिका निभाने के लिए, हालांकि, उबंटन जैसे डेबियन प्लेटफार्मों के लिए यह उपयुक्त है कि वे नियमित रूप से नौकरी पाने के लिए उपयुक्त हों। यदि आप उपयुक्त-निष्पादन के दूसरे छोर पर व्यक्ति की तलाश कर रहे हैं, तो आप वास्तव में एक मशीन पा सकते हैं। आप किसी भी समय टिकटों को देखने के लिए उपयुक्त लॉग के साथ हमेशा एक्सेस लॉग से मेल खा सकते हैं। उपयोगकर्ता के कमांड इतिहास को एक हद तक देखना भी संभव है।
उम्मीद है की यह मदद करेगा!
/var/log/apt
यह भी लॉग जब मैं उदाहरण के लिए एक कर रहा है apt-get install some-package
। असल में उबंटू पर यह तब कुछ लॉग नहीं करता है जब मैं करता हूंapt-get update
मुझे संदेह है कि आप संकुल सूचियों पर अंतिम अद्यतन लागू होने पर यह पता लगाने के लिए फ़ाइलों / var / cache / apt पर अंतिम संशोधित समय की जांच कर सकते हैं।
मैंने अभी-अभी इसका परीक्षण किया, और एक पंक्ति में दो बार "sudo apt-get update" चलाया, और दिनांक उनके वर्तमान मूल्य से नहीं बदले, लेकिन मुझे संदेह है कि यह लागू करने के लिए कोई नया अपडेट नहीं था, और यह कि कैश ऊपर हैं तारीख तक।
$ ls -l /var/lib/dpkg/lock
-rw-r----- 1 root root 0 2011-11-16 09:40 /var/lib/dpkg/lock
Synaptic एक इतिहास फ़ाइल (> फ़ाइल> इतिहास) लॉग करता है, एप्टीट्यूड / var / log / aptitude और auto-install संकुल दोनों इतिहास को / var / lib / aptitude / pkgstates में लॉग करता है, इसलिए आप नवीनतम गतिविधि के लिए इनकी जाँच कर सकते हैं।
मुझे /var/cache/apt
यह निर्धारित करने के लिए उपयोग किया जाता है कि मुझे चलाने की आवश्यकता है या नहीं apt-get update
। डिफ़ॉल्ट रूप से, यदि वर्तमान समय और कैश समय के बीच का अंतर /var/cache/apt
24 घंटे से कम है, तो मुझे चलाने की आवश्यकता नहीं है apt-get update
। फ़ंक्शन के लिए एक नंबर पास करके डिफ़ॉल्ट अपडेट अंतराल को ओवरराइड किया जा सकता हैrunAptGetUpdate()
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
}
नमूना आउटपुट:
<root@ubuntu><~/ubuntu-cookbooks/libraries>
# runAptGetUpdate
Skip apt-get update because its last run was '0h 37m 43s' ago
मैंने अपने व्यक्तिगत गिथब से ये कार्य निकाले: https://github.com/gdbtek/ubuntu-cookbooks/blob/master/lbooks/util.bash
info
और isEmptyString
? इसके अलावा, info
फ़ंक्शन नाम का एक खराब विकल्प है क्योंकि यह भी एक कमांड है। इसके अलावा, अच्छा समाधान!
लिपि में लपेटो-पहले एक फ़ाइल में टाइमस्टैम्प लिखता है, और फिर सामान्य काम करता है। इस तरह, आप टाइमस्टैम्प प्रारूप और स्थान को परिभाषित कर सकते हैं;)
यदि अंतिम दिन में इसे नहीं चलाया गया है तो अपडेट को चलाने के लिए एक सरल वन-लाइनर है।
(find /var/lib/apt/periodic/update-success-stamp -mtime +1 | grep update-success-stamp) && (/usr/bin/apt-get update)
यह अपडेट-सक्सेस-स्टैंप फाइल के लिए दिखता है, जिसे एक दिन पहले संशोधित किया गया है। यदि यह सही उम्र की फ़ाइल पाता है, तो यह अद्यतन चलाता है। नोट: काम करने के लिए अद्यतन-सफलता-स्टैम्प फ़ाइल मौजूद है।
/var/lib/apt/periodic/update-stamp