ক্রোন জব মাঝে মাঝে চলছে না


8

CentOS 6.6নিম্নলিখিত প্যাকেজগুলি সহ আমার একটি সার্ভার রয়েছে:

crontabs-1.10-33.el6.noarch
cronie-1.4.4-12.el6.x86_64
cronie-anacron-1.4.4-12.el6.x86_64
kernel-2.6.32-504.3.3.el6.x86_64

কখনও কখনও, ব্যাকআপ কাজগুলির মধ্যে একটি যা প্রতিদিন চালানোর জন্য নির্ধারিত হয় কেবল চালানো হয় না। এমনকি স্ক্রিপ্ট অনুযায়ী বলা হয় না /var/log/cron.log। আকর্ষণীয় যে উল্লেখ করা অন্য কাজ একই সময়ে চালানো ঠিক নির্ধারিত কোন সমস্যা ছাড়াই চালানো।

আমি সমস্যাটি পুনরুত্পাদন করতে পারি না এবং এটিতে কোনও নিদর্শন দেখিনি। আমি যদি কিছু না করি, তবে প্রত্যাশার মতো কাজটি পরের দিন সঠিকভাবে চলে।

ক্রন্ড কেবলমাত্র একাধিক কাজের মধ্যে কেবল একটিটিকে অগ্রাহ্য করে যা নির্দিষ্ট সময়ে চলার কথা। এটি কেবল বিক্ষিপ্তভাবে ঘটে।

আমি crontabফাইলের শেষে অন্য কয়েকটি জায়গায় লোকেরা খালি লাইন যুক্ত করার বিষয়ে কথা বলছি । যে কাজটি মাঝে মধ্যে চালাতে ব্যর্থ হয় তা আসলে আমার crontabফাইলের শেষ লাইনে line আমি কোনও সত্যিকারের বা পরিচিত বাগ এটির কোনও নিশ্চয়তা খুঁজে পাইনি।

# tail -2 /var/spool/cron/postgres
*  * * * * OTHERJOB
0 21 * * * /pg_backup.sh

আমার যা কিছু আছে তা এটাই /var/log/cron.log

Mar 31 21:00:02 SERVERNAME [cron.info] CROND[19394]: (root) CMD (OTHERJOB)
Mar 31 21:00:02 SERVERNAME [cron.info] CROND[19418]: (postgres) CMD (/pg_backup.sh)
Mar 31 21:01:02 SERVERNAME [cron.info] CROND[20062]: (root) CMD (OTHERJOB)

Apr  1 21:00:02 SERVERNAME [cron.info] CROND[31349]: (root) CMD (OTHERJOB)
Apr  1 21:01:01 SERVERNAME [cron.info] CROND[32080]: (root) CMD (OTHERJOB)

দেখুন কীভাবে OTHERJOBসর্বদা চালানো হয় Apr 1 pg_backup.shএমনকি কার্যকর করা হয় নি।

আমি ইতিমধ্যে পুনরায় চালু করার চেষ্টা করেছি crondকিন্তু এটি ঘটতে থাকে। এটি ওএস, কার্নেল এবং cronআরপিএম এর একই সংস্করণ সহ একাধিক সার্ভারকে প্রভাবিত করছে ।

cronie( 1.4.12) এর একটি নতুন সংস্করণ রয়েছে , তবে এটি আপগ্রেড করা কোনও বিকল্প নয় কারণ আমরা ইতিমধ্যে এর জন্য সর্বশেষ উপলব্ধ সংস্করণটি ব্যবহার করছিCentos 6.6

আমি cronieআমার ( 1.4.4) এর পরে সমস্ত সংস্করণে চেঞ্জলগ পেরিয়েছি এবং এই বিশেষ সমস্যার কোনও সমাধান বলে মনে হচ্ছে না। সমস্ত প্রতিশ্রুতিবদ্ধ বার্তাগুলিও পরীক্ষা করেছে ।


1
ভাল সমস্যার সমাধান। কেন নূরের শেষ লাইনটি যুক্ত করার চেষ্টা করবেন না ( echo >/dev/nullউদাহরণস্বরূপ)?
বেলমিন ফার্নান্দেজ

আপনার কমান্ডের কোনও ত্রুটি আছে কি? এটি সম্ভবত স্ক্রিপ্টটি বন্ধ করতে পারে। আমার init.d স্ক্রিপ্টগুলির সাথে একই রকম অভিজ্ঞতা ছিল।
হার্ডিক

প্রতিটি কাজ কত দ্রুত সম্পন্ন হয়? আপনি প্রতি মিনিটে যে কাজটি শুরু করেন তা যদি প্রতিবার দুই মিনিটের জন্য চালানো হয় তবে সমস্যাটি হতে পারে। তবে এটি যদি দুই সেকেন্ডের মধ্যে পূর্ণ হয়, তবে সম্ভবত এটি কোনও সমস্যা নয়।
ক্যাস্পারড

