cron
ক্রোন কাজের মালিকের কাছে এটি মেইলে চালিত প্রতিটি কাজের স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি ইতিমধ্যে প্রেরণ করে।
আপনি ব্যবহার করতে পারেন MAILTO=recipient
মধ্যে crontab
ফাইল একটি আলাদা অ্যাকাউন্ট এ পাঠানো ইমেল আছে।
এটি কাজ করার জন্য আপনার সঠিকভাবে মেল কাজ করা দরকার। স্থানীয় মেলবক্সে বিতরণ করা সাধারণত সমস্যা হয় না (বাস্তবে সম্ভাবনা থাকেls -l "$MAIL"
প্রকাশিত হবে যে আপনি ইতিমধ্যে কিছু পেয়েছেন) তবে এটি বক্স থেকে এবং ইন্টারনেটে বের করার জন্য এমটিএ প্রয়োজন (পোস্টফিক্স, সেন্ডমেল, আপনার কী আছে) বিশ্বের সাথে সংযোগ রাখতে সঠিকভাবে কনফিগার করা হবে।
যদি কোনও আউটপুট না থাকে তবে কোনও ইমেল তৈরি করা হবে না।
একটি সাধারণ ব্যবস্থা হ'ল আউটপুট কোনও ফাইলে পুনর্নির্দেশ করা, তবে অবশ্যই ক্রোন ডেমন কাজটি কোনও আউটপুট ফেরত দেখতে পাবে না। একটি বৈকল্পিক হ'ল কোনও ফাইলের কাছে স্ট্যান্ডার্ড আউটপুট পুনর্নির্দেশ করা (বা স্ক্রিপ্টটি লিখুন এটি কখনই কোনও কিছু প্রিন্ট করে না - সম্ভবত এটি পরিবর্তে কোনও ডাটাবেজে ফলাফল সঞ্চয় করে, বা রক্ষণাবেক্ষণের কাজগুলি সম্পাদন করে যা কোনও কিছুই আউটপুট দেয় না?) এবং সেখানে উপস্থিত থাকলে কেবল একটি ইমেল পাওয়া যায় একটি ত্রুটি বার্তা।
উভয় আউটপুট স্ট্রিমগুলিকে পুনর্নির্দেশ করতে সিনট্যাক্সটি হ'ল
42 17 * * * script >>stdout.log 2>>stderr.log
লক্ষ্য করুন যে কীভাবে আমরা >>
ওভাররাইটের পরিবর্তে (দ্বিগুণ ) সংযোজন করব , যাতে কোনও আগের কাজের আউটপুট পরবর্তী ব্যক্তির দ্বারা প্রতিস্থাপন না হয়।
এখানে অনেক উত্তরে প্রস্তাবিত হিসাবে, আপনি উভয় আউটপুট স্ট্রিমগুলি একটি ফাইলে প্রেরণ করতে পারেন; 2>&1
"স্ট্যান্ডার্ড আউটপুট যেখানেই চলছে সেখানে স্ট্যান্ডার্ড ত্রুটি হওয়া উচিত" বলার সাথে দ্বিতীয় পুনর্নির্দেশটি প্রতিস্থাপন করুন । (তবে আমি বিশেষত এই অনুশীলনটিকে সমর্থন করি না mainly এটি মূলত বোধগম্য হয় যদি আপনি সত্যিকার অর্থে স্ট্যান্ডার্ড আউটপুটটিতে কিছু প্রত্যাশা না করেন তবে কিছু উপেক্ষা করতে পারেন, সম্ভবত আপনার স্ক্রিপ্ট থেকে ডাকা কোনও বাহ্যিক সরঞ্জাম থেকে এসেছেন))
cron
কাজগুলি আপনার হোম ডিরেক্টরিতে চালিত হয়, সুতরাং যে কোনও ফাইলের নাম এর সাথে সম্পর্কিত হওয়া উচিত। আপনি যদি নিজের হোম ডিরেক্টরি থেকে বাইরে লিখতে চান তবে স্পষ্টতই আপনাকে পৃথকভাবে নিশ্চিত করতে হবে যে আপনার গন্তব্য ফাইলে লেখার অ্যাক্সেস রয়েছে।
একটি সাধারণ অ্যান্টিপ্যাটার্ন হ'ল সবকিছুতে পুনর্নির্দেশ করা /dev/null
(এবং তারপরে স্ট্যাক ওভারফ্লোকে জিজ্ঞাসা করুন যে কোনও কিছু যখন কাজ করছে না তখন কী কী ভুল হয়েছে তা নির্ধারণ করতে; তবে আমরা হারিয়ে যাওয়া আউটপুটও দেখতে পাই না!)
আপনার স্ক্রিপ্টের মধ্যে থেকে নিয়মিত আউটপুট (প্রকৃত ফলাফল, আদর্শভাবে মেশিন-পঠনযোগ্য আকারে) এবং ডায়াগনস্টিকস (সাধারণত কোনও মানব পাঠকের জন্য ফর্ম্যাট করা) আলাদা রাখার বিষয়টি নিশ্চিত করুন। শেল স্ক্রিপ্টে,
echo "$results" # regular results go to stdout
echo "$0: something went wrong" >&2
কিছু প্ল্যাটফর্ম (এবং উদাহরণস্বরূপ GNU Awk) আপনাকে /dev/stderr
ত্রুটি বার্তাগুলির জন্য ফাইলের নাম ব্যবহার করার অনুমতি দেয় , তবে এটি সঠিকভাবে বহনযোগ্য নয়; পার্লে, warn
এবং die
স্ট্যান্ডার্ড ত্রুটিতে মুদ্রণ করুন; পাইথনে, লিখুন sys.stderr
বা ব্যবহার করুন logging
; রুবি এ, চেষ্টা $stderr.puts
। ত্রুটি বার্তাগুলিতে কীভাবে স্ক্রিপ্টটির নাম অন্তর্ভুক্ত করা উচিত যা ডায়াগনস্টিক বার্তা দেয় Notice