শেষবার কীভাবে জানবেন `অ্যাপট-গেট আপডেট` কার্যকর করা হয়েছিল?


24

আমি জানি যে সংগ্রহস্থল তালিকাগুলি আপডেট করার কমান্ডটি apt-get update

এটি আজ বা গত 24 ঘন্টা কার্যকর করা হয়েছে কিনা তা কীভাবে পরীক্ষা করবেন?

কিছু ফাইল টাইমস্ট্যাম্প চেক করা উচিত কিনা আমি জানি না। অথবা অন্য এপ্ট কমান্ড জারি করুন। অথবা dpkg ইউটিলিটি ব্যবহার করুন।

ম্যান পৃষ্ঠাগুলিতে দরকারী কিছু খুঁজে পাওয়া যায়নি।

উত্তর:


15

আপনি আপনার কমান্ডের ইতিহাস টার্মিনালে পরীক্ষা করতে পারেন:

history | grep 'apt update'

সময় দ্বারা এটি পরীক্ষা করতে:

HISTTIMEFORMAT="%d/%m/%y %T " history | grep '[a]pt update'

( [a]নিয়মিত প্রকাশের অংশটি কেবল বর্ণের aসাথে মেলে তবে ইতিহাসে গ্রেপিংয়ের সাথে মেলে না এমনটা তার প্রভাব ফেলে))

এখানে চিত্র বর্ণনা লিখুন

আশা করি এটা সাহায্য করবে !


2
এটি history | grep 'apt-get update':)
লুসিও

7
@ সৌরভ ঠিক আছে। এটি নিজের কাজ করবে না। যদি HISTTIMEFORMATসেট না করা থাকে .bashrcতবে এই কমান্ডটিতে কেবল বর্তমান শেল সেশন থেকে কার্যকর হওয়া কমান্ডগুলির জন্য সঠিক টাইমস্ট্যাম্প থাকবে । অন্যান্য সমস্ত কমান্ডের জন্য যা বর্তমান অধিবেশন থেকে নয়, টাইমস্ট্যাম্পটি কেবলমাত্র ~/.bash_historyফাইলের সংশোধন টাইমস্ট্যাম্প দেখায় । এটি অন্যান্য সেশনের আদেশগুলির জন্য টাইমস্ট্যাম্পগুলি প্রদর্শন করতে পারে না কারণ সেই টাইমস্ট্যাম্পগুলি ~/.bash_historyফাইলে সংরক্ষণ করা হয়নি । এটি বর্তমান সেশনের টাইমস্ট্যাম্পগুলি প্রদর্শন করতে পারে কারণ সেই স্ট্যাম্পগুলি এখনও মেমরিতে রয়েছে।
ফ্যালকোনার

7
এটি সবসময় কাজ করে না। উদাহরণস্বরূপ যখন অন্য কোনও ব্যবহারকারী দৌড়েছিল aptবা যখন আপনার .bash_historyছাঁটা হয়েছে।
অরেঞ্জটক্স

4
এটি একটি মারাত্মক ভুল উত্তর। এটি অপ্রত্যাশিত আপগ্রেডগুলির জন্য অ্যাকাউন্ট নয়, এছাড়াও আপনি যদি আমার মতো এমন কেউ থাকেন যা সর্বদা 4-5 টার্মিনাল খোলা থাকে তবে ইতিহাসটি কেবল তখনই রক্ষা পায় যখন তারা বের হয়ে আসবে (ডিফল্টরূপে), সুতরাং আপনাকে সমস্তটি পরীক্ষা করে দেখতে হবে।
হ্যাকেল

3
সবাই ইতিমধ্যে যা বলেছে তা প্রতিধ্বনি করছে, অ্যাপটি কোনও স্ক্রিপ্ট দ্বারা আপডেট করা হয়েছে, যদি আপনি সঠিক ইতিহাসের দিকে তাকান না, যদি ইতিহাসটি ছাঁটাই করা হয়েছে বা অন্য কোনও ব্যবহারকারী আপডেটটি করেছেন তবে এটি কাজ করবে না। এটি সাধারণ ক্ষেত্রে সমাধান করার পক্ষে যথেষ্ট নির্ভরযোগ্য নয়।
জেনাক

54

এর টাইম স্ট্যাম্প চেক করুন /var/lib/apt/periodic/update-success-stamp

$ ls -l /var/lib/apt/periodic/update-success-stamp
-rw-r--r-- 1 root root 0 Jan 25 01:41 /var/lib/apt/periodic/update-success-stamp

এখানে সময় Jan 25 01:41যখন apt-getশেষ মৃত্যুদন্ড কার্যকর। কেবলমাত্র সময় পেতে, টার্মিনালে নিম্নলিখিত কমান্ডটি ব্যবহার করুন,

