当我运行bash脚本时,我在ps列表中得到两个条目,一个是其他的孩子。 我的脚本只包含一个命令
test.sh
sleep 20
pidof test.sh
2494 2493
我怎样才能获得父PID
答案 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)