অ্যাপটি-গেটের মাধ্যমে শেষবারের আপডেটটি সম্পাদিত হয়েছিল সন্ধান করুন


30

আমার শেষবারের সন্ধান করা উচিত

apt-get update

কমান্ডটি আমার সার্ভারে চালিত হয়েছিল। আমি কীভাবে এই তথ্যটি নির্ধারণ করতে পারি?

উত্তর:


23

কমপক্ষে উবুন্টু সিস্টেমে একটি ফাইল /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 / অ্যাপটি / সাময়িকী / আপডেট-সাফল্য-স্ট্যাম্প রয়েছে এবং যদি এটি থাকে তবে আপনি ব্যবহার করতে পারেন

stat -c %y /var/lib/apt/periodic/update-success-stamp

সর্বশেষ "অ্যাপট-গেট আপডেট" অনুরোধের সময় পাওয়ার জন্য কমান্ড।

এবং যদি আপনার সিস্টেমে সেই অ্যাপটি কনফিগারেশন ফাইলটি না থাকে তবে আপনি সর্বদা এটি যুক্ত করতে পারেন।


Apt.conf লাইনটি অন্তর্ভুক্ত করার জন্য +1। উবুন্টুতে 14.04 এ ফাইলটি মনে হচ্ছে/var/lib/apt/periodic/update-stamp
GnP

11

আপনি / var / lib / apt / list ফাইলগুলিতে অ্যাক্সেসের সময়গুলি পরীক্ষা করতে পারেন যা আপনি অ্যাপটি-গেট আপডেট চালানোর সময় আপডেট হয়। অ্যাপো-গেট আপডেটটি sudo দিয়ে চালিত হলে আপনার /var/log/auth.log লগ ইন করা উচিত যখন তা হয়ে গেছে ..


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

10

কোনও apt-get updateফাইল তৈরি বা আপডেট নাও করতে পারে, এটি ক্যাশে ডিরেক্টরিটি আপডেট করে যাতে সর্বশেষটি apt-get updateচালিত হওয়ার সময় টাইমস্ট্যাম্পটি পেতে আমরা এটি ব্যবহার করতে পারি :

stat -c %Y /var/cache/apt/

নোট করুন যে প্যাকেজ ইনস্টলেশন ক্যাশে ডিরেক্টরি আপডেট করতে পারে। এটি কোনও নির্ভরযোগ্য চেক নয়apt-get update
GnP

3

লক ফাইল থেকে যান না। লক ফাইলগুলি নির্ভরযোগ্য নয়, তাদের সাথে নতুন লিনাক্স রিলিজ এবং সময়ের সাথে অনেকগুলি প্রোগ্রাম ক্লিনআপ (অপসারণ) লক ফাইলগুলি যখন শেষ হয়ে যায় তখন সেগুলি তাদের সাথে শেষ হয়।

নীচের কমান্ডটি আপনি যা সন্ধান করছেন তা পাবেন।

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 ডিরেক্টরিতে ফাইলের লিখিত বিষয়বস্তু তালিকাভুক্ত করতে, যা ডিরেক্টরিটি এপ-গেটের জন্য অ্যাক্সেসের ইতিহাস লগগুলি সঞ্চয় করে। "-ল্ট" অংশটি আসলে দুটি সুইচ। প্রথম "l" স্যুইচ "ls" কে প্রতি লাইনে একটি ফাইল বিশদের সাথে তালিকাবদ্ধ করতে বলে। দ্বিতীয় "টি" স্যুইচ "ls" কে তারিখ এবং সময় অনুসারে বাছাই করতে বলে। "- টাইম-স্টাইল" তারিখের সময়টিকে "YYYY-MM-DD HH: MM" ফর্ম্যাটে প্রদর্শিত করতে বাধ্য করে।

কমান্ডের "গ্রেপ" অংশে, "-o" সুইচটি গ্রেপকে কেবল প্রতিটি রেখার অংশগুলি দেখাতে বলে যা নিয়মিত অভিব্যক্তির সাথে ঠিক মিলে যায়। আমি এখানে যে নিয়মিত এক্সপ্রেশন ব্যবহার করেছি তা "ls" কমান্ডে নির্দিষ্ট ফর্ম্যাটে থাকা তারিখের সময়গুলি সনাক্ত করে। "গ্রেপ" কমান্ডের একেবারে শেষ প্রান্তে আপনি যাদুটির সত্যিকারের ছোট্ট টুকরোটিও লক্ষ্য করে দেখতে পাবেন যে "1" নম্বর অবিলম্বে অনুসরণ করে "-m" সুইচ রয়েছে switch এটি "গ্রেপ" কে ম্যাচ সন্ধান করা বন্ধ করার জন্য জানিয়েছে এটি প্রথমটি খুঁজে পাওয়ার পরে।

