আমার 3 দিনের বেশি পুরানো ফাইলগুলি 3 টি ভিন্ন ডিরেক্টরিতে ক্রোন জব দিয়ে মুছে ফেলতে হবে। (এই 3 ডিরেক্টরি একটি পিতা বা মাতা ডিরেক্টরি সন্তান /a/b/c/1
& /a/b/c/2
& /a/b/c/3
এই নিম্নলিখিতরূপে crontab পরিবর্তন মধ্যে এক লাইন দিয়ে করা যাবে)?
আমার 3 দিনের বেশি পুরানো ফাইলগুলি 3 টি ভিন্ন ডিরেক্টরিতে ক্রোন জব দিয়ে মুছে ফেলতে হবে। (এই 3 ডিরেক্টরি একটি পিতা বা মাতা ডিরেক্টরি সন্তান /a/b/c/1
& /a/b/c/2
& /a/b/c/3
এই নিম্নলিখিতরূপে crontab পরিবর্তন মধ্যে এক লাইন দিয়ে করা যাবে)?
উত্তর:
এটি যথেষ্ট সহজ (যদিও নোট করুন যে এটি তৈরির সময় কেবল বিশেষ সরঞ্জামগুলির সাথে নির্দিষ্ট কিছু ফাইল সিস্টেমে উপলভ্য হওয়ার কারণে 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 {} +
আবার #
নিশ্চিত করুন যে আপনার কাছে সঠিক ফাইল রয়েছে।
স্টাফেন চেজেলাস নীচে মন্তব্য থেকে উদ্ধৃত :
দ্রষ্টব্য যে
-exec rm {} +
জাতির শর্ত দুর্বলতা রয়েছে-delete
(যেখানে উপলব্ধ) না। সুতরাং অন্যদের দ্বারা লিখিতযোগ্য ডিরেক্টরিগুলিতে এটি ব্যবহার করবেন না। কিছু সন্ধানের মধ্যে এমনও রয়েছে-execdir
যা এই দুর্বলতার তুলনায় প্রশমন করে।
/a/b/c/[12]
পারেন তবে সাবডিরেক্টরিজের একক অক্ষরের নাম থাকলে এটি কেবল সত্যই উপযুক্ত। ইন bash
আপনি কি করতে পারেন /a/b/c/{1,2}
। অবশ্যই কোনও স্ক্রিপ্টের জন্য ব্যাং লাইনটি হতে হবে #!/bin/bash
বা আপনি ক্রন্টব ব্যবহার করছেন, আপনাকে অবশ্যই এটি ব্যবহারের জন্য কনফিগার করা হয়েছে তা নিশ্চিত করতে হবে bash
(এটি আসলে না হলে আমি এটি পরিবর্তন করার প্রস্তাব দিই না)।
ksh
, bash
এবং zsh
তাদের গ্লোবগুলিতে বিকল্প অপারেটরও রয়েছে। দ্রষ্টব্য যে -exec rm {} +
রেসের শর্ত দুর্বলতাগুলি রয়েছে -delete
(যেখানে উপলব্ধ) নেই। সুতরাং অন্যদের দ্বারা লিখিতযোগ্য ডিরেক্টরিগুলিতে এটি ব্যবহার করবেন না। কিছু সন্ধানের মধ্যে এমনও রয়েছে -execdir
যা সেই দুর্বলতার বিরুদ্ধে হ্রাস করে।
rm -f
চুপটি ত্রুটি হ্যান্ডেল করতে, যার ফলে যে কোনো সম্ভাব্য race অবস্থা হ্যান্ডলিং -exec
?
আপনি ব্যবহার করা থেকে অনেক ভাল হবে 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.
tmpwatch
এর সাথে কাঁটাচামচ করা হয়েছে tmpreaper
, যা (কমপক্ষে দেবিয়ানে) মনে হয় এটির প্রতিস্থাপন রয়েছে।
/a/b/c/
প্রতিটি বিকল্পের জন্য নির্দিষ্ট করা না হয়?