ฉันรู้วิธีใช้ sleep 5m เป็นเวลา 5 นาที
ฉันจะใช้งานเป็นเวลา 7 นาที 30 วินาทีได้อย่างไร
ฉันรู้วิธีใช้ sleep 5m เป็นเวลา 5 นาที
ฉันจะใช้งานเป็นเวลา 7 นาที 30 วินาทีได้อย่างไร
คำตอบ:
จากmanpage :
ป.ร. ให้ไว้สองคนหรือมากกว่าข้อโต้แย้งหยุดสำหรับระยะเวลาที่กำหนดโดยผลรวมของค่าของพวกเขา
ดังนั้น:
sleep 7m 30s
bash
ในตัวและ GNU sleep
POSIXly sleep
ต้องเข้าใจจำนวนเต็มเป็นวินาทีเท่านั้น
อีกวิธีในการทำเช่นนี้คือ:
sleep 7.5m
man sleep
แตกต่างจากการใช้งานส่วนใหญ่ที่ต้องการ NUMBER เป็นจำนวนเต็มที่นี่ NUMBER อาจเป็นเลขทศนิยมโดยพลการ
มีสองคำตอบที่ยอดเยี่ยมอยู่แล้ว แต่ฉันต้องการที่จะขยายตัวเล็กน้อย คัดลอกและวางคำสั่งด้านล่างในเทอร์มินัลของคุณ:
$ sleep 3d 5h 7m 30.05s &
[1] 7321
ขั้นตอนนี้จะเริ่มกระบวนการที่สองซึ่งจะพักเป็นเวลา 3 วัน 5 ชั่วโมง 7 นาทีและ 30.05 วินาที ID กระบวนการ (PID) อยู่7321
ในกรณีของฉัน
เพื่อยืนยันการใช้ PID
$ 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
เราสามารถใช้สิ่งนี้: วิธีการกำหนดระยะเวลาที่เหลือใน "sleep"? คำสั่ง:
$ 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))
สามารถใช้บางสิ่งบางอย่างเช่นนาที