আপনি এর মতো কিছু চেষ্টা করতে চাইতে পারেন:
find /tmp -mtime +7 -and -not -exec fuser -s {} ';' -and -exec echo {} ';'
অনুসন্ধান নির্দিষ্ট মানদণ্ডের সাথে মেলে এমন ফাইলগুলি খুঁজতে ব্যবহৃত হয়।
-mtime +7 কেবল days দিনের চেয়ে পুরানো ফাইলগুলি নির্বাচন করুন (আপনি অন্য কোনও মান ব্যবহার করতে পারেন)
-exec fuser -s {} ';'পুরানো মানদণ্ডের সাথে মেলে এমন প্রতিটি ফাইলের জন্য নিরব মোডে ফুসারকে কল করে। এখনই অ্যাক্সেস করা প্রতিটি ফাইলের জন্য ফুজার 0 (= সত্য) এবং অ্যাক্সেস করা ফাইলগুলির জন্য 1 (= মিথ্যা) ফেরত দেয়। যেহেতু আমরা কেবল অ-অ্যাক্সেসযুক্তগুলিতে আগ্রহী, আমরা এটির -notসামনে রেখেছি-exec
-exec echo {} ';'মানদণ্ডের সাথে মেলে সমস্ত ফাইলের নাম মুদ্রণ করে। -exec rm {} ';'পরিবর্তে আপনি এখানে ব্যবহার করতে পারেন , তবে এটি কিছু ব্যবহার-করা ফাইল মুছে ফেলতে পারে বলে আমি মনে করি এটি প্রথমে একটি সহজ প্রতিধ্বনি করা নিরাপদ do
- সম্পাদনা: আপনি ভালো কিছু জুড়তে চাইতে পারেন
-name 'foo*.bar'বা -uid 123আপতিক প্রভাব এড়াতে নির্দিষ্ট ফাইল নিদর্শন অথবা ব্যবহারকারীর ID- র জন্য পরিষ্করণ প্রভাব সীমিত করতে।
শেষ মুহুর্তে: বিবেচনা করুন যে এখানে এমন ফাইল থাকতে পারে যা কেবল একবার লেখা হয় (উদাহরণস্বরূপ সিস্টেম বুটে) তবে প্রায়শই পড়ুন (যেমন কোনও এক্স-সেশন-কুকি)। অতএব আমি কেবলমাত্র আপনার ত্রুটিযুক্ত প্রোগ্রামগুলির দ্বারা তৈরি ফাইলগুলিকে প্রভাবিত করতে কিছু নাম চেক যুক্ত করার পরামর্শ দিচ্ছি।
সম্পাদনা 2:
আপনার শেষ প্রশ্নের জন্য: কোনও প্রক্রিয়াটিতে খোলা হ্যান্ডেল না হওয়া পর্যন্ত কোনও ফাইল ডিস্ক থেকে মুছে ফেলা হবে না (অন্তত নেটিভ লিনাক্স ফাইল সিস্টেমের জন্য)। সমস্যাটি হ'ল ডিরেক্টরি এন্ট্রি তত্ক্ষণাত অপসারণ করা হয় যার অর্থ আপনি ফাইলটি সরিয়ে দেওয়ার সময় থেকে কোনও নতুন প্রক্রিয়া ফাইল আর খুলতে পারে না (কারণ এতে কোনও ফাইলের নাম সংযুক্ত নেই)।
বিশদগুলির জন্য দেখুন:
/programming/
edit3: তবে আমি যদি পুরো প্রক্রিয়াটি স্বয়ংক্রিয় করতে চাই?
আমি যেমন বলেছি, এমন ফাইল থাকতে পারে যা একবার লেখা থাকে এবং তারপরে একবারে একবারে পড়ুন (যেমন এক্স সেশন কুকিজ, পিআইডি ফাইল ইত্যাদি)। এগুলি এই সামান্য অপসারণ স্ক্রিপ্ট দ্বারা বাদ দেওয়া হবে না (এটি কারণ যা আপনি সম্ভবত echoফাইলগুলি মুছে ফেলার আগে প্রথম পরীক্ষা চালাতে চান )।
নিরাপদ সমাধান কার্যকর করার একটি উপায় ব্যবহার করা atime।
atimeপ্রতিটি ফাইল শেষবার অ্যাক্সেসের সময় সঞ্চয় করে। তবে সেই ফাইল সিস্টেম বিকল্পটি প্রায়শই অক্ষম করা হয় কারণ এর বেশ কিছু কার্যকারিতা প্রভাব রয়েছে ( 20-30% অঞ্চলে এই ব্লগ অনুসারে )) রয়েছে relatime, তবে mtimeএটি পরিবর্তিত হয়ে থাকলে কেবল অ্যাক্সেসের সময়টি লেখেন , সুতরাং এটি আমাদের সহায়তা করবে না।
আপনি যদি ব্যবহার করতে চান তবে atimeআমি /tmpএকটি পৃথক পার্টিশন (আদর্শভাবে একটি র্যামডিস্ক) রাখার পরামর্শ দেব যাতে পুরো সিস্টেমে পারফরম্যান্স প্রভাব খুব বেশি না হয়।
একবার atimeসক্ষম হয়ে গেলে , আপনাকে যা করতে হবে তা হ'ল -mtimeউপরের কমান্ড লাইনের সাথে প্যারামিটারটি প্রতিস্থাপন করতে হবে -atime।
আপনি সম্ভবত এটিকে সরাতে সক্ষম হবেন -not -exec fuser -s {} ';'তবে এটি নিশ্চিত হওয়ার জন্য আমি এটি সেখানে রেখেছি (যদি অ্যাপ্লিকেশনগুলি ফাইলগুলি দীর্ঘ সময়ের জন্য উন্মুক্ত রাখে)।
তবে echoআপনার সিস্টেমটি এখনও প্রয়োজনীয় জিনিসগুলি অপসারণের আগে কমান্ডটি পরীক্ষা করে মনে রাখবেন !