ব্যবহার না করে বিলম্ব কমান্ডের জন্য কোনও বিকল্প, বিকল্প বা বাশ কৌশল আছে sleep
? উদাহরণস্বরূপ, ঘুম ব্যবহার না করে নীচের কমান্ডটি সম্পাদন করা:
$ sleep 10 && echo "This is a test"
at
এটি এক হতে পারে তবে আমি কোনও ব্যবহারের উদাহরণ পাই না।
ব্যবহার না করে বিলম্ব কমান্ডের জন্য কোনও বিকল্প, বিকল্প বা বাশ কৌশল আছে sleep
? উদাহরণস্বরূপ, ঘুম ব্যবহার না করে নীচের কমান্ডটি সম্পাদন করা:
$ sleep 10 && echo "This is a test"
at
এটি এক হতে পারে তবে আমি কোনও ব্যবহারের উদাহরণ পাই না।
উত্তর:
আপনার বিকল্প রয়েছে sleep
: সেগুলি at
এবং cron
। sleep
এগুলির বিপরীতে আপনাকে যে সময় চালানোর প্রয়োজন হয় তা সরবরাহ করা প্রয়োজন।
atd
নির্বাহ করে পরিষেবাটি চলমান রয়েছে তা নিশ্চিত করুন service atd status
।
এখন ধরা যাক তারিখটি 11:17 am ইউটিসি; যদি আপনি 11:25 ইউটিসি কমান্ড নির্বাহ করতে হবে, সিনট্যাক্স হল: echo "This is a test" | at 11:25
।
এখন মনে রাখবেন যে atd
ডিফল্টরূপে কাজ সমাপ্তি লগ করা হবে না। আরও তথ্যের জন্য এই লিঙ্কটি উল্লেখ করুন । আপনার অ্যাপ্লিকেশনটির নিজস্ব লগিং রয়েছে এটি ভাল।
আরও তথ্যের জন্য আপনি এখানে কাজের সময় নির্ধারণ করতে পারেন cron
: man cron
এর বিকল্পগুলি দেখতে বা crontab -e
নতুন চাকরি যুক্ত করতে। /var/log/cron
কাজের উপর কার্যকরকরণ সম্পর্কিত তথ্যের জন্য চেক করা যায়।
এফওয়াইআই sleep system call
বর্তমান সম্পাদন স্থগিত করে এবং তত্ক্ষণিকভাবে এটির পক্ষে যুক্তিতর্কটি নির্ধারণ করে।
সম্পাদনা করুন:
@ গাইউস যেমন উল্লেখ করেছেন, আপনি কমান্ডের জন্য কয়েক মিনিট সময়ও যোগ করতে পারেন ut তবে সময় at
বলতে সময় দেয় 12:30:30
এবং এখন আপনি শিডিয়ুলারটি চালিয়ে যান now +1 minutes
। যদিও 1 মিনিট, যা 60 সেকেন্ডে অনুবাদ করা হয়েছে তা নির্দিষ্ট করা হয়েছিল, কাজটি কার্যকর করার জন্য at
অপেক্ষা করে না 12:31:30
, বরং এটি কাজটি সম্পাদন করে 12:31:00
। সময় ইউনিট হতে পারে minutes, hours, days, or weeks
। আরও পড়ুনman at
উদাহরণ: echo "ls" | at now +1 minutes
দিয়ে bash
builtins, আপনি করতে পারেন:
coproc read -t 10 && wait "$!" || true
ব্যবহার না করে 10 সেকেন্ডের জন্য ঘুমাতে sleep
। coproc
যাতে করা হয় read
এর stdin একটি নল যেখানে কিছুই কি কখনো থেকে বের হবে। || true
কারণ wait
প্রস্থান স্থিতি একটি সিগালআরএম বিতরণ প্রতিফলিত করবে যা errexit
বিকল্পটি সেট করা থাকলে শেলটি প্রস্থান করতে পারে ।
অন্যান্য শেলগুলিতে:
mksh
এবং ksh93
আছে sleep
বিল্ট-ইন, অন্য কিছু ব্যবহার (যদিও তারা উভয় এছাড়াও সমর্থন করে কোনো লাভ read -t
)।
zsh
এছাড়াও সমর্থন করে read -t
, তবে চারদিকে বিল্টিন র্যাপারও রয়েছে select()
, যাতে আপনি এটি ব্যবহার করতে পারেন:
zmodload zsh/zselect
zselect -t 1000 # centiseconds
আপনি যদি চান তা যদি ইন্টারেক্টিভ শেল সেশন থেকে শিডিয়ুল জিনিস চালানো হয় তবে zsh/sched
মডিউলটিওzsh
দেখুন ।
read -t 10 < /dev/zero || true
?
read
সিলেক্ট (2) বা অনুরূপ কিছু ব্যবহার করে প্রয়োগ করা হবে (যা বোঝায় টাইম আউট এই প্রশ্নের উত্তম উত্তর হবে)। আমি আপনার বিরোধিতা না করে অবাক করে দিচ্ছি, তবে আপনি কি আরও আলোচনা করতে পারেন?
/dev/zero
এমন একটি ফাইল যা অসীম পরিমাণে ডেটা (NUL বাইট) ধারণ করে। সুতরাং read
10 সেকেন্ডের সময় এটি যতটা সম্ভব পড়বে। ধন্যবাদ, bash
যার ক্ষেত্রে NUL বাইটগুলি তার ভেরিয়েবলগুলিতে সঞ্চয় করতে সমর্থন করে না, এটি কোনও স্মৃতি ব্যবহার করবে না, তবে এটি এখনও সিপিইউ সংস্থানগুলিকে হোগ করবে।
/dev/stdout
ডিভাইস হবে, সুতরাং এর পার্শ্ব প্রতিক্রিয়া হবে (যেমন পটভূমিতে চালানো থাকলে স্ক্রিপ্টটি থামানো) এবং যদি ব্যবহারকারী চাপুন উদাহরণস্বরূপ প্রবেশ করে তবে ফিরে আসবে। read -t 10 /dev/stdout | :
লিনাক্সে কাজ করবে তবে কেবল লিনাক্সে, coproc
ওএস নির্বিশেষে কাজ করা উচিত।
অন্য কিছু ধারণা।
top -d10 -n2 >/dev/null
vmstat 10 2 >/dev/null
sar 10 1 >/dev/null
timeout 10s tail -f /dev/null
ব্যাশ অন্তর্নির্মিত চলক $SECONDS
এবং একটি ব্যস্ত লুপ ব্যবহার করে:
for((target=$((SECONDS + 10)); SECONDS < target; true)); do :; done
bash
কারণে ; zsh
এবং mksh
একই রকম সমস্যা থাকলেও পরে ঠিক করা হয়েছে)
বইয়ের প্রাচীনতম কৌশল:
read && echo "This is a test"
শুধু আঘাত Enterএবং এটি অবিরত থাকবে!
sleep
) এবং ছাড়াই সমমানের বিকল্পের জন্য জিজ্ঞাসা করে। সুতরাং read
বিশ্লেষণ করবেন না, দুঃখিত। ;)
--- press «enter» to continue ---
;-)
বেসিক চলমান মাইক্রো কম্পিউটারের দিনগুলিতে, দেরি সাধারণত একটি খালি লুপ দিয়ে সম্পন্ন করা হত:
FOR I = 1 TO 10000:NEXT
শেল স্ক্রিপ্টে বিলম্ব সন্নিবেশ করতে একই নীতিটি ব্যবহার করা যেতে পারে:
COUNTER=0; while [ $COUNTER -lt 10000 ]; do :; let COUNTER=COUNTER+1; done
অবশ্যই, এই পদ্ধতির সমস্যাটি হ'ল বিলম্বের দৈর্ঘ্য তার প্রসেসরের গতি অনুসারে মেশিন থেকে মেশিনে পরিবর্তিত হবে (বা এমনকি বিভিন্ন লোডের অধীনে একই মেশিনে)। বিপরীতে sleep
, এটি সম্ভবত আপনার সিপিইউ (বা এর কোনও একটির) সর্বাধিক আউটও করবে।
কোনও অন্তর্নির্মিত নেই, এটি একই রকম করে sleep
(যতক্ষণ না sleep
অন্তর্নির্মিত না হয়)। তবে আরও কিছু কমান্ড রয়েছে যা অপেক্ষা করবে।
কয়েকটি অন্তর্ভুক্ত।
at
এবং cron
: একটি নির্দিষ্ট সময়ে কার্য শিডিউল করতে ব্যবহৃত।
inotifywait
: কোনও ফাইলের জন্য অপেক্ষা করতে বা ফাইলগুলি সংশোধন / অপসারণ / যুক্ত / ইত্যাদি ব্যবহার করতে ব্যবহৃত হয়
at
?
cron
স্টোর টাস্ক গুলো crontab
ঠিক আছে? কোথায় at
নির্ধারিত ডেটা সঞ্চয় করে?
উইন্ডোজ এবং ব্যাচস ল্যান্ড থেকে একটি ক্লাসিক:
ping -c 11 localhost >/dev/null && echo "This is a test"
sleep
?