উত্তর:
কমপক্ষে উবুন্টু সিস্টেমে একটি ফাইল /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
সর্বশেষ "অ্যাপট-গেট আপডেট" অনুরোধের সময় পাওয়ার জন্য কমান্ড।
এবং যদি আপনার সিস্টেমে সেই অ্যাপটি কনফিগারেশন ফাইলটি না থাকে তবে আপনি সর্বদা এটি যুক্ত করতে পারেন।
আপনি / var / lib / apt / list ফাইলগুলিতে অ্যাক্সেসের সময়গুলি পরীক্ষা করতে পারেন যা আপনি অ্যাপটি-গেট আপডেট চালানোর সময় আপডেট হয়। অ্যাপো-গেট আপডেটটি 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 ডিরেক্টরিতে ফাইলের লিখিত বিষয়বস্তু তালিকাভুক্ত করতে, যা ডিরেক্টরিটি এপ-গেটের জন্য অ্যাক্সেসের ইতিহাস লগগুলি সঞ্চয় করে। "-ল্ট" অংশটি আসলে দুটি সুইচ। প্রথম "l" স্যুইচ "ls" কে প্রতি লাইনে একটি ফাইল বিশদের সাথে তালিকাবদ্ধ করতে বলে। দ্বিতীয় "টি" স্যুইচ "ls" কে তারিখ এবং সময় অনুসারে বাছাই করতে বলে। "- টাইম-স্টাইল" তারিখের সময়টিকে "YYYY-MM-DD HH: MM" ফর্ম্যাটে প্রদর্শিত করতে বাধ্য করে।
কমান্ডের "গ্রেপ" অংশে, "-o" সুইচটি গ্রেপকে কেবল প্রতিটি রেখার অংশগুলি দেখাতে বলে যা নিয়মিত অভিব্যক্তির সাথে ঠিক মিলে যায়। আমি এখানে যে নিয়মিত এক্সপ্রেশন ব্যবহার করেছি তা "ls" কমান্ডে নির্দিষ্ট ফর্ম্যাটে থাকা তারিখের সময়গুলি সনাক্ত করে। "গ্রেপ" কমান্ডের একেবারে শেষ প্রান্তে আপনি যাদুটির সত্যিকারের ছোট্ট টুকরোটিও লক্ষ্য করে দেখতে পাবেন যে "1" নম্বর অবিলম্বে অনুসরণ করে "-m" সুইচ রয়েছে switch এটি "গ্রেপ" কে ম্যাচ সন্ধান করা বন্ধ করার জন্য জানিয়েছে এটি প্রথমটি খুঁজে পাওয়ার পরে।
সুতরাং, সংক্ষেপে, আমরা এপটি লগ ফাইলের বিশদটি তালিকাবদ্ধ করছি যাতে আমরা শেষের পরিবর্তিত তারিখটি দেখতে পারি, তারপরে আমরা তারিখ অনুসারে বাছাই করে গ্রিপকে বলি যে প্রথম তারিখটিকে শীর্ষে টানতে, এটি তারপরে ফিরে আসে। এটিই শেষ তারিখ যা প্রস্তুত হয়েছিল।
তবে এক মুহুর্তের জন্য শয়তানের উকিলটি খেলতে উবুন্টুর মতো দেবিয়ান প্ল্যাটফর্মগুলির পক্ষে নিয়মিতভাবে চলে এমন একটি চাকরির জন্য উপযুক্ত schedule আপনি যদি এপট-গি এক্সিকিউশনটির অপর প্রান্তে ব্যক্তির সন্ধান করছেন, আপনি আসলে একটি মেশিন খুঁজে পেতে পারেন। আপনি যে কোনও সময় স্ট্যাম্পের সাথে মিলে যায় কিনা তা দেখতে আপনি সর্বদা এপটি লগের সাথে অ্যাক্সেস লগগুলি মেলে ধরতে পারেন। কিছুটা হলেও ব্যবহারকারীর কমান্ডের ইতিহাসের দিকে নজর দেওয়াও সম্ভব।
আশাকরি এটা সাহায্য করবে!
/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
সিনাপটিক একটি ইতিহাসের ফাইল (> ফাইল> ইতিহাস) লগ করে, প্রবণতা / var / লগ / অ্যাপিটিউডিতে স্বয়ংক্রিয়ভাবে ইনস্টল করা প্যাকেজগুলিতে / var / lib / অ্যাপটিটিউড / পিকেজিস্টেটে উভয় ইতিহাস লগ করে, যাতে আপনি সর্বশেষ ক্রিয়াকলাপের জন্য এটি পরীক্ষা করতে পারেন।
আমি /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/libraries/util.bash
info
এবং isEmptyString
? এছাড়াও, info
ক্রিয়াকলাপের নামটি বাঞ্ছনীয় যেহেতু এটিও একটি কমান্ড। তা ছাড়া আর চমৎকার সমাধান!
প্রথমে কোনও ফাইলের টাইমস্ট্যাম্প লেখার জন্য একটি স্ক্রিপ্টে অ্যাপট-গেট মোড়ুন এবং তারপরে স্বাভাবিক কাজ করে। এইভাবে, আপনি টাইমস্ট্যাম্প বিন্যাস এবং অবস্থান নির্ধারণ করতে পারেন;)
শেষ দিনটি চালিত না হলে আপডেট চালানোর জন্য এখানে একটি সাধারণ ওয়ান-লাইনার's
(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