ক্রোন ডেমন কতটা নির্ভুল?


22

ক্রোন জব শিডিয়ুলার কি আসলেই সুনির্দিষ্ট?

আমি বোঝাতে চাইছি, প্রতি রাতে সর্বশেষতম সম্ভব চালনার জন্য আমার একটি স্ক্রিপ্ট দরকার, তবে পরের দিনের 00:00 পূর্বের আগে।

আমি আদর্শভাবে ২৩.৫৯ (বা রাত ১১:৫৯) একটি ক্রোন জব চালাতাম, তবে সিস্টেমটি কি যথাযথ হবে? যেহেতু একটি দ্বিতীয় বিষয়টি গুরুত্বপূর্ণ, তাই আমি কি কিছুটা সময় ছেড়ে যাওয়ার জন্য ক্রোন জবটি 23:58 এ সেট করব?


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

আমি 10 মিনিটের নির্ভুলতার সাথে একটি পুরানো বোবা ক্রোন ব্যবহার করতাম।
জোশডসন

7
আপনার প্রয়োজনীয়তা আমার কাছে খুব নির্ভরযোগ্য নয় বলে মনে হচ্ছে। আপনার সিস্টেমে মধ্যরাতের আশপাশে বেশি লোড থাকলে আপনি কী করবেন। আপনার আরটি সিস্টেম না থাকলে আপনি কোনও কিছুর গ্যারান্টি দিতে পারবেন না।
টমাস এরকার 18

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

উত্তর:


24

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

  • সিস্টেমটি কতটা বোঝা
  • কাজ কি করে?
  • হার্ডওয়্যার সমস্যার কারণে আস্তে আস্তে
  • নেটওয়ার্কিং সম্পর্কিত সমস্যার কারণে অস্তিত্ব (ধরে নেওয়া কাজটি নেটওয়ার্কিংয়ের উপর নির্ভর করে)

আমার প্রস্তাবটি আপনার নকশাটি এমন পরিবর্তন করা যাতে নির্দিষ্ট সমাপ্তির সময় প্রয়োজন হয় না।


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

@ মাইকেলKjörling আপনার ফাইলের পরিবর্তে একটি ডিরেক্টরি ব্যবহার করা উচিত, কোনও ফাইলের জন্য যাচাই করা এবং এটি তৈরি করা পরমাণু নয়
বিট্রি

1
@ 8 বিট্রি আপনি যদি পশুপাল পাওয়া যায় তবে এটি ব্যবহার করতে পারেন ।
ব্যবহারকারী 9517 GoFundMonica

1
@ মাইকেলKjörling তবে সঠিক কেসটি সহজতর হলে সম্ভবত কেন ঠিক আছে?
বিট্রি

4
@ 8 বিট্রি আপনি যদি ফাইল ব্যবহার করেন O_CREATএবং O_EXCLফ্ল্যাগ করেন তবে ফাইলটি স্থানীয় ফাইল সিস্টেমে যতক্ষণ থাকবে ততক্ষণ এটি পারমাণবিক হবে।
কাস্পার্ড

14

আমি মনে করি এটি আপনার ক্রোন ডেমনের উপর নির্ভর করে তবে ডকুমেন্টেশন এবং মানটি নির্দেশ করে যে আপনি যদি মিনিট নির্দিষ্ট করেন তবে কাজটি নির্দিষ্ট মুহুর্তে কার্যকর হবে exec

দেখুন:

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


আমার কাছে খুব কম লোড সহ একটি ভার্চুয়াল সার্ভার রয়েছে, এবং তবুও প্রতি মিনিটে চালানোর জন্য প্রস্তুত একটি ক্রোন কখনও কখনও 0 সে, 1 এস, 2 স, কখনও কখনও 17 সেকেন্ড পর্যন্ত শুরু হবে। আমার অনুমান যে ভার্চুয়াল সার্ভারে ক্রোন কম নির্ভুল হতে পারে, কারণ সেই সার্ভারের বাইরের অন্যান্য প্রক্রিয়া সিপিইউয়ের মতো সংস্থানগুলির সংস্থানকে প্রভাবিত করতে পারে।
লিয়াম

8