1
প্রতি মিনিটে যে কাজটি চালিত হয় (OTHERJOB) কয়েক সেকেন্ডের মধ্যে শেষ হয়। তবে বিষয়টি ইস্যু নয়। আমি কেবল উপরের লগগুলিতে OTHERJOB যুক্ত করেছি তা দেখানোর জন্য যে ক্রন্ড চলমান ছিল এবং pg_backup.sh কেবল চালানো হয়নি এমন সময়ে OTHERJOB সঠিকভাবে প্রক্রিয়া করা হয়েছিল।
লুইস

চেক /var/log/audit/audit.log
মাইকেল হ্যাম্পটন

উত্তর:


6

মূল ক্রোনটির প্রতিটি প্রবেশের প্রয়োজন একটি নতুন লাইনের সাথে শেষ হয় তাই হ্যাঁ কখনও কখনও আপনাকে ফাঁকা লাইন বা শেষে কিছু দরকার হয়।

   Although cron requires that each entry in a crontab end  in  a  newline
   character,  neither the crontab command nor the cron daemon will detect
   this error. Instead, the crontab will appear to load normally. However,
   the  command  will  never  run.  The best choice is to ensure that your
   crontab has a blank line at the end.

   4th Berkeley Distribution      29 December 1993               CRONTAB(1)

: কিছু সংস্করণ এটি সংশোধন বা উদাহরণস্বরূপ উবুন্টু Maverik (10.10) এর জন্য একটি সতর্কবার্তা নির্গত আছে নিম্নলিখিতরূপে crontab পরিবর্তন নীচে যা একটি সতর্কবার্তা syslog- র লেখা হবে যুক্তরাষ্ট্র ডায়গনিস্টিক অধ্যায় দিকে তাকাও।

DIAGNOSTICS
       cron requires that each entry in a crontab end in a newline  character.
       If  the last entry in a crontab is missing a newline (ie, terminated by
       EOF), cron will consider the crontab (at  least  partially)  broken.  A
       warning will be written to syslog. 

2

এটি অনুসন্ধানের পাঠ্যের সাথে প্রথম উত্তর যা cron error getpwname failedআমি ভেবেছিলাম যে আমি আমার সমস্যার কারণ পোস্ট করব:

আমি / etc / crontab ব্যবহার করছিলাম তবে ব্যবহারকারীকে কমান্ডের সামনে রাখতে ভুলে গিয়েছিলাম।

অর্থাত,

*/5   *  *  *  * /bin/bash <filename>

পরিবর্তে

 */5   *  *  *  * root /bin/bash <filename>

এটি একই ত্রুটি দিয়েছে, ফিগার যান।


1

আমরা sssdরিমোট প্রমাণীকরণের জন্য ব্যবহার করি । crondচলমান চাকরির আগে উপলব্ধ ব্যবহারকারীদের জন্য পরীক্ষা করতে হবে এবং এটি প্রতি 60 সেকেন্ডে এটি করে does sssdডিফল্ট client_idle_timeout60 সেকেন্ড। তাই আমরা একটি জাতি শর্ত ছিল মধ্যে sssdএবংcrond

আমরা কেবল এই সমস্যার তলদেশে 1.4.4-14পৌঁছেছি কারণ সংস্করণে ক্রন্ড কিছু ত্রুটি সম্পর্কে আরও কিছুটা ভারবস হতে শুরু করেছে।

* Thu Feb  5 12:00:00 2015 Tomáš Mráz <tmraz@redhat.com> - 1.4.4-14
- add log message when getpwnam fails

সেই সংস্করণে আপডেট করার পরে আমরা নীচে ত্রুটি একই সময়ে দেখতে শুরু করেছি যে কোনও কাজ চলবে না:

[cron.err] crond[8654]: (user) ERROR (getpwnam() failed): Broken pipe

যা আমাদের এখানে এনেছে: https://bugzilla.redhat.com/show_bug.cgi?id=1209600#c2

এবং শেষ পর্যন্ত এটি: https://access.redhat.com/solutions/1125133

ইস্যু: sssd_begetpwnam () EPIPE (যেমন ভাঙা পাইপ) ফেরার কারণে সিক্কিলের সাথে সমাপ্তি ক্রন্ড জব এন্ট্রিগুলিকে নিঃশব্দে এড়িয়ে যেতে পারে।

উপরের লিঙ্কে প্রস্তাবিত সমাধানটি নীচে লাইনটি যুক্ত করা হয়েছিল /etc/sssd/sssd.conf:

client_idle_timeout = 75

উপরের পরিবর্তনটি আমাদের জন্য সমস্যাটি স্থির করেছে এবং ক্রোন আর চাকরি বাদ দেয় না।

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