যদি আমি cron
চাকরিগুলি ভুলভাবে সেটআপ করি তবে তারা নিঃশব্দে ব্যর্থ হয়। কী ভুল হয়েছে তা বুঝতে আমি কোথায় ত্রুটিযুক্ত লগের সন্ধান করব?
যদি আমি cron
চাকরিগুলি ভুলভাবে সেটআপ করি তবে তারা নিঃশব্দে ব্যর্থ হয়। কী ভুল হয়েছে তা বুঝতে আমি কোথায় ত্রুটিযুক্ত লগের সন্ধান করব?
উত্তর:
অন্যরা যেমন উল্লেখ করেছে, cron
এটি চালিত কোনও প্রোগ্রামের আউটপুট আপনাকে ইমেল করবে (যদি কোনও আউটপুট থাকে)। সুতরাং, যদি আপনি কোনও আউটপুট না পান তবে মূলত তিনটি সম্ভাবনা রয়েছে:
crond
এমনকি প্রোগ্রামটি চালানোর জন্য বা ইমেল প্রেরণের জন্য একটি শেলও শুরু করতে পারেনিcrond
আউটপুট মেইল করতে সমস্যা হয়েছে, বা মেলটি হারিয়ে গেছে।কেস ১. খুব সম্ভব না, তবে ক্রোন লগগুলিতে কিছু লেখা উচিত ছিল। ক্রনের নিজস্ব সংরক্ষিত সিসলগ সুবিধা রয়েছে, তাই /etc/syslog.conf
সুবিধার বার্তা কোথায় প্রেরণ করা হয়েছে তা দেখতে আপনার (বা আপনার ডিস্ট্রোতে সমমানের ফাইল) একদল নজর দেওয়া উচিত cron
। জনপ্রিয় গন্তব্যগুলির মধ্যে রয়েছে /var/log/cron
, /var/log/messages
এবং /var/log/syslog
।
ক্ষেত্রে ২. আপনার মেইল ডেমন লগগুলি পরীক্ষা করা উচিত: ক্রোন ডেমনের বার্তাগুলি সাধারণত দেখা যায় root@yourhost
। MAILTO=...
কোনও নির্দিষ্ট ঠিকানায় ক্রোন প্রেরণ ইমেল রাখতে আপনি ক্রন্টব ফাইলের একটি লাইন ব্যবহার করতে পারেন , এটি মাইলার ডেমন লগগুলি গ্রেপ করা সহজ করে তোলে। এই ক্ষেত্রে:
MAILTO=my.offsite.email@example.org
00 15 * * * echo "Just testing if crond sends email"
ক্ষেত্রে ৩., আপনি পরীক্ষা করতে পারেন প্রোগ্রামটি আসলে অন্য কোনও কমান্ড যুক্ত করে চালানো হয়েছিল যার ফলস্বরূপ আপনি সহজেই পরীক্ষা করতে পারবেন: উদাহরণস্বরূপ,
00 15 * * * /a/command; touch /tmp/a_command_has_run
সুতরাং আপনি crond
মাইমটাইমটি দেখে সত্যিই কিছু চালিয়েছেন কিনা তা পরীক্ষা করতে পারেন /tmp/a_command_has_run
।
dead.letter
রুট বা সংশ্লিষ্ট ব্যবহারকারী হোম ডিরেক্টরিতে ডেকে থাকা কোনও ফাইলে অপরিবর্তিত মেলগুলিও পেতে পারেন ।
আপনি সর্বদা স্পষ্টভাবে একটি লগ ফাইলে কাজের আউটপুট প্রেরণ করতে পারেন:
0 8 * * * /usr/local/bin/myjob > /var/log/myjob.log 2>&1
মনে রাখবেন যে এটি পূর্বে উল্লিখিত মেল আচরণকে ছাড়িয়ে যাবে, কারণ ক্রন্ড স্বয়ংক্রিয়ভাবে কাজ থেকে কোনও আউটপুট গ্রহণ করবে না। যদি আপনি সেই আচরণটি রাখতে চান তবে আপনার উচিত টি (1) into
>>
পরিবর্তে কেন ব্যবহার >
করবেন না, তাই আপনি প্রতিবার লগ ফাইলটি ওভাররাইট করবেন না?
| /usr/bin/logger
স্টেফান যেহেতু চালাকভাবে পরামর্শ দিয়েছিল তেমন কোনও ধরণের আই / ও পুনঃনির্দেশ আপনি করতে চাইবেন will আপনার বিষটি চয়ন করুন: tldp.org/LDP/abs/html/io-redirection.html
myjob.log
প্রত্যাশা মতো 0 আকার দিয়ে এই লগ ফাইলটি তৈরি করেছে , তবে এটি অন্য একটি ফাইলে লগ হয়েছে, আমি এই সেটিংটি কোথায় পরিবর্তন করতে পারি?
যদি আপনি মেলগুলি না দেখছেন তবে আপনি সম্ভবত ত্রুটিগুলি দিয়ে আপনার স্প্যামিং রুট @ আপনার কম্পানি যা নিরীক্ষণের জন্য সেই অ্যাকাউন্টটি ব্যবহার করেন এমন লোকদের জন্য বেশ বিরক্তিকর হতে পারে। পরিবর্তে সিস্লগকে আউটপুট পাঠানোর চেষ্টা করুন:
*/5 * * * * yourcronjob 2>&1 | /usr/bin/logger -t yourtag
তারপরে ক্রোনজব চালানোর জন্য অপেক্ষা করুন এবং / var / লগ / বার্তাগুলিতে ত্রুটিটি অনুসন্ধান করুন (বা কয়েকটি সিস্টেমে /var/log/user.log)।
এটি শুধুমাত্র 1-2 লাইনের দীর্ঘ ত্রুটিযুক্ত বার্তাগুলির জন্য দুর্দান্ত কাজ করে যেমন "আপনার ক্রোনজবজ: কমান্ড পাওয়া যায় নি"। এটি আপনার বিদ্যমান সিসলগ অবকাঠামো (লোগ্রোটেশন, কেন্দ্রীয় সিসলগিং, স্প্লঙ্ক ইত্যাদি) ব্যবহার করে এটি ইমেল স্প্যামকে মূল থেকে কমিয়ে দেয়।
যদি আপনার ক্রোনজব কয়েকশ লাইন আউটপুট উত্পন্ন করে তবে এটি কোনও ভাল সমাধান হতে পারে না।
ডিফল্ট ক্রোন কনফিগারেশন আপনাকে আপনার প্রোগ্রামের আউটপুট সহ একটি মেল প্রেরণ করবে। যদি এটি ব্যর্থ হয় তবে আপনি আপনার ব্যর্থ হওয়া প্রোগ্রামটি শেল স্ক্রিপ্টে মোড়ানোর চেষ্টা করতে পারেন যা নিশ্চিত করে যে প্রোগ্রামটি ব্যর্থ হবে না, এবং আপনি আরও আউটপুট লগ করতে পারেন।
এটি কিছু ক্রোন বাস্তবায়নে কনফিগারযোগ্য সেটিং।
crond
যখন চাকরী হয় চালাতে ব্যর্থ হয় বা যখন চাকরীটি কোনও ননজারো প্রস্থান কোড ফেরত দেয় তখন আপনার ইমেল পাওয়া উচিত । টাইপ করার চেষ্টা করুন:
$ mailx
কমান্ড প্রম্পটে।
mailx(1)
বেশিরভাগ প্রতিটি ইউনিক্স লাইক সিস্টেমে বেসিক মেইল রিডিং প্রোগ্রাম। এটি আধুনিক মানের দ্বারা খুব আদিম, তবে আপনি সর্বদা উপলভ্য হওয়ার জন্য এটির উপর নির্ভর করতে পারেন। অন্যটি, আরও ভাল মেল এজেন্টগুলি উপলভ্য হতে পারে তবে এগুলির মধ্যে পর্যাপ্ত পরিমাণ রয়েছে যা আপনি কখনই জানেন না যে আপনি যে কোনও এলোমেলো মেশিন ব্যবহার করছেন বলে কোনটি ইনস্টল করা আছে।
মনে রাখবেন যে আপনি আপনার সিস্টেমকে ইন্টারনেট ইমেল সার্ভার হিসাবে কনফিগার না করে এই মেল সাবসিস্টেমটি কেবলমাত্র মেশিনের মধ্যেই ব্যবহার করা হবে is আপনি মেশিনে থাকা অন্য ব্যবহারকারীদের কাছে ইমেল প্রেরণ করতে এবং গ্রহণ করতে পারেন তবে আপনি বিশ্বের কাছে ইমেল প্রেরণ করতে পারবেন না এবং বাইরের বিশ্বের ইমেল অবশ্যই আপনার মেশিনে আসতে পারবেন না।
ক্রোন মৌলিক তথ্যে লগ করে /var/log/messages
, তবে আমন্ত্রণকারী ব্যবহারকারীকে কোনও প্রোগ্রাম আউটপুট মেল করে।
/var/log/messages
আমার উবুন্টু সার্ভারে ( 4.4.0-128-generic #154-Ubuntu SMP
)। কোন ধারণা কেন? আমি কয়েক root
মাস ক্রোনটব (উদাহরণস্বরূপ apt autoremove
) এর ক্রোনটবে সংজ্ঞায়িত করেছি , তবে কোনওটিই কার্যকর হয়নি বলে মনে হয়।
আমি কয়েক বছর আগে একই সমস্যার সম্মুখীন হয়ে এই থ্রেড জুড়ে হোঁচট খেয়েছি এবং সম্প্রতি সম্প্রতি রিকার্ডোর দ্বারা উল্লিখিত মামলার একটি সমাধান পেয়েছি। কোনও ইমেলের অভাব সনাক্ত করা শক্ত (যেমন আপনি উল্লেখ করেছেন) এবং আপনি অবশ্যই আপনার মূল @ yourcompany ইমেলটি স্প্যাম করতে চান না। আগ্রহী হলে ডেডম্যান্সনিচ ডট কম দেখুন। । এই সরঞ্জামটি পূর্বোক্ত মামলাগুলি সমাধান করে বলে মনে হচ্ছে। ব্যবহার করা বেশ সহজ বলে মনে হচ্ছে - সরঞ্জামটি আপনার ক্রোনজবকে আপনাকে কেবল কোডের বিট যুক্ত করে। যদি আপনার কাজটি একটি নির্দিষ্ট অভ্যন্তরে চালাতে ব্যর্থ হয় তবে আপনাকে সতর্ক করা হবে। আপনি যদি চাকরীটি আবার চলতে শুরু করেন তবে আপনাকে সতর্কও করা হবে।
আমি ব্যবহার করি vixie-cron
, তাই আমি জানি না যে এটি সবকিছুতে প্রযোজ্য কিনা। তবে আমার কাছে একটি dead.letter
ফাইল রয়েছে যা কাজের সমস্ত আউটপুট ধারণ করে।
আমার /root/
ফোল্ডারে আমি crons.cron
যা চালিয়ে আমার ক্রন্টব হিসাবে সেট করেছি crontab /root/crons.cron
। পাশাপাশি dead.letter
তৈরি করা হবে /root/
।
আমি কেবল গুগল করলাম সম্পাদনাdead.letter
, এবং এটি একটি অবিশ্বাস্য মেল। স্পষ্টত ক্রোনটির সাথে এর কোনও যোগসূত্র নেই। আপনার যদি মেল সঠিকভাবে সেট আপ না করে (আমার মতো), আপনার কাছে ফাইলটি থাকবে।
নবাবিদের জন্য, এটি ডিবাগ করার জন্য ব্যথা হতে পারে। মিনিট এবং ঘন্টার মানগুলি বিনিময় না করার বিষয়ে নিশ্চিত হন। মিনিট আগে আসে, তারপর ঘন্টা। আপনি যখন প্রত্যেকের জন্য 12 টিরও কম মান সরবরাহ করেন তখন তা সেগুলি গ্রহণ করবে তবে প্রত্যাশিত বা মোটেও কাজ করতে পারে না।