Answers:
bash
内置的和GNU sleep
行为。POSIXly,sleep
仅需要将整数理解为秒
已经有两个很好的答案,但我想扩展一点。将以下命令复制并粘贴到您的终端中:
$ 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
我们可以使用以下方法:如何确定“睡眠”中剩余的时间?命令:
$ 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
需要根据链接将@ fixit7 复制到您的~/.bashrc
文件中。您也可以将代码放入bash脚本文件中。
命令睡眠总是以秒为单位。您可以使用(((7x60)+30)秒,然后输入以下内容:
睡觉450
sleep $((60*7))
可以在几分钟内使用