ব্যবহার না করে বিলম্ব কমান্ডের জন্য কোনও বিকল্প, বিকল্প বা বাশ কৌশল আছে 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
দিয়ে bashbuiltins, আপনি করতে পারেন:
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 বাইট) ধারণ করে। সুতরাং read10 সেকেন্ডের সময় এটি যতটা সম্ভব পড়বে। ধন্যবাদ, 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?