আমি কি প্রতি মিনিটের চেয়ে আরও ঘন ঘন ক্রোন জব চালাতে পারি?


44

স্লিপ কমান্ড ব্যতীত প্রতি 30 সেকেন্ডে ক্রোন জব চালানো কি সম্ভব?


4
আপনার উদ্দেশ্য কি? ক্রোন কি এটির জন্য সঠিক সরঞ্জাম?
ম্যানুয়েল ফক্স

ভাল প্রশ্ন.
প্রীত সংঘ

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

উত্তর:


36

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


18
অংশটি "যদি কাজটি লঞ্চগুলির মধ্যে ব্যবধানের চেয়ে বেশি সময় নেয় তবে আপনি কিছু গুরুতর সমস্যার ঝুঁকিও নিতে পারেন।" সত্য নয় এবং এটি যদি হয় তবে এটি সেই কাজের জন্য প্রতি 5 মিনিট, প্রতি ঘন্টা বা প্রতি মাসে চালিত কাজের জন্য সমানভাবে প্রযোজ্য। এই সমস্যার সমাধান রয়েছে (একটি পিডফিল ব্যবহার করে বা যাই হোক না কেন এবং কাজটি চালানোর আগে ইতিমধ্যে কাজ চলছে কিনা তা যাচাই করে)। সুতরাং সমস্যাটি হ'ল ক্রোন কেবলমাত্র সেই ফ্রিকোয়েন্সিটিকে অনুমতি দেবে না, তবে এটি বলা ভুল যে প্রতি মিনিটের এক মিনিটেরও কম সময়ে কোনও কার্য সম্পাদনে অভ্যন্তরীণ কিছু ভুল রয়েছে।
ম্যাটটিও

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

2
আপনি run-oneকোনও প্রোগ্রামটি নিশ্চিত করতে ব্যবহার করতে পারেন / এমনকি কোনও পিএইচপি স্ক্রিপ্ট কোনও সদৃশ উদাহরণ শুরু করছে না। sudo apt-get install run-oneএবং এটিকে কল করুনrun-one <normal command>
কৌটন

3
উত্তরগুলি আরও নীচে শো হিসাবে, এটি বেশ ভালভাবে সম্ভব, কিছুটা হ্যাকিশ হলেও। আপনি কেন এটি ভুল করছেন? !!!! এখানে গ্রহণযোগ্য উত্তর, যখন এটি প্রশ্নের কোনও উত্তর দেয় না?
কেউ 19

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

37

লিনাক্স কমান্ডটির সর্বাধিক সৃজনশীল অপব্যবহারের জন্য প্রার্থী :

nohup watch -n 30 --precise yourprog >/dev/null &

এর yourprogসমন্বয়ে গঠিত:

date +%M.%S.%N >> yourprog.out

তারপরে yourprog.outদেখতে দেখতে:

50.51.857291267
51.21.840818353
51.51.840910204
52.21.840513307
52.51.842455224
53.21.841195858
53.51.841407587
54.21.840629676

নির্ভুলতার বেশ ভাল স্তর নির্দেশ করে ating

