3 দিনের বেশি পুরানো ফাইলগুলি মুছতে ক্রোন জব


21

আমার 3 দিনের বেশি পুরানো ফাইলগুলি 3 টি ভিন্ন ডিরেক্টরিতে ক্রোন জব দিয়ে মুছে ফেলতে হবে। (এই 3 ডিরেক্টরি একটি পিতা বা মাতা ডিরেক্টরি সন্তান /a/b/c/1& /a/b/c/2& /a/b/c/3এই নিম্নলিখিতরূপে crontab পরিবর্তন মধ্যে এক লাইন দিয়ে করা যাবে)?

উত্তর:


26

এটি যথেষ্ট সহজ (যদিও নোট করুন যে এটি তৈরির সময় কেবল বিশেষ সরঞ্জামগুলির সাথে নির্দিষ্ট কিছু ফাইল সিস্টেমে উপলভ্য হওয়ার কারণে 3 দিনেরও বেশি সময় আগে পরিবর্তনের সময় দিয়ে যায়):

find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete

সরান #আগে -deleteএকবার আপনি কি নিশ্চিত যে এটা আপনি যে ফাইলগুলি সরানোর বিষয়ে খোঁজার হয়।

এটি ক্রোন দ্বারা চালিত করার জন্য, আমি সম্ভবত কেবলমাত্র একটি এক্সিকিউটেবল স্ক্রিপ্ট তৈরি করব ( #!bin/shফাইলের শীর্ষ লাইনে একটি শেবাং যুক্ত করুন এবং এর সাথে এক্সিকিউটেবল তৈরি করুন chmod a+x), তারপরে বা এটির cronমতো উপযুক্ত ডিরেক্টরিতে রেখে দিন । অবশ্যই আপনাকে আরও নির্দিষ্ট সময়সূচির প্রয়োজন হবে না এবং এই ডিরেক্টরিগুলি আপনার ডিস্ট্রোতে বিদ্যমান রয়েছে তা অবশ্যই সরবরাহিত।/etc/cron.daily/etc/cron.weekly

হালনাগাদ

নীচে উল্লিখিত হিসাবে, -deleteবিকল্প findখুব পোর্টেবল নয়। একটি পসিক্স সুসংগত পদ্ধতির হ'ল:

find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +

আবার #নিশ্চিত করুন যে আপনার কাছে সঠিক ফাইল রয়েছে।

Update2

স্টাফেন চেজেলাস নীচে মন্তব্য থেকে উদ্ধৃত :

দ্রষ্টব্য যে -exec rm {} +জাতির শর্ত দুর্বলতা রয়েছে -delete(যেখানে উপলব্ধ) না। সুতরাং অন্যদের দ্বারা লিখিতযোগ্য ডিরেক্টরিগুলিতে এটি ব্যবহার করবেন না। কিছু সন্ধানের মধ্যে এমনও রয়েছে -execdirযা এই দুর্বলতার তুলনায় প্রশমন করে।


ধন্যবাদ! প্যারেন্ট ডিরেক্টরি এবং তারপরে চাইল্ড ডিরেক্টরিগুলি নির্দিষ্ট করার কোনও উপায় রয়েছে যাতে /a/b/c/প্রতিটি বিকল্পের জন্য নির্দিষ্ট করা না হয়?
কিংকংফ্রোগ

অবশ্যই, কোনও পসিক্স শেল আপনি করতে /a/b/c/[12]পারেন তবে সাবডিরেক্টরিজের একক অক্ষরের নাম থাকলে এটি কেবল সত্যই উপযুক্ত। ইন bashআপনি কি করতে পারেন /a/b/c/{1,2}। অবশ্যই কোনও স্ক্রিপ্টের জন্য ব্যাং লাইনটি হতে হবে #!/bin/bashবা আপনি ক্রন্টব ব্যবহার করছেন, আপনাকে অবশ্যই এটি ব্যবহারের জন্য কনফিগার করা হয়েছে তা নিশ্চিত করতে হবে bash(এটি আসলে না হলে আমি এটি পরিবর্তন করার প্রস্তাব দিই না)।
গ্রিম

2
ব্রেস সম্প্রসারণ একটি csh বৈশিষ্ট্য এবং এটি ksh, বাশ, zsh এবং মাছ দ্বারা সমর্থিত হয় যাতে আপনার শেলগুলির বিস্তৃত পছন্দ থাকে। ksh, bashএবং zshতাদের গ্লোবগুলিতে বিকল্প অপারেটরও রয়েছে। দ্রষ্টব্য যে -exec rm {} +রেসের শর্ত দুর্বলতাগুলি রয়েছে -delete(যেখানে উপলব্ধ) নেই। সুতরাং অন্যদের দ্বারা লিখিতযোগ্য ডিরেক্টরিগুলিতে এটি ব্যবহার করবেন না। কিছু সন্ধানের মধ্যে এমনও রয়েছে -execdirযা সেই দুর্বলতার বিরুদ্ধে হ্রাস করে।
স্টাফেন চেজেলাস

না rm -fচুপটি ত্রুটি হ্যান্ডেল করতে, যার ফলে যে কোনো সম্ভাব্য race অবস্থা হ্যান্ডলিং -exec?
একিউম্যানাস


9

আপনি ব্যবহার করা থেকে অনেক ভাল হবে tmpwatch

tmpwatch recursively removes files which haven't been accessed for a given time. Normally, it's used to clean up directories which are used for temporary holding space such as /tmp.

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