小编Ron*_*Ron的帖子

后台进程如何知道自己的PID?

我在 RH Linux 系统上使用 bash。

通常,您可以使用变量 $$ 获得自己的 PID。但是,如果脚本将其自己的功能之一作为后台进程运行 - 这将不起作用;使用 $$ 时,所有在后台运行的函数都会获取父脚本的 PID。

例如,这是一个测试脚本:

    /tmp/test:
    #!/bin/bash
    echo "I am $$"
    function proce {
      sleep 3
      echo "$1 :: $$"
    }

    for x in aa bb cc; do
      eval "proce $x &"
      echo "Started: $!"
    done
Run Code Online (Sandbox Code Playgroud)

执行时:

    /tmp$ ./test
    I am 5253
    Started: 5254
    Started: 5256
    Started: 5258
    /tmp$ aa :: 5253
    bb :: 5253
    cc :: 5253
Run Code Online (Sandbox Code Playgroud)

所以 - 父脚本 (/tmp/test) 作为 PID 5253 执行并用 PID 5254、5256 和 5258 …

bash process background-process

5
推荐指数
2
解决办法
3092
查看次数

标签 统计

background-process ×1

bash ×1

process ×1