Я знаю, как использовать сон 5 м в течение 5 минут.
Как я использовал бы его для, говорят 7 минут 30 секунд?
Если задано два или более аргументов, сделать паузу на время, указанное в , сумме их значений . ] blockquote>
Итак:
sleep 7m 30s
Другой способ сделать это:
sleep 7.5m
man 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'
}
Сон команды всегда рассчитывает в секундах. Вы могли использовать ((7x60) +30) секунды и затем ввести просто:
сон 450