gpt4 book ai didi

linux - Sleep in a while 循环获取自己的 pid

转载 作者:IT王子 更新时间:2023-10-29 00:59:20 28 4
gpt4 key购买 nike

我有一个 bash 脚本,它在一个循环中执行一些并行处理。我不希望并行进程占用 CPU,所以我使用了 sleep 命令。这是一个简化版本。

(while true;do sleep 99999;done)&

所以我从 bash 提示符下执行上面的行并得到如下内容:[1] 12345

其中 [1] 是作业编号,12345 是 while 循环的进程 ID (pid)。我执行 kill 12345 并得到:

[1]+  Terminated              ( while true; do    sleep 99999;done )

看起来整个脚本都被终止了。但是,我执行了 ps aux|grep sleep 并发现 sleep 命令仍然有效,但有自己的 pid!我可以终止 sleep 并且一切看起来都很好。但是,如果我要先终止 sleep ,则 while 循环会启动一个新的 sleep pid。这让我很惊讶,因为 sleep 与 while 循环不平行。循环本身是单一的执行路径。

所以我有两个问题:

  1. 为什么 sleep 命令有自己的进程 ID?
  2. 如何轻松终止 while 循环和 sleep ?

最佳答案

  1. Sleep 有自己的 PID 因为它是一个正在运行的进程,只是在等待。试试 which sleep 看看它在哪里。
  2. 您可以使用ps -uf 查看您系统上的进程树。从那里您可以确定 sleep 的 shell(运行循环的那个)的 PPID(父 PID)是什么。

关于linux - Sleep in a while 循环获取自己的 pid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452299/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com