Linux / Unix Bash脚本如何知道自己的PID?

时间:2010-03-22 15:51:30

标签: bash scripting pid

我在Bash中有一个名为Script.sh的脚本,它需要知道自己的PID(即我需要在Script.sh中获取PID)

知道怎么做吗?

6 个答案:

答案 0 :(得分:201)

变量'$$'包含PID。

答案 1 :(得分:46)

使用$BASHPID$$

有关详情,请参阅manual,包括两者之间的差异。

TL; DRTFM

  • $$扩展为shell的进程ID。
    • ()子shell中,它扩展为调用shell的进程ID,而不是子shell。
  • $BASHPID扩展为当前Bash进程的进程ID。
    • ()子shell中,它会扩展为子shell的进程ID

答案 2 :(得分:32)

除了 Jefromi 引用的Advanced Bash Scripting Guide中给出的示例之外,这些示例还显示了管道如何创建子shell:

$ echo $$ $BASHPID | cat -
11656 31528
$ echo $$ $BASHPID
11656 11656
$ echo $$ | while read line; do echo $line $$ $BASHPID; done
11656 11656 31497
$ while read line; do echo $line $$ $BASHPID; done <<< $$
11656 11656 11656

答案 3 :(得分:6)

PID存储在$$

示例:kill -9 $$将终止从中调用它的shell实例。

答案 4 :(得分:2)

您可以使用$$变量。

答案 5 :(得分:0)

如果该进程是子进程,并且未设置$ BASHPID,则可以查询正在运行的进程的已创建子进程的ppid。这可能有点丑陋,但可以。示例:

sleep 1 &
mypid=$(ps -o ppid= -p "$!")
相关问题