$ ls -l /var/lib/apt/periodic/update-success-stamp | awk '{print $6" "$7" "$8}'
Jan 25 01:41

সর্বশেষ আপডেটের সময়টি যাচাই করার জন্য এটি সেরা জায়গা। যদি আপনাকে /var/lib/apt/periodic/খালি মনে হয় আপনি চেষ্টা করতে পারেন,

ls -l /var/log/apt/history.log

হালনাগাদ

এটি পাওয়া গেছে যে কিছু কারণের কারণে ফাইলগুলি উপরে রয়েছে update-success-stampবা history.logকিছু সিস্টেমে অনুপলব্ধ রয়েছে। ফাইলটি সন্ধানের জন্য ডার্বার্ট থেকে একটি নতুন প্রস্তাব এসেছে ।/var/cache/apt/pkgcache.bin

pkgcache.binঅ্যাপের স্মৃতি ম্যাপ করা প্যাকেজ ক্যাশে অবস্থান। এটি প্রতিটি আপডেটের পরে পুনর্নবীকরণ পেতে। তাই সর্বশেষ aptআপডেটটি কখন শেষ হয়েছিল তা জানার জন্য এটিই সঠিক প্রার্থী ।

সঠিক সময় জানতে কেউ নিম্নলিখিত আদেশটি ব্যবহার করতে পারেন,

ls -l /var/cache/apt/pkgcache.bin | cut -d' ' -f6,7,8

অথবা

stat /var/cache/apt/pkgcache.bin

আমার /var/lib/apt/periodic/ডিরেক্টরি খালি
ভার্চুয়ালপেটস

আমার ডিরেক্টরিটিও খালি। দেবিয়ান 7.3 হুইজি।
কাভিলা

6
একটি ভাল ব্যাকআপ অবস্থান হবে /var/cache/apt/pkgcache.bin। এছাড়াও, দয়া করে এর ফলাফলকে বিশ্লেষণ করবেন না ls; statপরিবর্তে ব্যবহার করুন। মনে রাখবেন যে lsআউটপুট লোকালের উপর নির্ভর করে, ফাইলের বয়স ইত্যাদির উপর নির্ভর করে (এছাড়াও, আমি মনে করি আপনি কেবলমাত্র প্রথম ফাইলটি আপডেট করেন যা আপনার আপডেট-নোটিফায়ার-সাধারণ ইনস্টল করা থাকে)
ডার্বার্ট

2
এটি /var/cache/apt/pkgcache.binপ্যাকেজ ইনস্টলেশনের ক্ষেত্রেও স্পর্শযুক্ত বলে মনে হয়, তাই এটি সর্বশেষ apt-get updateরানটি পরীক্ষা করার কোনও নির্ভরযোগ্য উপায় নয় ।
GnP

3
... এবং আমি সবেমাত্র আবিষ্কার করেছি যে একটি ডেবিয়ান 8 সিস্টেম যেখানে apt-get cleanসম্প্রতি চালিত হয়েছে তার কোনও নেই /var/cache/apt/pkgcache.bin। আমি /var/lib/apt/listsপরিবর্তে এমটাইম ব্যবহার করার চেষ্টা করতে যাচ্ছি , যেহেতু এটি কাঁচা, অ-ক্যাশেড ডেটা যা apt-get updateবাস্তবে হেরফের করে।
ssokolow

6

আমি /var/cache/aptচালাতে হবে কিনা তা নির্ধারণ করতে আমি ব্যবহার করি apt-get update। ডিফল্টরূপে, যদি বর্তমান সময়ের এবং ক্যাশের সময়ের পার্থক্য /var/cache/apt24 ঘন্টাের চেয়ে কম হয় তবে আমার চালনার দরকার নেই apt-get update। ডিফল্ট আপডেটের ব্যবধানটি একটি সংখ্যা ফাংশনে পাস করার মাধ্যমে ওভাররাইড করা যায়runAptGetUpdate()

function trimString()
{
    local -r string="${1}"

    sed -e 's/^ *//g' -e 's/ *$//g' <<< "${string}"
}

function isEmptyString()
{
    local -r string="${1}"

    if [[ "$(trimString "${string}")" = '' ]]
    then
        echo 'true'
    else
        echo 'false'
    fi
}

function info()
{
    local -r message="${1}"

    echo -e "\033[1;36m${message}\033[0m" 2>&1
}

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/libraries/util.bash


2

আপনি ফাইল সম্পর্কে আগ্রহীও হতে পারেন:

/var/log/apt/term.log

রুট হিসাবে এটি কম বা বিড়াল দিয়ে খুলুন ।


