Bash脚本使用两个pid运行

时间:2011-11-16 10:40:39

标签: bash

当我运行bash脚本时,我在ps列表中得到两个条目,一个是其他的孩子。 我的脚本只包含一个命令

test.sh
   sleep 20

pidof test.sh
2494 2493

我怎样才能获得父PID

2 个答案:

答案 0 :(得分:2)

运行该脚本时,正在创建两个进程。第一个是运行脚本的bash解释器。另一方面,sleep是另一个二进制文件(通常在/ bin中),因此需要启动一个新进程。 (虽然进程命名似乎在不同的系统上有所不同;当在我的测试系统上运行时,这两个进程都没有被test.sh命名,只是bash和sleep)。

要获取一个或多个进程的父进程ID(按ID或名称),您可以使用ps

$ ps -p 6194 -o ppid=
 6187

$ ps -p 6194,6748 -o ppid= 
 6187
 6747

$ ps -C bash -o ppid=
 6187
 6747
 6782

答案 1 :(得分:1)

在Centos系统上,'pidof'仅返回父进程。要获得孩子,你可以使用'pstree':

$ pidof test.sh
22220
$ pstree -p 22220
mytest(22220)---sleep(22223)