昨晚我遇到了这个奇怪的问题,但仍然没有任何线索。事情就是这样:
我有2个名为parent.sh
和child.sh
的进程,它应该parent.sh
启动child.sh
,然后parent.sh
退出{{1}仍然运行。 (child.sh
就像parent.sh
或apachectl
/etc/init.d/xxx
parent.sh
#!/bin/bash
echo 'start child.sh'
cd $HOME && nohup sh child.sh &
child.sh
在我运行#!/bin/bash
while true;
do
echo 'child process';
sleep 10
done
之后,似乎sh parent.sh
已退出,因为我得到了bash。不幸的是,当我执行parent.sh
时,它仍然存在父进程ps -ef | grep parent.sh
,并且子进程init
也在运行。
在检查child.sh
后,我发现如果我更改此行:
parent.sh
到
cd $HOME && nohup sh child.sh &
然后父进程将在启动子进程后退出。
为什么?