আমার ক্রন্টব কেন ট্রিগার হয়নি?


29

আমি crontab -eআমার ক্রন্টবায় নিম্নলিখিত লাইনটি যুক্ত করতাম:

* * * * * echo hi >> /home/myusername/test

তবুও, আমি দেখতে পাই না যে পরীক্ষার ফাইলটি লিখিত আছে। এটি কি কোনও অনুমতির সমস্যা, বা ক্রন্টব সঠিকভাবে কাজ করছে না?

আমি দেখতে পাচ্ছি ক্রোন প্রক্রিয়া চলছে। আমি কীভাবে এটি ডিবাগ করতে পারি?

সম্পাদনা করুন - জিজ্ঞাসা করুন উবুন্টুর ক্রন্টব সম্পর্কে একটি দুর্দান্ত প্রশ্ন রয়েছে , দুর্ভাগ্যক্রমে এটি এখনও আমাকে সহায়তা করে না।

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

উত্তর:


23

এর বাস্তবায়ন রয়েছে cron(এগুলি সবই নয় এবং আমি কোন অফেন্ডের কথা মনে করি না, তবে আমি লিনাক্সের অধীনে একটির মুখোমুখি হয়েছি) যা প্রতি মিনিটে মিনিটে আপডেট হওয়া ক্রন্টব ফাইলগুলি পরীক্ষা করে এবং পরের মিনিট পর্যন্ত নতুন এন্ট্রি বিবেচনা করে না । অতএব, কোনও ক্রন্টাব প্রথমবারের জন্য দুই মিনিট সময় নিতে পারে। এটি আপনি যা পর্যবেক্ষণ করেছেন তা হতে পারে।


1
আমি সোলারিস বা সম্ভবত সোলারিসের প্রথম দিকে অনুমান করব। ভবিষ্যতে ক্রোন এন্ট্রিটি 3-5 মিনিটের মধ্যে চালানোর অভ্যাস আছে যখন আমি কোনও ক্রন্টাব এন্ট্রি থেকে কোনও স্ক্রিপ্ট পরীক্ষা করি, কারণ আমি এই আচরণের দ্বারা সর্বদা বোকা হয়ে থাকতাম।
ব্রুস এডিগার

fcronএটিও করে
ফোনেহেহে

যদি "চেক" রুটিনটি কয়েক মিনিটেরও বেশি খরচ হয়? এই দীর্ঘতর "পরীক্ষা" চলাকালীন ট্রিগার করা উচিত এমন ক্রোনজবস থাকবে।
ospider

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

28

আমার ক্রোনজবের পরে একটি খালি লাইন আছে।
রিপার 234

4
খালি লাইন নয়, শেষ লাইনের শেষে একটি নতুন লাইন। একটি পাঠ্য ফাইলটিতে লাইনের ক্রম থাকে বলে মনে করা হয়, প্রতিটিই একটি নতুন লাইন দ্বারা সমাপ্ত হয়, সুতরাং কোনও খালি খালি পাঠ্য ফাইলটি একটি নিউলাইন চরিত্রের সাথে শেষ হয়। কিছু ইউটিলিটি কোনও ফাইলের সর্বশেষ নিউলাইন পরে কোনও প্রক্রিয়া করে না।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

1
এটি পদগুলির প্রশ্ন, "নিউলাইন চরিত্র" এর অর্থ "এই অক্ষরের পরে পাঠ্যের নতুন লাইন শুরু করা"। সুতরাং সর্বশেষ নিউলাইন এবং ইওএফ এর মধ্যে 0 বাইটগুলিও খালি লাইন হিসাবে বিবেচিত হতে পারে ("লাইন যার মধ্যে 0 টি অক্ষর রয়েছে")
জেলরেন

10

আমার একই সমস্যা ছিল - শেষের দিকে আমি একটি নতুন এন্ট্রি যুক্ত করার পরে একটি কর্মক্ষম ক্রন্টব হঠাৎ বন্ধ হয়ে যায়। দেখা গেল যে আমি শেষ লাইনের পরে একটি নতুন লাইন স্থাপন করতে ভুলে গিয়েছিলাম।

কমান্ড জারি করে জানতে পেরেছি

cat /var/log/syslog | grep crontab

এবং আউটপুট সমস্যা দেখিয়েছে:

Jul  2 08:16:01 shiva cron[1254]: (*system*) RELOAD (/etc/crontab)
Jul  2 08:16:01 shiva cron[1254]: (*system*) ERROR (Missing newline before EOF, this crontab file will be ignored)

নতুন লাইন যুক্ত করা এবং সংরক্ষণ সমস্যার সমাধান করেছে।


5

এর মতো শব্দগুলি স্থির। পরের বার, এসটিডিআরআর পাশাপাশি লগ করার চেষ্টা করুন। নিম্নলিখিতটি কেবল এসটিডিআরটিতে লগ হবে, এসটিডিআরআর নয়:

* * * * * echo hi >> /home/myusername/test

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

* * * * * echo hi >> /home/myusername/test 2> /home/myusername/test.stderr

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

* * * * * echo hi >> /home/myusername/test 2>&1 | /usr/bin/logger -t mycronjob

2

