exec and dead children

Nils Kassube kassube at gmx.net
Fri Dec 4 07:14:53 UTC 2015


Karl Auer wrote:
> I have a bash script which starts firefox:
> 
>    #!/bin/sh
>    nohup /usr/bin/firefox \
>          -new-window URL1 \
>          -new-window UR2  \
>          [etc] > /dev/null 2>&1 &
>    /bin/sleep 20
> 
> I start this script from a terminal. To avoid having an unused
> terminal window hanging around afterwards, and also to avoid having
> to press CTL-D, type "exit" or click the close widget, I start this
> script using exec:
> 
>    exec myscript.sh
> 
> If I don't put that delay at the end of the script, the new firefox
> windows die with the script. Actually, they never really get time to
> open. If I don't use nohup, they die regardless of the delay.
> 
> Why is this so?

I think it happens because with the "&" the new nohup process gets 
started in the background and your script continues. When it reaches the 
end, it exits normally. However the background process of nohup has not 
yet reached the point where it has started firefox and returns, so it 
dies together with the end of the script.

> Is there some way I can avoid having to insert that
> delay?

Did you try the "wait" command instead of the sleep command. Then the 
script should exit as soon as possible.


Nils





More information about the ubuntu-users mailing list