Bash:如何短暂延迟?

时间:2011-10-13 16:57:41

标签: bash solaris sunos

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

6 个答案:

答案 0 :(得分:7)

我不知道这是什么版本的实现,但我的睡眠版本(v6.12)接受小数。 sleep 0.5有效。

如果你的年龄太大,那么短的python或C程序可能是你唯一的解决方案。

答案 1 :(得分:4)

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

如果您有Perl,那么:

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

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

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

答案 2 :(得分:1)

将此内容写入“usleep.c”

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

然后输入

make usleep
./usleep 1000000

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

#!/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))