কমান্ডের অংশগুলির একটি ব্যাখ্যা এখানে দেওয়া হল:

  • nohup- এটি watchটার্মিনালটি প্রস্থান করার সময় প্রস্থান করা থেকে এই ক্ষেত্রে নিম্নলিখিত কমান্ডটি রাখে ।
  • watch- এই প্রোগ্রামটি বারবার একটি কমান্ড চালায়। কমান্ড থেকে সাধারণত আউটপুট প্রথম স্ক্রিনফুল প্রদর্শিত হয় প্রতিবার watchকমান্ড চালানো হয়।
  • -n 30- যে বিরতিতে কমান্ডটি চালানো উচিত। এক্ষেত্রে এটি প্রতি ত্রিশ সেকেন্ড পরে।
  • --precise- এই বিকল্পটি ছাড়াই, বিরতি সেকেন্ড পরেwatch কমান্ডটি চালায় । এটির সাহায্যে, কমান্ডের প্রতিটি সূচনা যদি সম্ভব হয় বিরতিতে শুরু হয় । উদাহরণস্বরূপ এই বিকল্পটি নির্দিষ্ট না করা থাকলে, সময়টি পরে এবং পরবর্তী সময়ে 30 সেকেন্ডেরও বেশি সময় পাতায় সময়টি কমান্ড ( ) কমান্ড চালু করতে এবং প্রয়োগ করতে সময় নেয় বলে সময় পাবে । yourprog
  • yourprog- watchকার্যকর করার জন্য প্রোগ্রাম বা কমান্ড লাইন । যদি কমান্ড লাইনে শেলের জন্য বিশেষ অক্ষর থাকে (উদাহরণস্বরূপ স্পেস বা সেমিকোলন) এটি উদ্ধৃত করা প্রয়োজন।
  • >/dev/null- বৃহত্তর-অধিক watchকোনও ফাইল দ্বারা চালিত কমান্ডের আউটপুট পুনঃনির্দেশ করে /dev/null। এই ফাইলটি এতে লেখা কোনও ডেটা বাতিল করে দেয়। এটি আউটপুটটিকে স্ক্রিনে লেখা থেকে বাধা দেয় বা, যেহেতু nohupব্যবহৃত হচ্ছে, এটি আউটপুটটিকে একটি ফাইলের কাছে পাঠানো থেকে বাধা দেয় nohup.out
  • &- watchকমান্ডটি পটভূমিতে চালিত হয় এবং নিয়ন্ত্রণটি টার্মিনাল বা মূল প্রক্রিয়াতে ফিরে আসে।

মনে রাখবেন যে nohup, আউটপুট এবং পুনর্নির্দেশের পুনঃনির্দেশটি &নির্দিষ্ট নয় watch

এখানে উদাহরণ yourprogস্ক্রিপ্টের একটি ব্যাখ্যা :

  • date- বর্তমান তারিখ এবং / অথবা সময় আউটপুট করে। এটি তাদের সেট করতে পারে।
  • +%M.%S.%N- এটি dateব্যবহারের জন্য আউটপুট বিন্যাস নির্দিষ্ট করে । %Mএটি বর্তমান মিনিট, %Sবর্তমান দ্বিতীয় এবং %Nবর্তমান ন্যানোসেকেন্ড।
  • >> yourprog.out- এটি dateকমান্ডের আউটপুট নামক কোনও ফাইলে পুনঃনির্দেশ করে yourprog.out। দ্বিগুণ বৃহত্তর কারণে আউটপুট পূর্ববর্তী সামগ্রীর ওভাররাইটের পরিবর্তে প্রতিটি অনুরোধে ফাইলটিতে যুক্ত হয়।

সম্পাদনা করুন :

সম্ভবত অন্য কোনও জিনিস যা অপব্যবহার করা হতে পারে (বা সম্ভবত এটি একটি বৈধ ব্যবহার) সিস্টেমড টাইমার।

ক্রোন প্রতিস্থাপন এবং ক্রোন বনাম সিস্টেমড টাইমার হিসাবে সিস্টেমড / টাইমারগুলি দেখুন ।

আমি শীঘ্রই একটি উদাহরণ পোস্ট করার চেষ্টা করব।


6
খাঁটি গালের জন্য আমি +1 দিচ্ছি
ম্যাট সিমন্স 14

2
এই উত্তরটি দিয়ে কিছুটা আরও ব্যাখ্যা দিয়ে ভালো লাগবে। নোহপ কমান্ডটি আমার কাছে নতুন। ইন্টারনেট আমাকে বলে যে এটি হ্যাঙ্গআপ সংকেত উপেক্ষা করা। যা এখনও আমাকে বিভ্রান্ত করে ফেলেছে।
ডনকিক্সোট