সাধারণত ক্রোন 23:59:00 এ শুরু হবে , আপনার সমস্ত ক্রোনট্যাব ফাইল স্ক্যান করবে , 23:59 এর জন্য প্রাসঙ্গিকদের ফিল্টার করুন এবং তারপরে সেগুলি শুরু করুন। এই ফাইলগুলি স্ক্যান করা খুব দ্রুত, কারণ এগুলির মধ্যে অনেকগুলি নেই এবং সেগুলি কেবল কয়েকটি লাইন অন্তর্ভুক্ত করে। সুতরাং সাধারণত, ক্রোনজবগুলি 23:59:00 বা 23:59:01 এ শুরু হয় ইচ্ছাকৃতভাবে এই প্রক্রিয়াটি ধীর করার নিশ্চিত উপায় রয়েছে। (উদাহরণস্বরূপ, ক্রন্টবটিতে কয়েক মিলিয়ন লাইন যুক্ত করুন)। যদি সিস্টেমটি পুরোপুরি ওভারলোড হয় তবে এটিও এত দ্রুত কাজ করে না।

এছাড়াও, এটি অবশ্যই বাস্তবায়ন নির্ভর।

আপনার যদি খুব সূচনা সময়ের প্রয়োজন হয় তবে আপনি এমন একটি প্রোগ্রাম তৈরি করা ভাল যা আপনার ইচ্ছা হওয়া অবধি ঘুমানো থাকে এবং তারপরে চালানো হয় (যেমন সি ++ 11 ব্যবহার করে )। কিন্তু একটি অ রিয়েল-টাইম ওএসে, এটিও সঠিক হবে না! এছাড়াও পিসির ঘড়ি সঠিক সময় জানে না!

সমস্ত ক্ষেত্রে, এটি কেবলমাত্র আপনার পছন্দসই সময়ে (কম বেশি) প্রোগ্রাম শুরু হওয়ার বিষয়টি নিশ্চিত করে । এখানে কোনো গ্যারান্টি হতে পারে না যে প্রোগ্রাম শেষ হয় একটি প্রদত্ত সময় পর্যন্ত সফল, তাই আমি দৃঢ়ভাবে বিশ্বাস করি আপনি যে প্রয়োজন কিছু পরিবর্তন করা উচিত।


2
আমি বিশ্বাস করি যে ক্রোনট্যাবগুলি মেমোরিতে ধারণ করা হয় - আপনি যদি ক্রন্টাবের পিছনে ফাইলগুলি সরাসরি সম্পাদনা করেন (ক্রন্টব-ই পরিবর্তে, ক্রোনটি সম্পূর্ণ হওয়ার পরে অবহিত করে), পরিবর্তনগুলি কার্যকর হবে না। কোন কাজগুলি সামনে আসবে তা খোলার জন্য ক্রনের ডাউনটাইম অবলম্বন রয়েছে, কাজটি চালানোর কারণে ঠিক দ্বিতীয়টি না হওয়া পর্যন্ত এটি "ঘুম" করতে পারে।
আমাদানন ইনক।

0

এটি আপনার সামগ্রিক স্ক্রিপ্ট সম্পাদনের সময় এবং সার্ভার সময়ের যথার্থতা থেকে নির্ভর করে।

59 23 * * * /some/script/file.sh

আপনার স্ক্রিপ্টটি ঠিক 23:59 এ চালু করবে , তবে, আপনার যদি এমন কিছু কমান্ড থাকে যা দীর্ঘ সময় ধরে কাজ করে তবে স্ক্রিপ্টের কিছু অংশ মধ্যরাতের পরে কার্যকর করা যেতে পারে।


ঠিক 23:59 এ , তাই এটি 23:59:00 থেকে 23:59:59 পর্যন্ত হতে পারে?
AL

2
আপনার স্বাভাবিক ক্রোনটিতে সেকেন্ড নেই। এই অতিরিক্ত 59 সেকেন্ড পেতে আপনাকে আপনার কোডের শীর্ষে 'ওয়েট (59)' যুক্ত করতে হবে।
হেনরির বিড়াল

4
@AL অনুশীলনে, আমি সর্বদা এটি xx: xx: 00 বা xx: xx: 01 এ চালিত হতে দেখেছি, তবে ভারী বোঝার সিস্টেমে কোনও প্রতিশ্রুতি নেই এবং হতে পারে না।
hobbs
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.