আমি আমার ক্রোন কাজের ফলাফলগুলি কীভাবে দেখতে পারি?


66

আমি কীভাবে ক্রন্টব চালাতে পারি তার জন্য অনেক গাইড দেখছি, তবে এখনই আমার কী প্রয়োজন তা শিখতে হবে

  1. ক্রোন জব সম্পর্কে লগ ফাইল সন্ধান করুন
  2. লগড কি কনফিগার করুন

উত্তর:


66

আপনি ক্রোন দিয়ে চালিত প্রোগ্রামগুলির নিজস্ব লগ ফাইল রয়েছে কিনা তা পরীক্ষা করুন। যদি তারা না করে তবে আউটপুটটিকে স্ট্যান্ডার্ড আউটপুটগুলিতে না লিখলে আপনি এগুলি ফাইলগুলিতে পুনর্নির্দেশ করতে পারেন বা সেগুলি আপনার কাছে মেল করতে পারেন। ক্রন্টাবসের অভ্যন্তরে স্ট্যান্ডার্ড শেল পুনর্নির্দেশ কাজ করে।

উদাহরণস্বরূপ, ত্রুটি আউটপুটটিকে পুনর্নির্দেশ some_job.shকরতে some_job.errএবং স্ট্যান্ডার্ড আউটপুটটি বাতিল করে (যেমন এটি প্রেরণ করা /dev/null) আপনার ক্রন্টবায় নিম্নলিখিত পুনঃনির্দেশকে যুক্ত করুন

 33 3 * * * /path/to/some_job.sh 1> /dev/null 2> /other/path/to/some_job.err

অথবা পরিবর্তে এটি আপনাকে মেল করতে (যদি mailউপলব্ধ থাকে)

 33 3 * * * /path/to/some_job.sh 1> /dev/null 2>&1 | mail -s "cron output" you@example.org

এইভাবে আমি সবসময় আমার ক্রোন সমস্যাগুলি সমাধান করেছি।
পদার্থবিজ্ঞান

এটি কি দ্বিতীয় উদাহরণটি সঠিক? এটি কি সবকিছু পুনর্নির্দেশ করবে না /dev/null?
টিএমএমএম

7
@ টিম্ম্ম্ম: আমি কাজ করি। এটি প্রথমে some_job.shস্টাডাউট থেকে স্টাডাউটের সমস্ত কিছু পুনঃনির্দেশ করে /dev/null(যার এখন আর কিছুই নেই)। এইভাবে কেবল তার স্টডার স্টাটআউটে শেষ হয় এবং এতে চলে যায় mail
বেনিয়ামিন ব্যানিয়ের

9

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

যদি আপনি চান আপনার কাজগুলি নির্দিষ্ট লগ ফাইলগুলিতে লিখতে চান তবে আপনি @ হঙ্ক প্রস্তাবিত মত স্ট্যান্ডার্ড আউটপুট পুনঃনির্দেশ ব্যবহার করতে পারেন, বা আপনার ক্রোন জব শেল স্ক্রিপ্ট হিসাবে ধরে রাখলে আপনার স্ক্রিপ্ট কল লগার (1) বা সিসলগ (1) থাকতে পারে বা অন্য কোনও কমান্ড-লাইন সরঞ্জামটি সিএসলগে যথেচ্ছ বার্তা প্রেরণের জন্য আপনার ওএস সরবরাহ করে। তারপরে আপনি কোন ধরণের বার্তা লগইন করেছেন তা কনফিগার করার জন্য আপনার ওএসের অন্তর্নির্মিত পদ্ধতিগুলি ব্যবহার করতে পারেন, সম্ভবত /etc/syslog.conf সম্পাদনা করে।

আমার বেশিরভাগ ক্রোন জব বিশেষত কারণে ক্রোন দ্বারা শুরু করার লক্ষ্যে আমি বিশেষভাবে লিখেছিলাম বাশ স্ক্রিপ্টগুলি আহবান করে। এগুলিতে, বিশেষত যখন আমি প্রাথমিকভাবে সেগুলি লিখি এবং ডিবাগ করি, শেল স্ক্রিপ্টের প্রতিটি লাইনের অপরিবর্তিত ও প্রসারিত ফর্মটি সম্পাদন হওয়ার আগেই স্টাডআউটে লিখিত করে তুলতে আমি বাশের "সেট-ভিএক্স" ব্যবহার করতে চাই। নোট করুন যে ক্রোন থেকে শুরু হওয়া শেল স্ক্রিপ্টগুলি নন-লগইন, অ-ইন্টারেক্টিভ শেল হিসাবে বিবেচিত হয়, সুতরাং আপনার স্ট্যান্ডার্ড শেল স্টার্টআপ স্ক্রিপ্টগুলি .bashrc এবং। প্রোফাইল হিসাবে চালিত হয় না। আপনি যদি ব্যাশ ব্যবহার করেন এবং একটি স্টার্টআপ স্ক্রিপ্ট চালানোর জন্য বাশ চান, আপনি যেখানে কাজটি সংজ্ঞায়নের লাইনের আগে আপনার ক্রোনটবে একটি পরিবেশ পরিবর্তনশীল "BASH_ENV = / পাথ / টু / আমার / স্টার্টআপ / স্ক্রিপ্ট" নির্ধারণ করতে হবে।