আমার সাথে সমস্যাটি ছিল স্ক্রিপ্টটি সম্পাদনযোগ্য ছিল না। আমার কাছে ক্রন্টব-এর সেটআপ ছিল

* * * * * /bin/my-script.sh

এবং ফাইলের মাইক্রিপ্ট কার্যকর করা যায় নি তাই আমি দৌড়ে গেলাম

chmod +x my-script.sh

তত্ক্ষণাত্ প্রত্যাশা অনুযায়ী আউটপুট দেখতে শুরু করি।


1

আমি যখন পরিবর্তন করি তখন আপনার ক্রোন লাইনটি আমার কম্পিউটারে কাজ myusernaeকরেphunehehe । আপনার সিস্টেমে কী সমস্যা রয়েছে তা জানার বিভিন্ন উপায় রয়েছে।

ক্রোন যখন সাধারণত কোনও ভুল হয় তখন ব্যবহারকারীকে মেল পাঠায়। আপনি যদি "আপনার মেল আছে" বার্তাটি দেখেন তবে আপনার ইনবক্সটি পরীক্ষা করতে কোনও মেল ক্লায়েন্ট ব্যবহার করুন । অথবা, আপনার হোম ডিরেক্টরিতে পরীক্ষা করুন, একটি ফাইলের নাম থাকতে পারেdead.letter

আপনি /var/log/ক্রোন সম্পর্কিত এন্ট্রি পরীক্ষা করতে পারেন । আমার কম্পিউটারে লগ ফাইলটি রয়েছে/var/log/cron/current (রুট অ্যাক্সেসের প্রয়োজন)।

আপনার যদি রুট অ্যাক্সেস থাকে তবে আপনি ক্রোন ডেমন থামাতে এবং এটি ডিবাগ মোডে শুরু করতে পারেন। উদাহরণস্বরূপ আমি ব্যবহার করব ( fcronআপনার ডেমনটির নাম পরিবর্তন করুন):

killall fcron
fcron --foreground --debug

আমি আমার ডেমনটির নামটি কীভাবে সন্ধান করব?
রিপার 234

@ রিপার 234 ব্যবহার করুন ps -ef | grep cronএবং আপনার ক্রোনটির জন্য একটি লাইন দেখতে হবে। ডিবাগের জন্য পতাকাটি দেখতে ক্রোনটির ম্যান পৃষ্ঠাটি দেখুন। সম্ভবত আপনি ভিক্সি ক্রোন ব্যবহার করছেন , সেক্ষেত্রে ডিবাগ পতাকাটি -x। ক্রোন প্রক্রিয়াটি মেরে ফেলুন এবং অতিরিক্ত পতাকা দিয়ে আবার এটি শুরু করুন।
ফুনেহে

এছাড়াও / var / লগ / syslog চেক করুন। আমার ক্ষেত্রে, সতর্কতা ছিল যে ক্রোন ফাইলটি গ্রুপ-লিখনযোগ্য।
আপনার মোডগুলিকে

1

সম্ভবত, যখন ক্রোন ব্যর্থ হয়, এটি সেই কম্পিউটারে ক্রোন কাজের ব্যবহারকারী আইডিতে একটি ইমেল উত্পন্ন করে। যদি আপনার কম্পিউটারে এমটিএ কাজ করে না থাকে বা আপনি এই মেইলটি অন্য কোথাও পড়ছেন না বা ফরোয়ার্ড করছেন না, এমটিএ কাজ করছে তা সত্ত্বেও আপনি সেই বার্তাটি দেখতে পাবেন না।

মেলটির মাধ্যমে আপনার ক্রোন্টাবের ত্রুটিগুলি পাওয়ার একটি ভাল উপায় হ'ল আপনার ক্রন্টবকে এটির মতো দেখানো:

MAILTO="myemail@example.com"
* * * * * echo hi >> /home/myusernae/test

স্পষ্টতই, myemail@example.com এর চেয়ে আপনার ইমেল ঠিকানাটি ব্যবহার করুন। এটি ক্রোনকে স্থানীয় অ্যাকাউন্টের চেয়ে আপনার ইমেল ঠিকানায় ত্রুটিগুলি প্রেরণ করতে বলে। বিশেষত, আপনি যদি আপনার কাছে কেবল আউটপুট প্রেরণ করতে চান এমন একটি রুট ক্রন্টাব (অথবা /etc/cron.d এ ক্রন্টব টুকরা) থাকে তবে এটি স্প্যামিং রুটের মেলবক্স বা রুটের ফরোয়ার্ডিং ঠিকানাটি এড়াতে পারবেন can


আমি জানি না সিস্টেমে কোনও এসএমটিপি / আউটগোয়িং মেল সার্ভার কনফিগার করা আছে কিনা। বাজে কথা এটি হয় না।
রিপার 234

1

আমি এর একটি কারণ অনুমান করতে পারি যে / home / ডিরেক্টরিটি এনক্রিপ্ট করা থাকে এবং যখন ব্যবহারকারী লগ আউট হয় ক্রোন সেই ডিরেক্টরিতে কিছু করতে অক্ষম হয়।

দেখুন: https://stackoverflow.com/a/40354269/1279002

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