8

如何在 bash 中进行短暂的延迟(不到一秒)?sleep 命令中的最小时间单位是 1 秒。我在 SunOS 5.10 中使用 bash 3.0。

4

6 回答 6

7

我不知道这是在哪个版本中实现的,但我的 sleep 版本(v6.12)接受小数。sleep 0.5作品。

如果你的程序太老了,那么一个简短的 python 或 C 程序可能是你唯一的解决方案。

于 2011-10-13T17:01:01.393 回答
4

SunOS (Solaris) 默认可能没有安装 GNU 工具。您可以考虑安装它们。它们也有可能已经安装在您的系统中,也许在您的默认目录中不存在的某个目录中$PATH。GNUsleep是 coreutils 包的一部分。

如果你有 Perl,那么这个:

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

应该休眠 500000 微秒(0.5 秒)——但调用 perl 的开销很大。

为了最小化开销,我会编写一个小的 C 程序来调用usleep()nanosleep(). 请注意,usleep()可能无法处理大于 1 秒的间隔。

于 2011-10-13T17:29:47.607 回答
1

将此写入“usleep.c”

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

并输入

make usleep
./usleep 1000000
于 2013-03-21T15:52:23.860 回答
0

您是否尝试过查看手册页?它应该有一种方法可以延迟不到一秒,我现在不是 Linux 机器,所以无法为你查找。

于 2011-10-13T17:01:13.180 回答
0

您可以使用睡眠。这是手册页的链接:http: //linuxmanpages.com/man1/usleep.1.php

于 2011-10-13T17:02:29.187 回答
0

一个非常非常简单的 pythonesque 以十进制秒小数表示。它不是很精确,并且对命令行参数没有错误检查

#!/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))
于 2013-09-17T12:49:42.640 回答