当make
从外壳程序运行命令(在大型项目上)时,可以键入Ctrl-Z来停止该过程并返回到外壳程序。随后,我可以运行fg
以继续该过程。
我正在尝试编写一个shell脚本来自动执行此操作(特别是每隔几秒钟检查一次我的CPU温度,并在温度过高时停止该过程,因为我的计算机容易过热)。我的第一次尝试是这样的(简化的):
make &
subpid="$!"
sleep 2
# If the CPU temperature is too high...
kill -STOP "$subpid"
sleep 2
# If the CPU temperature has dropped to safe levels...
kill -CONT "$subpid"
wait "$subpid"
不幸的是,这没有用。向该进程发送SIGSTOP不会暂停它(通过继续将输出发送到终端可以明显看出这一点)。我make &
在命令行中运行,发送了SIGSTOP,并使用ps
;检查了进程状态。它被列为已停止(并在我发送SIGCONT时再次启动),但它仍在喷射输出并提高核心温度!使用Ctrl-Z停止它从来没有这个问题,但是我不知道如何在脚本中做到这一点。
是什么使Ctrl-Z与有所不同kill -STOP
,以及如何在Shell脚本中获得前者的行为?
make
正在递归运行。实际上,我认为它有多个层次。