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