जवाबों:
से मैनपेज :
दो या अधिक तर्कों को देखते हुए, उनके मूल्यों के योग द्वारा निर्दिष्ट समय की मात्रा के लिए रुकें ।
इसलिए:
sleep 7m 30s
bash
बिल्ट-इन और GNU sleep
व्यवहार है। POSIXly, sleep
केवल सेकंड के रूप में पूर्णांक को समझने के लिए आवश्यक है
पहले से ही दो उत्कृष्ट उत्तर हैं, लेकिन मैं थोड़ा विस्तार करना चाहता हूं। अपने टर्मिनल में नीचे कमांड कॉपी और पेस्ट करें:
$ sleep 3d 5h 7m 30.05s &
[1] 7321
यह एक दूसरी प्रक्रिया शुरू करेगा जो 3 दिन, 5 घंटे, 7 मिनट और 30.05 सेकंड के लिए सोएगा। 7321
मेरे मामले में प्रक्रिया आईडी (पीआईडी) है ।
पीआईडी उपयोग की पुष्टि करने के लिए
$ ps aux | grep sleep
rick 7321 0.0 0.0 14356 660 pts/2 S 22:40 0:00 sleep 3d 5h 7m 30.05s
root 12415 0.0 0.0 14356 700 ? S 22:41 0:00 sleep 60
rick 12500 0.0 0.0 21292 968 pts/2 R+ 22:41 0:00 grep --color=auto sleep
पहली प्रविष्टि वह है जिसमें हम रुचि रखते हैं। दूसरी प्रविष्टि एक स्थायी कार्यक्रम के लिए है जिसे मैंने स्टार्टअप में चलाया है। तीसरी प्रविष्टि grep कमांड के लिए ही है।
अब यह देखने के लिए कि sleep
PID द्वारा उत्पन्न कमांड के लिए (सेकंड में) कितना समय शेष है 7321
हम इसका उपयोग कर सकते हैं: एक "नींद" में बचे समय की मात्रा कैसे निर्धारित करें? आदेश:
$ remaining_sleep_time 7321
277304.05
$ remaining_sleep_time 7321
277296.05
$ remaining_sleep_time 7321
277262.05
आदेश के लिए कोड आप अपनी ~/.bashrc
फ़ाइल में शामिल कर सकते हैं :
remaining_sleep_time() { # arg: pid
ps -o etime= -o args= -p "$1" | perl -MPOSIX -lane '
%map = qw(d 86400 h 3600 m 60 s 1);
$F[0] =~ /(\d+-)?(\d+:)?(\d+):(\d+)/;
$t = -($4+60*($3+60*($2+24*$1)));
for (@F[2..$#F]) {
s/\?//g;
($n, $p) = strtod($_);
$n *= $map{substr($_, -$p)} if $p;
$t += $n
}
print $t'
}
remaining_sleep_time
आपकी ~/.bashrc
फ़ाइल में कॉपी किया जाना चाहिए । आप कोड को बैश स्क्रिप्ट फ़ाइल में भी डाल सकते हैं।
कमांड नींद हमेशा सेकंड में गिना जाता है। आप ((7x60) +30) सेकंड का उपयोग कर सकते हैं और फिर बस टाइप कर सकते हैं:
450 सो जाओ
sleep $((60*7))
मिनटों के लिए इस्तेमाल किया जा सकता है