Відповіді:
Надаючи два чи більше аргументів, зробіть паузу на кількість часу, визначену сумою їх значень .
Так:
sleep 7m 30s
bash
вбудована sleep
поведінка та GNU . POSIXly sleep
потрібно лише для розуміння цілих чисел як секунд
Вже є два чудових відповіді, але я хотів би трохи розширити. Скопіюйте та вставте команду нижче у свій термінал:
$ sleep 3d 5h 7m 30.05s &
[1] 7321
Це запустить другий процес, який буде спати 3 дні, 5 годин, 7 хвилин і 30,05 секунди. Ідентифікатор процесу (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
потрібно скопіювати у ваш ~/.bashrc
файл за посиланням. Ви також можете помістити код у файл скрипту bash.
Командний сон завжди рахується за секунди. Ви можете використовувати ((7x60) +30) секунд, а потім просто ввести:
сон 450
sleep $((60*7))
можна було використати хвилин