3
এটা সঠিক। mailকমান্ড লাইন থেকে বার্তা পড়তে কমান্ড ব্যবহার করতে পারেন । বা তাকান /var/spool/mail। তবে আপনি যদি স্ট্যান্ডার্ড সেন্ডমেলের চেয়ে পোস্টফিক্স বা অন্য মেলার ইনস্টল করেন তবে বার্তা পড়ার জন্য অন্য উপায় প্রয়োজন needed
akostadinov

কেন কেবল আমাদের এই জন্য একটি মেল পরিষেবা এজেন্টের প্রয়োজন? mail -s "cron output" test@example.comঠিক সূক্ষ্মভাবে কাজ করে: /
মার্টিন কনেকনি

CentOS এ, আমার ক্রোন আউটপুটটি "var" / স্পুল / মেইলে "মেইল" হয়। আপনি less $MAILযদি বর্তমান ব্যবহারকারীর less /var/spool/mail/rootক্রোন আউটপুট দেখতে চান বা আপনি যদি রুট হিসাবে চলমান কমান্ডগুলির জন্য ক্রোন আউটপুট দেখতে চান তবে এটি চালিয়ে দেখুন।
এসএফসিসি

5

ক্রোন ক্রিয়াকলাপ সম্পাদন করছে তাদের নিজস্ব লগিংয়ের জন্য দায়বদ্ধ।


2

সর্বাধিক সহজ উপায় হ'ল মুদ্রণ ত্রুটি ক্যাপচার এবং একটি ফাইলের মধ্যে সেভ করা। আমার কাছে একটি ক্রোনজব রয়েছে যা এইচএইচপি কমান্ড লাইনে কল করে:

1 0 * * * php /pathOfMyapp/index.php नियंत्रক নাম ফাংশননাম> / pathOfMyapp / লগ / আমারআররলগ 2> & 1

'>' এর পূর্ববর্তী অংশটি এটি আমার ক্রোনজব এবং '>' এর পরে এটি আমার প্রকল্পের মূলের লগ ফোল্ডারে অবস্থিত একটি ফাইলকে ক্যাপচার এবং সংরক্ষণ করে তবে আপনি যে জায়গায় চান সেটি হতে পারে। সতর্কতা অবলম্বন করুন: প্রতিটি সময় ক্রোনজব বলা হবে সে শেষ লগটি ওভাররাইট করবে। বিদ্যমান ফাইলের শেষে লিখতে আপনি '>>' ব্যবহার করতে পারেন বা 'বিড়াল' টার্মিনাল কমান্ড অনুসন্ধান করতে পারেন।

যদি আপনার ক্রোনটাব 'কার্ল' বা 'উইজেট' ব্যবহার করে এবং কোনও লিঙ্কটি উল্লেখ করে, আপনি অ্যাক্সেস-লগের জন্য / var / লগ / httpd / অ্যাপনামে অনুসন্ধান করতে পারেন, যদি ক্রোন 500 বা 400 দিয়ে ফিরে আসে তবে অবশ্যই কিছু ভুল হতে পারে।

শেষ অবধি, আপনি / var / লগ / বার্তাগুলিও পরীক্ষা করতে পারেন।


1

আমি মনে করি ক্রোন-ফাইলের মধ্যে পুনর্নির্দেশ এই ক্ষেত্রে সর্বোত্তম বিকল্প নাও হতে পারে।

প্রায়শই আপনি লগিং স্পিফিকেশন ক্রোন জব স্ক্রিপ্টের সাথে সহ-অবস্থান করতে চান। এই ক্ষেত্রে, আমি নিম্নলিখিতগুলি সুপারিশ করছি:

#!/bin/bash
exec &>> capture-log.txt
echo "Running cron-job foo at $(date)"
...
<rest of script>

এটি ক্রোন জব থেকে ক্যাপচার-লগ। টেক্সট ফাইলটিতে আউটপুট সংযোজন করে।


1

আমি ক্রোন জব সম্পর্কে ই-মেইল রিপোর্ট পেতে পছন্দ করি। শুধু রাখি

MAILTO=yourmail@domain.com

ক্রন্টব এ প্রবেশ করুন এবং আপনি একটি ইমেল পাবেন। অবশ্যই আপনার অ্যাকাউন্টের জন্য আপনাকে ই-মেইল কনফিগার করতে হবে।


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