2
@ ডনকুইক্সোট: এটা জেনে রাখা গুরুত্বপূর্ণ যে আমার পুরো উত্তরটি কমান্ডটি করা কোনও প্রস্তাবিত জিনিস নয়, তাই "অপব্যবহার" শব্দের ব্যবহার। তবে দরকারী কৌশলগুলি অন্তর্ভুক্ত হওয়ায় আপনার জন্য বিষয়গুলি একটু স্পষ্ট করার জন্য আমি কয়েকটি বর্ণনা করার চেষ্টা করব। &কমান্ড ব্যাকগ্রাউন্ডে রান করতে, কমান্ড প্রম্পটে অবিলম্বে নিয়ন্ত্রণ ফিরে ঘটায়। ব্যবহার nohupকমান্ড পশ্চাদপটে করা প্রক্রিয়া (এই ক্ষেত্রে কারণ watchহ্যাঙআপ সংকেত যা পাঠানো হয় উপেক্ষা করা) যখন যেমন যখন আপনি টার্মিনাল বন্ধ হিসাবে শেল প্রস্থান করে। ...
ডেনিস উইলিয়ামসন

1
... আউটপুটটি ব্যবহার করে পুনঃনির্দেশের >/dev/nullফলে আউটপুটটি বাতিল হয়ে যায় এবং nohup.outএমন কোনও ফাইল তৈরি হওয়া বাধা দেয় যা অন্যথায় স্ট্যান্ডার্ড আউটপুট যখন টার্মিনাল হয় তখন তৈরি করা হবে।
ডেনিস উইলিয়ামসন

1
@ ডনকিক্সোট: এখন থেকে 30 সেকেন্ড নয়, প্রতি 30 সেকেন্ডে। বাকিটি আরও ক্রোন-মত হতে পটভূমিতে অপ্রচলিতভাবে চালানো উচিত। আপনি যদি ব্যবহার করতে চান তবে আপনাকে sleepএকটি লুপ লিখতে হবে যাতে প্রক্রিয়াটি পুনরাবৃত্তি হয় (এটি watchকি আপনার জন্য পুনরাবৃত্তি করে cron)। আপনার এখনও প্রয়োজন হবে nohupএবং &। এর সাথে একটি অতিরিক্ত সমস্যা sleepহ'ল সময় হ্রাস। --preciseবিকল্প watchএড়াতে এই। এটি ছাড়া বা sleepকোনও লুপ ব্যবহার করার সময়, সময় ব্যবধানে কমান্ড বা স্ক্রিপ্টটি চালাতে সময় লাগবে যাতে প্রতিটি রান পরে এবং পরবর্তী সময়ে হয় ...
ডেনিস উইলিয়ামসন

13

ক্রোন প্রতি মিনিটে জাগ্রত করার জন্য ডিজাইন করা হয়েছে, তাই কিছু হ্যাকিং ছাড়া এটি করা সম্ভব নয়, উদাহরণস্বরূপ আপনার ঘুমের মতো ঘুম।


10
* * * * * /path/to/program
* * * * * sleep 30; /path/to/program

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

#!/bin/sh

if ln -s "pid=$$" /var/pid/myscript.pid; then
  trap "rm /var/pid/myscript.pid" 0 1 2 3 15
else
  echo "Already running, or stale lockfile." >&2
  exit 1
fi

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


এটি জিজ্ঞাসা করা হয়েছে:without a sleep command
ফিলিপিকে

10
এই প্রশ্নটি
সন্ধানকারী

8

আপনি এটি তৃতীয় পক্ষের সফ্টওয়্যার দিয়ে করতে পারেন।

একটি বিকল্প যা আমার পক্ষে ভাল কাজ করেছে তা হল ঘন ঘন ক্রোন ron

এটি মিলিসেকেন্ড যথার্থতার অনুমতি দেয় এবং এটি আপনাকে বর্তমানের উপস্থিতি না হওয়া পর্যন্ত পরবর্তী কার্যকরকরণ স্থগিত করার বিকল্প দেয় ..


