ইউনিক্স: নির্দিষ্ট সময় পর্যন্ত ঘুমান


12

এমন কোন (আধা) মানক ইউনিক্স কমান্ড রয়েছে যা তার কমান্ড লাইনে নির্দিষ্ট সময় অবধি ঘুমিয়ে থাকবে? অন্য কথায়, আমি sleepসময়ের সাথে পরিবর্তে জাগানোর সময় নেওয়ার মতো অনুরূপ কিছু সন্ধান করছি ।

উদাহরণ স্বরূপ: sleeptill 05:00:00

আমি কিছু কোড করতে পারি তবে ইতিমধ্যে যদি কিছু আছে তবে চাকাটি পুনরায় উদ্ভাবন করব না।

বোনাস প্রশ্ন: টাইমজোনটি (যেমন হিসাবে sleeptill 05:00:00 America/New_York) নিতে পারলে এটি দুর্দান্ত ।

সম্পাদনা আমি যা করছি তার প্রকৃতির কারণে, আমি "রান কমান্ড এ টি" সমাধানের চেয়ে "T অবধি ঘুম" খুঁজছি।

সম্পাদন করা সন্দেহ পরিহারের জন্য, আমি যদি 18:00 এ নিম্নলিখিত কমান্ড 17:00 এ ঘুম থেকে এটা বলছি, আমি এটা 23 ঘণ্টা ঘুম আশা (অথবা, কিছু কোণ দিবালোক সংরক্ষণ সময় না থাকার ক্ষেত্রে, 22 বা 24 ঘন্টা জন্য।)


আপনি ব্যবহার করতে পারেন cron, আমার ধারণা।
ববি

ধন্যবাদ, তবে উদ্দেশ্যযুক্ত ব্যবহারের জন্য এটি সত্যই- sleepমত হতে হবে ।
এনপিই

উত্তর:


18

যদি আপনি এমন কোনও ইউনিক্সে থাকেন যেটির একটি সুনির্দিষ্ট তারিখ কমান্ড রয়েছে এবং ব্যাশ ব্যবহার করছেন, আপনি সময় গণনার জন্য% s ফর্ম্যাটটি ব্যবহার করতে পারেন।

sleep $(( $(date -j 1700 +%s) - $(date +%s) ))

(1700 5PM হচ্ছে এবং -j বলার তারিখ আসলে তারিখটি সেট না করে)


(+1) পরামর্শের জন্য। যদি আমি কমান্ডটি 18:00 এ চালিত করি এবং এটি 17:00-এ জেগে উঠতে বলি, আমি আশা করি এটি 23 ঘন্টা ঘুমাবে (অথবা কোনও কোনও ক্ষেত্রে 22 বা 24 ঘন্টা দিবালোকের সঞ্চয় সময় করা উচিত) sleep দুর্ভাগ্যক্রমে এই পরামর্শটি ভেঙে গেছে। [ এটি আমার লিনাক্স সিস্টেমগুলিতে চালিত করার জন্য আমাকেও পরিবর্তন করতে -jহয়েছিল -d]]
এনপিই

7
@ অ্যাক্স: লিনাক্সে (এবং জিএনইউ তারিখ সহ অন্যান্য সিস্টেমে), আপনি পরিশীলিত তারিখের বিশদ যেমন যেমন ব্যবহার করতে পারেন date -d 'tomorrow 17:00'
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

3
@ এনপিই, বিটিডব্লিউ, অনুস্মারক-বিভাগ ব্যবহার করে কেউ ক্ষতিপূরণ দিতে পারবেন: echo $(( ($(date -d "3:00" +%s) - $(date +%s) + (60*60*24)) % (60*60*24) ))(ডিএসটি-পরিবর্তনগুলি নিয়ে কিছু সমস্যা থাকতে পারে)
এইচভিআর

13

এটি সম্পর্কে কীভাবে (ডাব্লু 100 টি এবং গিলের ধারণাগুলি একটি ফাংশনে সংযুক্ত করে)?

function sleep_until {
  seconds=$(( $(date -d "$*" +%s) - $(date +%s) )) # Use $* to eliminate need for quotes
  echo "Sleeping for $seconds seconds"
  sleep $seconds
}

ব্যবহার:

sleep_until 8:24
Sleeping for 35 seconds

sleep_until '23:00'
Sleeping for 52489 seconds

sleep_until 'tomorrow 1:00'
Sleeping for 59682 seconds

9

লিনাক্স / ইউনিক্স atকমান্ডটি দেখুন । 5am ​​উদাহরণ ব্যবহার করে:

at 05:00 some_command

এটি সময় অঞ্চলগুলিকে সমর্থন করে:

GMT, UCT বা ZULU (কেস সংবেদনশীল) এর টাইমজোন নামটি সময়টি সমন্বিত ইউনিভার্সাল টাইমে রয়েছে তা নির্দিষ্ট করতে অনুসরণ করতে পারে। অন্যান্য সময় অঞ্চলগুলি টিজেড এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে নির্দিষ্ট করা যেতে পারে।


(+1) পরামর্শের জন্য। দুর্ভাগ্যক্রমে, এটি আমার কর্মপ্রবাহে স্বাভাবিকভাবে ফিট করে না। আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা ক্রমানুসারে প্রচুর পরিমাণে জিনিস চালায় এবং আমি নিশ্চিত করতে চাই যে নির্দিষ্ট সময় পর্যন্ত নির্দিষ্ট পদক্ষেপগুলি লাথি না দেওয়া হয়। এটি অবশ্যই ব্যবহার করে cronবা এমন কিছুতে রূপান্তরিত হতে পারে atতবে এটি পরিচালনা করতে ব্যথা হবে। এই কারণেই আমি sleepপছন্দমতো কিছু খুঁজছি । আপাতত আমার নিজের লেখা আছে।
এনপিই

আহ, সুতরাং আপনি একটি ব্লকিং সময়সূচী চান। প্রক্রিয়াটির প্রতিটি পদক্ষেপের জন্য কোনও স্টেট ফাইল রাখার উপায় নেই কেন?
জেরেমি এল

করতে পারে, তবে এটি হওয়া দরকার বলে মনে হয় এটি কিছুটা জটিল বলে মনে হচ্ছে। পদক্ষেপগুলি হ'ল পৃথক কমান্ড, এবং শেল স্ক্রিপ্ট যা কার্যপ্রবাহকে অর্কেস্টেট করে। স্ক্রিপ্টে "সন্ধ্যা 5 টা অবধি ঘুমাতে" সক্ষম হওয়া আমার পক্ষে সত্যই প্রয়োজন।
এনপিই

সেক্ষেত্রে ডাব্লু00 টির উত্তর আপনার পরে কী হবে তা অবিকল হতে পারে।
জেরেমি এল

হ্যাঁ, এটি অবশ্যই সঠিক আত্মায় রয়েছে। দুঃখের বিষয়, এটি কিছু গুরুত্বপূর্ণ (আমার কাছে) ক্ষেত্রে ভেঙে যায় এবং সময় অঞ্চলগুলি করে না।
এনপিই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.