আমার বেশ কয়েকটি এলভিএম পার্টিশন রয়েছে, যার প্রত্যেকটিতে একটি উবুন্টু ইনস্টলেশন রয়েছে। মাঝেমধ্যে, আমি apt-get dist-upgrade
সাম্প্রতিকতম প্যাকেজগুলিতে একটি ইনস্টলেশন আপডেট করতে একটি করতে চাই । আমি ক্রোট দিয়ে এটি করি - প্রক্রিয়াটি সাধারণত এমন কিছু হয়:
$ sudo mount /dev/local/chroot-0 /mnt/chroot-0
$ sudo chroot /mnt/chroot-0 sh -c 'apt-get update && apt-get dist-upgrade'
$ sudo umount /mnt/chroot-0
[দেখানো হয়নি: আমিও মাউন্ট এবং আনমাউন্ট /mnt/chroot-0/{dev,sys,proc}
বাস্তব প্রদানকারীর সাথে যুক্ত হন-মাউন্ট হিসাবে /dev
, /sys
এবং/proc
, যেমন Dist-আপগ্রেড এই উপস্থিত হতে আশা বলে মনে হয়]
তবে, সুনির্দিষ্টভাবে আপগ্রেড করার পরে, এই প্রক্রিয়াটি আর কাজ করে না - চূড়ান্ত সর্বশেষ ব্যর্থ হবে কারণ ফাইল /mnt/chroot-0
সিস্টেমে এখনও খোলা ফাইল রয়েছে । lsof
ক্রুটটিতে খোলা ফাইলগুলি সহ প্রক্রিয়া রয়েছে তা নিশ্চিত করে। এই প্রক্রিয়াগুলি ডিস্ট-আপগ্রেড করার সময় শুরু হয়েছিল, আমি ধরে নিচ্ছি এটি কারণ কারণ ক্রুটে নির্দিষ্ট পরিষেবাগুলি পুনরায় চালু করা দরকার (উদাহরণস্বরূপ, এর মাধ্যমেservice postgresql restart
প্যাকেজটি আপগ্রেড করার পরে )।
সুতরাং, আমি অনুমান করি যে এই ক্রুটের অভ্যন্তরে চলমান সমস্ত পরিষেবা বন্ধ করার জন্য আমাকে আপস্টার্টটি বলা দরকার। নির্ভরযোগ্যভাবে এটি করার কোনও উপায় আছে?
আমি চেষ্টা করেছিলাম:
cat <<EOF | sudo chroot /mnt/chroot-0 /bin/sh
# stop 'initctl' services
initctl list | awk '/start\/running/ {print \$1}' | xargs -n1 -r initctl stop
EOF
যেখানে initctl list
সঠিক কাজটি করা হচ্ছে বলে মনে হচ্ছে এবং কেবলমাত্র এই প্রক্রিয়াটিতে এই প্রক্রিয়া শুরু হয়েছে list টুমিনয়েডের পরামর্শ অনুসারে আমি এটিও যুক্ত করার চেষ্টা করেছি:
cat <<EOF | sudo chroot /mnt/chroot-0 /bin/sh
# stop 'service' services
service --status-all 2>/dev/null |
awk '/^ \[ \+ \]/ { print \$4}' |
while read s; do service \$s stop; done
EOF
যাইহোক, এগুলি সমস্ত কিছু ধরা দেয় না বলে মনে হয়; যে প্রক্রিয়াগুলি ডিমনাইজড এবং পিআইডি 1 তে পুনরায় প্রতিস্থাপন করা হয়েছে সেগুলি বন্ধ হয় না। আমি চেষ্টা করেছি:
sudo chroot /mnt/chroot-0 telinit 0
কিন্তু এই ক্ষেত্রে, init না পৃথক মূলের মধ্যে পার্থক্য এবং পুরো মেশিনটি বন্ধ করে দেয়।
সুতরাং, কোনও বিশেষ ক্রুটে সমস্ত প্রক্রিয়া বন্ধ করার জন্য আরআইআরকে বলার কোনও উপায় নেই, যাতে আমি নিরাপদে ফাইল সিস্টেমটি আনমাউন্ট করতে পারি? ক্রোমের মধ্যে বাচ্চাদের সমস্ত প্রক্রিয়া (নিয়মিত শাটডাউন করার সময় যেমন করা হত) সাইনটার / সিগিল করার কোনও উপযোগ আছে কি?