সন্ধান করুন -সিলিট ঠিক আছে, তবে ক্রোন দিয়ে নয়


10

দয়া করে নোট করুন : আমি আবার একই ধরণের প্রশ্নগুলি পড়েছি। ক্রোন, পাথ, এনভ ভেরিয়েবল এবং আরও অনেক কিছু, তবে আমার বিশেষ সমস্যার সমাধান দেওয়ার প্রস্তাব পাওয়া যায় নি।


আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা কিছু মাইএসকিউএল ডাম্প তৈরি করে এবং তারপরে পুরানোগুলি মুছবে:

/usr/bin/find "/home/bkp/dbdump" -name "*.gz" -mtime +5 -delete

( উপরের কমান্ডটি মন্তব্যগুলির পরামর্শ অনুসারে আমার মূল কমান্ড থেকে পরিবর্তন করা হয়েছে )

যাইহোক, ক্রোন যখন এই স্ক্রিপ্টটি চালায় তখন ফাইলগুলি কখনই মুছে ফেলা হয় না। ক্রোন ব্যবহারকারী মূল is

ডিবাগিং নোট

  • যদি আমি নিজে স্ক্রিপ্টটি চালিত করি যেখানে কমান্ডটি উপস্থিত হয়, এটি প্রত্যাশার সাথে মুছে ফেলা হয়।

  • উপরের সন্ধানটি যদি আমি কমান্ড লাইন থেকে এটি রুট হিসাবে নিজে থেকে চালিত করি তবে এটি প্রত্যাশার সাথে মুছে ফেলা হয় (এবং -প্রিন্ট সহ এটি প্রত্যাশার চেয়ে 5 দিনের বেশি পুরানো ফাইলগুলির একটি তালিকা ফেরত দেয়)

  • আমি রুটের ক্রোনট্যাবে একটি স্পষ্ট পথ বিবৃতি যুক্ত করেছি, তবে
    এটি কোনও পরিবর্তন করে না।

  • ক্রোন কোনও ত্রুটি প্রেরণ করে না এবং আমি যদি লগ ফাইলে অনুসন্ধানের অপারেশনটি পাইপ করি তবে তা
    খালি আসে বা একেবারেই তৈরি হয় না।

  • আমি উবুন্টু সার্ভারটি 14.04.03 এলটিএস ব্যবহার করছি।


আমি পথে ওয়াইল্ডকার্ড সম্প্রসারণ (উদাঃ * .gz) এড়াতে চাই। ক্রোন সমস্ত জিজেড ফাইল প্রসারিত না করে * .gz হিসাবে ব্যাখ্যা করতে পারে।
আরচেমার

