linux bash 睡眠 时间,linux – 如何以bash或ksh睡眠一毫秒

Bash具有“可加载”睡眠,支持小数秒,并消除了外部命令的开销:

$cd bash-3.2.48/examples/loadables

$make sleep && mv sleep sleep.so

$enable -f sleep.so sleep

然后:

$which sleep

/usr/bin/sleep

$builtin sleep

sleep: usage: sleep seconds[.fraction]

$time (for f in `seq 1 10`; do builtin sleep 0.1; done)

real 0m1.000s

user 0m0.004s

sys 0m0.004s

缺点是可能无法为您的bash二进制文件提供可加载项,因此您需要自己编译它们(尽管在Solaris上它不一定像上面那么简单).

从bash-4.4(2016年9月)开始,所有可加载项现在默认在支持它的平台上构建和安装,尽管它们构建为单独的共享对象文件,并且没有.so后缀.除非你的发行版/操作系统做了一些创意,否则你应该能够做到:

[ -z "$BASH_LOADABLES_PATH" ] &&

BASH_LOADABLES_PATH=$(pkg-config bash --variable=loadablesdir 2>/dev/null)

enable -f sleep sleep

(手册页暗示BASH_LOADABLES_PATH是自动设置的,我发现4.4.12中的官方发行版不是这种情况.如果设置正确,你只需要根据需要启用-f filename commandname.)

如果这不合适,下一个最简单的事情是从GNU coreutils构建或获取睡眠,这支持所需的功能. POSIX sleep命令是最小的,较旧的Solaris版本仅实现了该命令. Solaris 11 sleep确实支持小数秒.

作为最后的手段,您可以使用perl(或任何其他必须提交的脚本),并注意初始化解释器可能与预期的睡眠时间相当:

$perl -e "select(undef,undef,undef,0.1);"

$echo "after 100" | tclsh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值