মুছে ফেলা হলেও একটি অ্যাপ্লিকেশনটিতে এখনও খোলা থাকা বড় ফাইলগুলি কীভাবে খুঁজে পাওয়া যায়? প্রক্রিয়াটি খোলা থাকলেও কীভাবে কেউ এই জাতীয় ফাইলটি সরিয়ে ফেলতে পারেন?
পরিস্থিতিটি হ'ল আমরা এমন একটি প্রক্রিয়া চালাচ্ছি যা ভয়ঙ্কর হারে লগ ফাইলটি পূরণ করে। আমি কারণটি জানি, এবং আমি এটি ঠিক করতে পারি। ততক্ষণে, আমি প্রক্রিয়াটি বন্ধ না করে লগ ফাইলটি আরএম বা খালি করতে চাই।
সহজভাবে করা rm output.log
ফাইলের কেবল রেফারেন্সগুলি সরিয়ে দেয়, তবে প্রক্রিয়াটি শেষ না হওয়া পর্যন্ত এটি ডিস্কে স্থান দখল করতে থাকবে। সবচেয়ে খারাপ: rm
আইএনপি করার পরে আমার কাছে এখন আর ফাইলটি কোথায় বা এটি কত বড় তা খুঁজে পাওয়ার কোনও উপায় নেই! এটি অন্য প্রক্রিয়াতে এখনও খোলা থাকা সত্ত্বেও, ফাইলটি খুঁজে পাওয়ার কোনও উপায় আছে এবং সম্ভবত এটি খালি করা আছে?
আমি বিশেষত ডিবিয়ান বা আরএইচইল এর মতো লিনাক্স-ভিত্তিক অপারেটিং সিস্টেমগুলি উল্লেখ করি।
rm
এখনও খোলা থাকা সমস্ত এডি ফাইলগুলির পিআইডি পেতে পারে ?
lsof | grep "(deleted)"
। মুছে ফেলা ফাইলটি উন্মুক্ত করার কোনও প্রক্রিয়া নেই, তখন কার্নেলটি ইনোড এবং ডিস্ক ব্লকগুলি মুক্ত করবে। প্রক্রিয়াগুলিতে "হ্যান্ডলারগুলি" থাকে না যার দ্বারা তাদের জানানো যেতে পারে যে একটি উন্মুক্ত, মূলত লক করা ফাইল, ডিস্ক থেকে সরানো হয়েছে।
lsof | grep '(deleted)'
লিনাক্সেও কাজ করে। লিনাক্সে, আপনাকে ইনোটাইফাই মেকানিজম (IN_DELETE_SELF ইভেন্ট)
somefile
এটি ভিআইএম এ তৈরি এবং খোলার পরে rm
অন্য একটি বাশ প্রক্রিয়াতে এটি সম্পাদনা করেছি। আমি তখন চালনা করি lsof | grep somefile
এবং এটি সেখানে নেই, যদিও ভিআইএম-তে ফাইল খোলা রয়েছে।
lsof -p <pid>
তার খোলার ফাইল এবং তাদের আকারগুলি তালিকাবদ্ধ করতে আপনি ব্যবহার করতে পারেন । মুছে ফেলা ফাইলটির(deleted)
পাশে থাকবে । মুছে ফেলা ফাইলটি/proc/<pid>/fd/1
সম্ভবত লিঙ্ক করা হবে । আমি জানি না কীভাবে কোনও প্রক্রিয়া এটির ফাইলটি বাদ দিয়ে তার ফাইল বিবরণীতে লেখা বন্ধ করে দেয়। আমি মনে করি যে প্রক্রিয়া উপর নির্ভর করবে।