使用 sleep 进行分钟和秒数

使用 sleep 进行分钟和秒数

我知道如何使用 sleep 5m 5分钟。

我该如何使用它,比如说 7 分 30 秒?

答案1

来自手册页

给定两个或更多参数,暂停指定的时间它们的价值总和

所以:

sleep 7m 30s

答案2

另一种方法是:

sleep 7.5m

man sleep

与大多数要求 NUMBER 为整数的实现不同,这里 NUMBER 可以是任意浮点数。

答案3

已经有两个很好的答案了,但我想再扩展一下。将下面的命令复制并粘贴到您的终端中:

$ 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'
}

答案4

命令 sleep 总是以秒为单位计算。您可以使用 ((7x60)+30) 秒,然后简单地输入:

睡眠 450

相关内容