这是一个初学者的问题。我想知道当sleep
命令从 bash 脚本触发时会发生什么。该作业仍会运行,但优先级较低?
答案1
通常,sleep
是个GNUsleep
程序。该程序调用 GNU 函数xnanosleep
,进而调用 Linuxnanosleep
系统调用。还有:
nanosleep() suspends the execution of the calling thread until either
at least the time specified in *req has elapsed, or the delivery of a
signal that triggers the invocation of a handler in the calling thread
or that terminates the process.
因此,根据定义,该进程并未运行(无论优先级如何),而是处于暂停状态。
测试一下:
sleep 10 & ps aux | grep $!
[1] 25682
muru 25682 0.0 0.0 7196 620 pts/13 SN 04:10 0:00 sleep 10
这进程状态是SN
:
S interruptible sleep (waiting for an event to complete)
N low-priority (nice to other users)
忽略N
,我猜一开始就是这样的。所以 的有效状态sleep
是interruptible sleep
。