1
ঘন ক্রোন আমাদের জন্য খুব ভাল কাজ করেছে এবং আমাদের অনেক উত্পাদন সিস্টেমকে শক্তি দেয় powers আমাদের এটি নিয়ে কখনও সমস্যা হয়নি।
হোমার 6

2

আমার বেশ কয়েকটি উদ্বেগ থাকবে:

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

(২) স্ক্রিপ্টটিতে সম্ভবত প্রচুর ওভারহেড থাকতে পারে এবং আপনি যেভাবে চান তার চেয়ে বেশি সিস্টেমের সংস্থান গ্রহণ করতে পারে। আপনি যদি সিস্টেমের প্রচুর ক্রিয়াকলাপের বিরুদ্ধে প্রতিযোগিতা করে থাকেন তবে এটি সত্য।

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


1

এই কাজের জন্য আমার সহজ এবং প্রিয় সমাধান:

ক্রোন এন্ট্রি:
* * * * * flock -w0 /path/to/script /path/to/script

লিপি:
while true;do echo doing something; sleep 10s;done

অলস বিকল্প: :)

* * * * * flock -w0 /path/to/log watch -n 10 echo doing >> /path/to/log

অথবা

* * * * * flock -w0 /path/to/log watch -n 10 /path/to/script

অনুকূল

  • flockকমান্ডের ব্যবহার একই সময়ে একাধিক ইনস্ট্যান্স দ্বারা স্ক্রিপ্ট চালানো এড়ানো যায়। এটি বেশিরভাগ ক্ষেত্রে অত্যন্ত গুরুত্বপূর্ণ হতে পারে।
  • flockএবং watchকমান্ডগুলি বেশিরভাগ লিনাক্স ইনস্টলগুলিতে উপলব্ধ

কনস

  • এই ধরণের "পরিষেবা" বন্ধ করার জন্য দুটি পদক্ষেপ প্রয়োজন
    • ক্রোন এন্ট্রি মন্তব্য
    • স্ক্রিপ্ট বা watchকমান্ড হত্যা

2
কেউ দয়া করে কোনও লিনাক্স নবাগত - পেশাদারদের সাথে এটি ব্যাখ্যা করতে পারেন? ধন্যবাদ ..
20

@ অ্যাসভানি আমার মনে হয় আমি এই সমাধানটি পছন্দ করি তবে A20 হিসাবে আপনি কি লিনাক্স "গ্রিন" এর জন্য কিছু ব্যাখ্যা পোস্ট করতে পারেন? TY।
জোয়েলআজ

0

একটি সমাধান, যদি এটি আপনার নিজস্ব স্ক্রিপ্টের জন্য হয় বা আপনি এটি মোড়ানো করতে পারেন:

  1. শুরুর সময়টি পান এবং মনে রাখবেন।
  2. কোনও লক ফাইল, যা আপনি পরে স্পর্শ করবেন তা যদি উপস্থিত থাকে এবং script০ সেকেন্ডের জন্য স্ক্রিপ্টটি চালু না থাকে, তবে একটি দ্বিতীয় অপেক্ষা করুন এবং আবার দেখুন check (যেমন / ঘুমের সময়) *
  3. যদি লক ফাইলটি এখনও 60 সেকেন্ড বিলম্বিত হওয়ার পরে উপস্থিত থাকে, একটি বাসি লক সতর্কতা দিয়ে প্রস্থান করুন।
  4. লক ফাইলটি স্পর্শ করুন।
  5. স্ক্রিপ্ট 60 সেকেন্ডের জন্য চলমান না থাকলে, আপনার আসল কাজটি পছন্দসই ঘুমের সময়কালের সাথে লুপ করুন।
  6. লক ফাইল মুছুন।
  7. মিনিট ক্রোন হিসাবে যুক্ত করুন।
  8. বব 'স তোমার চাচা.

ডেমন নির্মাণ ও নিরীক্ষণের চেয়ে মাথাব্যাথা কম।

* আপনি যদি পিএইচপি ব্যবহার করেন তবে ক্লিয়ারস্ট্যাটচে () মনে রাখবেন।

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