আপনি যদি কোনও অ্যাকশন ছাড়াই /usr/bin/find /home/bkp/dbdump/*.gz -mtime +5
চাকরীটি

@ আরচেমার @ কেন ওয়াইল্ডকার্ড প্রসারিত হবে না? cronকমান্ডগুলি শেল দ্বারা চালিত হয়, এবং শেলটি ওয়াইল্ডকার্ডগুলি প্রসারিত করে।
বারমার

cronআউটপুট এবং ত্রুটি বার্তা সহ ইমেল প্রেরণ করা উচিত। আপনি কি এই কাজ থেকে এই জাতীয় কোনও ইমেল পান?
বারমার

@ আয়না এটি প্রত্যাশার মতো কাজ করে।
টমিপিনুটস

উত্তর:


6

সমস্যাটি যখন এটি চালায় তখন সেট crontabহয় না $PATH। এটির মাধ্যমে খোলা ফাইলটির শীর্ষে এটি যুক্ত করে আপনি এটিকে আসলে একটি পথ সরবরাহ করতে পারেন crontab -e:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

(বা PATHআপনি যেটি পছন্দ করতে চান) এর অর্থ আপনি ক্রোন থেকে সরাসরি কমান্ডের পুরো পথ নির্দিষ্ট করে এড়াতে পারবেন।

আপনার মূল কমান্ডের সাথে একাধিক সমস্যা রয়েছে। আপনি মূলত শেলটিকে ওয়াইল্ডকার্ড সম্প্রসারণ করতে বলছেন, না find। দ্বিতীয়ত, আপনি এর জন্য পুরো পথ সরবরাহ করছেন না rm; ব্যবহার করুন /bin/rmবা /usr/bin/rm, এটি আপনার সিস্টেমে যেখানেই রয়েছে (দেখুন which rm)।

সন্ধানের জন্য প্রথম যুক্তিটি হ'ল "অনুসন্ধানের জন্য অবস্থান" এবং তারপরে আপনি বিভিন্ন -<option>এস দ্বারা "অনুসন্ধান ক্যোয়ারী" নির্দিষ্ট করেন । সুতরাং, আপনি যে কমান্ডটি চালাতে চান তার যথাযথ বিন্যাসটি হ'ল:

find "/home/bkp/dbdump" -name "*.gz" -mtime +5 -exec rm -f {} \;

অথবা

find "/home/bkp/dbdump" -name "*.gz" -mtime +5 delete

যদি আপনি PATHউপরের মতো সংজ্ঞাটি নির্দিষ্ট না করেন তবে ব্যবহার করুন:

/usr/bin/find "/home/bkp/dbdump" -name "*.gz" -mtime +5 -exec /bin/rm -f {} \;

অথবা

/usr/bin/find "/home/bkp/dbdump" -name "*.gz" -mtime +5 delete

1
এটি $PATHসেট করা উচিত ছিল , তবে এটি সিস্টেমের ডিফল্ট হবে। এটি অন্তর্ভুক্ত করবে /usr/binএবং /binতাই এটি rmআদেশটি সন্ধান করতে সক্ষম হবে ।
বার্মার

সুতরাং আমি ক্রোনট্যাবে $ PATH লাগানোর চেষ্টা করেছি (যদিও অন্যত্র উল্লিখিত হিসাবে এটি সম্ভবত সিস্টেমের পথে ডিফল্ট হবে যদি না বলা থাকে), এবং নিশ্চিত করেছি যে সমস্ত কিছুর পুরো পথ রয়েছে। আমি অনুসন্ধানের পথে কোনও ওয়াইল্ডকার্ডের পরিবর্তে "* .gz" -র নামও ব্যবহার করেছি। তবে কিছুই হয় না। কমান্ডটি কেবল চলমান বলে মনে হচ্ছে না এবং কোনও ত্রুটি ছুঁড়েছে।
টমিপিনুটস

3

পরিবর্তে এটি চেষ্টা করুন

find /home/bkp/dbdump -type f -name '*.gz' -mtime +5 -delete

আপনি স্টাডারকে একটি ফাইলে পুনর্নির্দেশ করবেন কেন? ডিফল্টরূপে কোনও আউটপুট থাকলে এটি ইমেলের মাধ্যমে প্রেরণ করা হবে।
ক্যাস্পারড

হ্যাঁ এটি সত্য যে ডিফল্টরূপে ব্যবহারকারীর স্পুলার মেলটিতে কোনও ইমেল প্রেরণ করা হয় এবং মেল ব্যবহার করে পড়া যায়।
শেড 0 ভিভি

1
আসল কমান্ডের মতো একই প্রভাব পেতে আপনাকে যুক্ত করতে হবে -maxdepth 1
নিলস কেওরেন্টজেস

0

আমি যদি স্ক্রিপ্টের অংশ হিসাবে না হয়ে মূলের ক্রন্টব থেকে সরাসরি ফাইন্ড কমান্ডটি প্রার্থনা করি তবে এটি কার্যকর হয়।

প্রশ্নে লিখিত স্ক্রিপ্ট csh ব্যবহার করে। আমি বিশ্বাস করি যে উবুন্টুতে মূলের ক্রোন পরিবেশটি / বিন / বাশ (বা / বিন / ড্যাশ?) ব্যবহার করবে। সম্ভবত এই ফাইন্ড কমান্ডটি কীভাবে চলছিল তা নিয়ে কোনওভাবেই এই দ্বন্দ্ব।

যেভাবেই হোক, মূল সমস্যাটি সমাধান হয়েছে, কিছুটা অযোগ্যভাবে হলেও।

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