Bash: как сделать короткую задержку? - PullRequest
8 голосов
/ 13 октября 2011

Как сделать небольшую задержку (менее секунды) в bash? Наименьшая единица времени в команде сна составляет 1 сек. Я использую bash 3.0 в SunOS 5.10.

Ответы [ 6 ]

7 голосов
/ 13 октября 2011

Я не знаю, в какой версии это было реализовано, но моя версия sleep (v6.12) принимает десятичные дроби. sleep 0.5 работает.

Если у вас для этого слишком много лет, короткая программа на Python или C, вероятно, будет вашим единственным решением.

4 голосов
/ 13 октября 2011

В SunOS (Solaris), вероятно, не установлены инструменты GNU по умолчанию. Вы можете рассмотреть возможность их установки. Также возможно, что они уже установлены в вашей системе, возможно, в какой-то директории, которая не входит в вашу стандартную $PATH. GNU sleep является частью пакета coreutils.

Если у вас есть Perl, то это:

perl -MTime::HiRes -e 'Time::HiRes::usleep 500000'

должно спать 500 000 микросекунд (0,5 секунды), но накладные расходы на вызов perl существенны.

Для минимальных издержек я бы написал небольшую программу на C, которая вызывает usleep() или nanosleep(). Обратите внимание, что usleep() может не обрабатывать интервалы, превышающие 1 секунду.

1 голос
/ 21 марта 2013

Напишите это в "usleep.c"

#include <unistd.h>
#include <stdlib.h>
int main(int argc, char **argv) {
    usleep( atol( argv[1] ) );
}

И введите

make usleep
./usleep 1000000
0 голосов
/ 17 сентября 2013

Очень-очень-очень просто питонское уснувшее в десятичных долях секунды. Это не очень точно, и нет проверки ошибок в аргументах командной строки

#!/usr/bin/python
import sys
import time

if len(sys.argv) == 1:
    sleepTime = 1.0
else:
    sleepTime = str(sys.argv[1])

time.sleep(float(sleepTime))
0 голосов
/ 13 октября 2011

Вы можете использовать usleep. Вот ссылка на справочную страницу: http://linuxmanpages.com/man1/usleep.1.php

0 голосов
/ 13 октября 2011

Вы пробовали просматривать страницы руководства? У него должен быть способ сделать задержку менее секунды, сейчас я не Linux-машина, поэтому не могу ее найти.

...