Ответы:
Из справочной страницы :
Учитывая два или более аргумента, делайте паузу на количество времени, указанное в сумме их значений .
Так:
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))
можно использовать в течение нескольких минут