我在Bash中有一个名为Script.sh
的脚本,它需要知道自己的PID(即我需要在Script.sh中获取PID)
知道怎么做吗?
答案 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 "$!")