প্যাকেজ ডেটাবেসে অ্যাপটি সম্পাদন করেছে এমন কর্মের লগগুলি পরীক্ষা করার জন্য এটি একটি বুদ্ধিমান জায়গা, তবে আফিক পোস্টারটি জানতে চায় apt-get update, এবং এটি সম্ভবত লগ হয় নি not
ফাহিম মিঠা

1

আমি এই কমান্ডটি ব্যবহার করি

stat /var/cache/apt/ | grep -i -e access -e modify

এটি অ্যাক্সেস করা হয়েছে গত সময় দেখানোর জন্য। 'অ্যাপটি-গেট আপডেট' চালানো শেষবারের মতো এটি আপডেট হয়েছিল।

নোট করুন যদি সময়গুলি আলাদা হয় তবে কোনও আপডেট উপলব্ধ নাও থাকতে পারে। যেহেতু নির্দিষ্ট সময়ে আমার আপডেটগুলি এবং আপগ্রেডগুলি ক্রন্টব দ্বারা চালিত হয় আমি তা বলতে পারি যে আমার আপডেটগুলি চালিত হয়েছিল কি না।


1

এখান থেকে উত্তরের সাথে @ সোসোকোলোর শেষ মন্তব্যের সংমিশ্রণ , এই কমান্ডটি apt-get updateগত 7 দিনে যদি এটি চালিত না হয় তবে চলবে:

[ -z "$(find -H /var/lib/apt/lists -maxdepth 0 -mtime -7)" ] && sudo apt-get update

ব্যাখ্যা:

  • -mtime -7গত 7 দিনে পরিবর্তিত সময় রয়েছে এমন ফাইলগুলি সন্ধান করে। আপনি -mminযদি ছোট সময়ের বিষয়ে যত্নশীল হন তবে আপনি ব্যবহার করতে পারেন ।
  • -maxdepth 0 নিশ্চিত করে যে ডিরেক্টরিটি সামগ্রীর সামগ্রীতে যাবে না into
  • -H/var/lib/apt/listsযদি এটি একটি নরম লিঙ্ক হয় তবে dereferences
  • যদি কোনও কারণে findব্যর্থ হয়, তবে কমান্ডটি চলবে। এটি আমার কাছে নিরাপদ ডিফল্টের মতো মনে হয়। আপনি যদি ডিফল্ট ফ্লিপ করতে চান -nতবে পরীক্ষা এবং -mtime +7ফাইন্ড কমান্ডে ব্যবহার করুন।

0

আমি কেবল নিম্নলিখিত বিষয়ের উপর এই প্রশ্নের উত্তর পোস্ট করেছি

আমি কোথায় আমার আপডেটের ইতিহাস সন্ধান করতে পারি?

উত্তরটি এই বিষয়ের জন্য কম উপযুক্ত হতে পারে, কারণ এটি বিশেষত "অ্যাপট-গিগ আপগ্রেড" অনুসন্ধান করে। এখানে নমুনা আউটপুট।

xenial% 9: ./linuxpatchdate 
2016-07-19 54
2017-02-24 363
2017-03-08 7
2017-03-09 2

উত্স কোড এবং আরও ব্যাখ্যার জন্য অন্যান্য বিষয় দেখুন।


আপনার কোডটি আপগ্রেডের জন্য অনুসন্ধান করেছে, আপডেট নয় me উদাহরণস্বরূপ, আমি আমার উবুন্টু ১.0.০৪-তে কেবল "অ্যাপট-গেট আপডেট" চালিয়েছি (পরিবর্তনের একটি আইওটা / var / লগ / এপিতে প্রদর্শিত হবে না, বোঝা যাচ্ছে যে ডিরেক্টরিতে কোনও কিছু স্ক্যান করা কোনও কাজে আসবে না) এই নির্দিষ্ট প্রশ্নের উত্তর।
রন বার্ক

1
আপনি পুরোপুরি ঠিক বলেছেন। যে ইশারা জন্য ধন্যবাদ। আমি প্রতিফলিত করতে আমার উত্তর পরিবর্তন করেছি। আমরা মেশিনে সর্বশেষ তারিখের আপডেটগুলি কেবল ডাউনলোড হওয়ার পরিবর্তে প্রয়োগ করা হয়েছিল তা সন্ধান করছিলাম।
জিনসিনে 4'40

0
LAST_UPDATED=$( stat --format="%X" /var/cache/apt/pkgcache.bin )
UNIX_TIME=$( date +%s )
TIME_DIFF=$(( UNIX_TIME - LAST_UPDATED ))

if [[ "${TIME_DIFF}" -gt 43200 ]]
then
  # It's been 12 hours since apt-get update was ran.
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.