我知道 bash 中有一个 usleep 命令。这是“忙碌”睡眠还是“阻塞”睡眠?或者这会给其他进程腾出时间?
答案1
这可能实际上不属于 Server Fault(尽管我不确定它属于哪个站点),但无论如何这里有一个答案:
bash shell 没有内置usleep
命令(也没有内置sleep
命令)。 sleep
是一个标准程序在 Unix 系统上,无论运行哪个 shell 都可以使用。 usleep
似乎是由 RedHat 人员编写的程序,可能只存在于 RedHat 相关发行版(RHEL 及其衍生产品;Fedora)中。它似乎在 Debian 中不可用。
在任何情况下,sleep
使用usleep
标准sleep()
和usleep()
系统调用,它们会暂停程序执行指定的时间[0](使它们“阻塞”),并且在睡眠期间不使用任何 CPU 时间(使它们不是“忙碌的”)。
[0] 由于内核调度程序的工作方式,实际上并不能保证时间量与请求的时间量完全一致。通常的保证是它将休眠至少请求的时间。对于整数持续时间来说这不是问题sleep()
,因为方差将远小于一秒,但usleep()
持续时间(和分数sleep()
持续时间)可能最终不准确。
答案2
bash 中没有usleep
命令。usleep: command not found
在 bash 4.3.11 中,也没有在变更日志...