作业停止后睡眠进程继续

作业停止后睡眠进程继续

这是一个小文件,它会休眠 10 秒然后回显。

#!/bin/bash
sleep 10
echo $$

当我使用 ctrl-z 执行脚本并./test在 3 秒左右暂停后,我看到与执行相对应的作业和进程组已停止。然而,如果我运行fg超过 10 秒,shell 会立即回显到终端。为什么即使我停止工作后睡眠过程仍在继续?

答案1

为什么即使我停止工作后睡眠过程仍在继续?

事实并非如此;没有“活跃”的睡眠。 sleep 的作用是告诉操作系统:

请暂停此任务,并在 10 秒后重新激活它

因此,倒计时的任务不是您的任务,而是操作系统中的计时器。当您使用 ctrl-z 暂停任务时,它很高兴地继续运行。

这正是我所期望的行为——毕竟,在暂停状态下睡得更久有什么意义呢?在这两个州,您都没有被安排,“两次等待”也不是问题。

相关内容