这是一个小文件,它会休眠 10 秒然后回显。
#!/bin/bash
sleep 10
echo $$
当我使用 ctrl-z 执行脚本并./test
在 3 秒左右暂停后,我看到与执行相对应的作业和进程组已停止。然而,如果我运行fg
超过 10 秒,shell 会立即回显到终端。为什么即使我停止工作后睡眠过程仍在继续?
答案1
为什么即使我停止工作后睡眠过程仍在继续?
事实并非如此;没有“活跃”的睡眠。 sleep 的作用是告诉操作系统:
请暂停此任务,并在 10 秒后重新激活它
因此,倒计时的任务不是您的任务,而是操作系统中的计时器。当您使用 ctrl-z 暂停任务时,它很高兴地继续运行。
这正是我所期望的行为——毕竟,在暂停状态下睡得更久有什么意义呢?在这两个州,您都没有被安排,“两次等待”也不是问题。