【发布时间】:2010-12-15 16:29:02
【问题描述】:
我有一个 bash 脚本,它在循环中执行一些并行处理。我不希望并行进程使 CPU 达到峰值,所以我使用了 sleep 命令。这是一个简化版本。
(虽然是真的;睡觉 99999;完成)&所以我在 bash 提示符下执行上述行并得到如下内容:
[1] 12345
其中[1] 是作业号,12345 是 while 循环的进程 ID (pid)。我做了一个kill 12345 并得到:
看起来整个脚本已终止。但是,我执行ps aux|grep sleep 并发现 sleep 命令仍然很强大,但有自己的 pid!我可以杀死sleep,一切似乎都很好。但是,如果我要先终止睡眠,while 循环会启动一个新的sleep pid。这让我很惊讶,因为睡眠与 while 循环不平行。循环本身是单一的执行路径。
所以我有两个问题:
- 为什么 sleep 命令有自己的进程 ID?
- 如何轻松终止 while 循环和睡眠?
【问题讨论】:
标签: linux bash process-control