সুতরাং, সংক্ষেপে, আমরা এপটি লগ ফাইলের বিশদটি তালিকাবদ্ধ করছি যাতে আমরা শেষের পরিবর্তিত তারিখটি দেখতে পারি, তারপরে আমরা তারিখ অনুসারে বাছাই করে গ্রিপকে বলি যে প্রথম তারিখটিকে শীর্ষে টানতে, এটি তারপরে ফিরে আসে। এটিই শেষ তারিখ যা প্রস্তুত হয়েছিল।

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

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


1
দুর্ভাগ্যক্রমে কাজ হচ্ছে না। ইন /var/log/aptএটি লগ যখন আমি উদাহরণস্বরূপ একটি না হয় apt-get install some-package। আসলে উবুন্টুতে যখন আমি করি তখন এটি কিছু লগ করে নাapt-get update
অ্যালেক্স

2

আমার সন্দেহ হয় আপনি কখন প্যাকেজ তালিকায় সর্বশেষ আপডেটগুলি প্রয়োগ করেছেন তা নির্ধারণ করার জন্য ফাইলগুলি / var / cache / apt এ সর্বশেষ পরিবর্তিত সময়গুলি পরীক্ষা করতে পারেন।

আমি কেবল এটি পরীক্ষা করে দেখেছি এবং পর পর দু'বার "sudo apt-get update" চালিয়েছি এবং তারিখগুলি তাদের বর্তমান মান থেকে পরিবর্তিত হয়নি, তবে আমার সন্দেহ হয় যে এটি প্রয়োগ করার জন্য কোনও নতুন আপডেট ছিল না এবং ক্যাশেগুলি শেষ হয়েছে এখন পর্যন্ত.



1

সিনাপটিক একটি ইতিহাসের ফাইল (> ফাইল> ইতিহাস) লগ করে, প্রবণতা / var / লগ / অ্যাপিটিউডিতে স্বয়ংক্রিয়ভাবে ইনস্টল করা প্যাকেজগুলিতে / var / lib / অ্যাপটিটিউড / পিকেজিস্টেটে উভয় ইতিহাস লগ করে, যাতে আপনি সর্বশেষ ক্রিয়াকলাপের জন্য এটি পরীক্ষা করতে পারেন।


1

আমি /var/cache/aptচালাতে হবে কিনা তা নির্ধারণ করতে আমি ব্যবহার করি apt-get update। ডিফল্টরূপে, যদি বর্তমান সময়ের এবং ক্যাশের সময়ের পার্থক্য /var/cache/apt24 ঘন্টাের চেয়ে কম হয় তবে আমার চালনার দরকার নেই 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/libraries/util.bash


উত্তর অসম্পূর্ণ। কি infoএবং isEmptyString? এছাড়াও, infoক্রিয়াকলাপের নামটি বাঞ্ছনীয় যেহেতু এটিও একটি কমান্ড। তা ছাড়া আর চমৎকার সমাধান!
রনি অ্যান্ডারসন

@ রনিএন্ডারসন, সমস্ত এই লিবিতে
নাম

0

/var/log/dpkg.log কী হয়েছে তার একটি ইতিহাস রাখবে, তবে অগত্যা নয় যে অ্যাপ্লিকেশনটি dpkg নামে পরিচিত (synaptic, apt-get, ইত্যাদি)।


0

প্রথমে কোনও ফাইলের টাইমস্ট্যাম্প লেখার জন্য একটি স্ক্রিপ্টে অ্যাপট-গেট মোড়ুন এবং তারপরে স্বাভাবিক কাজ করে। এইভাবে, আপনি টাইমস্ট্যাম্প বিন্যাস এবং অবস্থান নির্ধারণ করতে পারেন;)


সুজয়, আপনার যদি শত শত সার্ভার থাকে তবে এটি কোনও স্ক্রিপ্টে মুড়িয়ে ফেলা ব্যবহারিক নয়, এবং আপনি অন্য কোনও স্ক্রিপ্ট বজায় রাখতে চান না যা পরবর্তী সময় আপনি নিজের অ্যাপ্লিকেশন প্যাকেজ আপডেট করার পরে সমস্যা সৃষ্টি করতে পারে। আমি মনে করি অনুরোধকারী এমন একটি উত্তর খুঁজছেন যা তার কম্পিউটারে ইতিমধ্যে বিদ্যমান তথ্যের ব্যবহার করে।
পিডওয়াকার

0

শেষ দিনটি চালিত না হলে আপডেট চালানোর জন্য এখানে একটি সাধারণ ওয়ান-লাইনার's

(find /var/lib/apt/periodic/update-success-stamp -mtime +1 | grep update-success-stamp) && (/usr/bin/apt-get update)

এটি আপডেট-সাফল্য-স্ট্যাম্প ফাইলটির সন্ধান করে যা একদিনেরও বেশি আগে সংশোধিত হয়েছে। যদি এটি সঠিক বয়সের ফাইলটি খুঁজে পায় তবে এটি আপডেটটি চালায়। দ্রষ্টব্য: এটি কাজ করার জন্য আপডেট-সাফল্য-স্ট্যাম্প ফাইলের উপস্থিতি থাকতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.