স্লিপ কমান্ড ব্যতীত প্রতি 30 সেকেন্ডে ক্রোন জব চালানো কি সম্ভব?
স্লিপ কমান্ড ব্যতীত প্রতি 30 সেকেন্ডে ক্রোন জব চালানো কি সম্ভব?
উত্তর:
যদি আপনার টাস্কটি ঘন ঘন চালানোর প্রয়োজন হয় তবে ক্রোন হল ভুল সরঞ্জাম। এই কাজটি যে ঘন ঘন কাজগুলি ঘন ঘন প্রবর্তন করে না সেদিকেও, যদি কাজটি লঞ্চগুলির মধ্যে ব্যবধানের চেয়ে বেশি সময় নেয় তবে আপনি কিছু গুরুতর সমস্যার ঝুঁকিও নিতে পারেন। আপনার কার্যটি ডেমোনাইজ করতে এবং অবিচ্ছিন্নভাবে চালনার জন্য পুনর্লিখন করুন, তারপরে প্রয়োজনে ক্রোন থেকে এটি চালু করুন (এটি নিশ্চিত করে যে এটি ইতিমধ্যে চালু থাকলে এটি পুনরায় চালু হবে না)।
run-one
কোনও প্রোগ্রামটি নিশ্চিত করতে ব্যবহার করতে পারেন / এমনকি কোনও পিএইচপি স্ক্রিপ্ট কোনও সদৃশ উদাহরণ শুরু করছে না। sudo apt-get install run-one
এবং এটিকে কল করুনrun-one <normal command>
লিনাক্স কমান্ডটির সর্বাধিক সৃজনশীল অপব্যবহারের জন্য প্রার্থী :
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
। দ্বিগুণ বৃহত্তর কারণে আউটপুট পূর্ববর্তী সামগ্রীর ওভাররাইটের পরিবর্তে প্রতিটি অনুরোধে ফাইলটিতে যুক্ত হয়।সম্পাদনা করুন :
সম্ভবত অন্য কোনও জিনিস যা অপব্যবহার করা হতে পারে (বা সম্ভবত এটি একটি বৈধ ব্যবহার) সিস্টেমড টাইমার।
ক্রোন প্রতিস্থাপন এবং ক্রোন বনাম সিস্টেমড টাইমার হিসাবে সিস্টেমড / টাইমারগুলি দেখুন ।
আমি শীঘ্রই একটি উদাহরণ পোস্ট করার চেষ্টা করব।
&
কমান্ড ব্যাকগ্রাউন্ডে রান করতে, কমান্ড প্রম্পটে অবিলম্বে নিয়ন্ত্রণ ফিরে ঘটায়। ব্যবহার nohup
কমান্ড পশ্চাদপটে করা প্রক্রিয়া (এই ক্ষেত্রে কারণ watch
হ্যাঙআপ সংকেত যা পাঠানো হয় উপেক্ষা করা) যখন যেমন যখন আপনি টার্মিনাল বন্ধ হিসাবে শেল প্রস্থান করে। ...
>/dev/null
ফলে আউটপুটটি বাতিল হয়ে যায় এবং nohup.out
এমন কোনও ফাইল তৈরি হওয়া বাধা দেয় যা অন্যথায় স্ট্যান্ডার্ড আউটপুট যখন টার্মিনাল হয় তখন তৈরি করা হবে।
sleep
একটি লুপ লিখতে হবে যাতে প্রক্রিয়াটি পুনরাবৃত্তি হয় (এটি watch
কি আপনার জন্য পুনরাবৃত্তি করে cron
)। আপনার এখনও প্রয়োজন হবে nohup
এবং &
। এর সাথে একটি অতিরিক্ত সমস্যা sleep
হ'ল সময় হ্রাস। --precise
বিকল্প watch
এড়াতে এই। এটি ছাড়া বা sleep
কোনও লুপ ব্যবহার করার সময়, সময় ব্যবধানে কমান্ড বা স্ক্রিপ্টটি চালাতে সময় লাগবে যাতে প্রতিটি রান পরে এবং পরবর্তী সময়ে হয় ...
ক্রোন প্রতি মিনিটে জাগ্রত করার জন্য ডিজাইন করা হয়েছে, তাই কিছু হ্যাকিং ছাড়া এটি করা সম্ভব নয়, উদাহরণস্বরূপ আপনার ঘুমের মতো ঘুম।
* * * * * /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
আপনি এটি তৃতীয় পক্ষের সফ্টওয়্যার দিয়ে করতে পারেন।
একটি বিকল্প যা আমার পক্ষে ভাল কাজ করেছে তা হল ঘন ঘন ক্রোন ron
এটি মিলিসেকেন্ড যথার্থতার অনুমতি দেয় এবং এটি আপনাকে বর্তমানের উপস্থিতি না হওয়া পর্যন্ত পরবর্তী কার্যকরকরণ স্থগিত করার বিকল্প দেয় ..
আমার বেশ কয়েকটি উদ্বেগ থাকবে:
(১) কখনও কখনও কোনও সিস্টেম ব্যস্ত হয়ে পড়ে এবং ৩০ শে দ্বিতীয় পয়েন্টে ঠিক কিছু শুরু করতে পারে না, তখনই সম্ভব হয় যে একই সময়ে আপনি একটি কাজ চালাচ্ছেন অন্য কাজটি পপ হয়ে যাবে এবং তারপরে আপনার ২ (বা ততোধিক) কাজ একই রকম হবে জিনিস। স্ক্রিপ্টের উপর নির্ভর করে এখানে কিছু উল্লেখযোগ্য হস্তক্ষেপ হতে পারে। সুতরাং, এই জাতীয় স্ক্রিপ্টে কোডিংয়ে এমন কিছু কোড থাকা উচিত যা নিশ্চিত করে যে প্রদত্ত স্ক্রিপ্টিংয়ের কেবলমাত্র একটি উদাহরণ একই সময়ে চলছে।
(২) স্ক্রিপ্টটিতে সম্ভবত প্রচুর ওভারহেড থাকতে পারে এবং আপনি যেভাবে চান তার চেয়ে বেশি সিস্টেমের সংস্থান গ্রহণ করতে পারে। আপনি যদি সিস্টেমের প্রচুর ক্রিয়াকলাপের বিরুদ্ধে প্রতিযোগিতা করে থাকেন তবে এটি সত্য।
সুতরাং কোনও পোস্টার যেমন লিখেছেন, এক্ষেত্রে আমি অতিরিক্ত প্রসেস নিয়ে চলমান একটি ডিমন চালানোর বিষয়টি গুরুত্ব সহকারে বিবেচনা করব এবং এটির কাজটি যদি আপনার ক্রিয়াকলাপের জন্য তাত্পর্যপূর্ণ থাকে তবে তা চলমান থাকে তা নিশ্চিত করার জন্য।
ক্রোন এন্ট্রি:
* * * * * 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
কমান্ড হত্যাএকটি সমাধান, যদি এটি আপনার নিজস্ব স্ক্রিপ্টের জন্য হয় বা আপনি এটি মোড়ানো করতে পারেন:
ডেমন নির্মাণ ও নিরীক্ষণের চেয়ে মাথাব্যাথা কম।
* আপনি যদি পিএইচপি ব্যবহার করেন তবে ক্লিয়ারস্ট্যাটচে () মনে রাখবেন।