如果子项在后台启动并且父项已经退出,如何知道父进程

时间:2013-09-06 15:36:53

标签: linux bash shell process ash

我有一个在前台运行的子进程,他的父亲已经退出。

proc/$pid/stat文件不再包含父pid,如果已经退出父pid并且它显示1而不是原始父pid

linux$cat /proc/6267/stat
6267 (test3.sh) S 1 6265 ......
#                 ^
#                 |
#        I expected to get the origin parent pid but I get 1

要快速重现此行为,我们可以使用以下脚本

test2.sh

#!/bin/sh
echo "test2=$$"
./test3.sh &

test3.sh

#!/bin/sh
echo "test3=$$"
sleep 1000

执行:

linux$ ./test2.sh
test2=6318
test3=6319
linux$ ps aux | grep test
 6319 root      1484 S    {test3.sh} /bin/sh ./test3.sh
linux$ cat /proc/6319/stat
6319 (test3.sh) S 1 6318 2138 34816 6.......

1 个答案:

答案 0 :(得分:1)

我认为在(父)执行完毕后你不能知道进程的父进程。但也许你可以运行另一个程序来监视你的原始程序并维护一个日志文件或其他东西。当然,init采用了孤立的进程。