我在 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 …