OK a trivial test case that demonstrates the behaviour.
/etc/rc.local has:
(/etc/init.d/testscript &) &
sleep 20
exit 0
The executable file /etc/init.d/testscript says:
#!/bin/bash
MYLOGFILE=/home/user/testscript.log
echo Starting testscript at `date` > $MYLOGFILE
echo Show that the script has detached and has a PPID of 1 >> $MYLOGFILE
ps -ef | grep testscript >> $MYLOGFILE
trap "echo script was exited at `date` >> $MYLOGFILE" EXIT
while true; do
echo testscript in loop at `date` >> $MYLOGFILE
sleep 1
done
and the output of testscript.log is:
Starting testscript at Wed Apr 8 11:36:27 BST 2009
Show that the script has detached and has a PPID of 1
root 2915 1 0 11:36 tty8 00:00:00 /bin/bash /etc/init.d/testscript
root 2919 2915 0 11:36 tty8 00:00:00 grep testscript
testscript in loop at Wed Apr 8 11:36:27 BST 2009
testscript in loop at Wed Apr 8 11:36:28 BST 2009
testscript in loop at Wed Apr 8 11:36:29 BST 2009
testscript in loop at Wed Apr 8 11:36:30 BST 2009
testscript in loop at Wed Apr 8 11:36:31 BST 2009
testscript in loop at Wed Apr 8 11:36:32 BST 2009
testscript in loop at Wed Apr 8 11:36:33 BST 2009
testscript in loop at Wed Apr 8 11:36:34 BST 2009
testscript in loop at Wed Apr 8 11:36:35 BST 2009
testscript in loop at Wed Apr 8 11:36:36 BST 2009
testscript in loop at Wed Apr 8 11:36:37 BST 2009
testscript in loop at Wed Apr 8 11:36:38 BST 2009
testscript in loop at Wed Apr 8 11:36:39 BST 2009
testscript in loop at Wed Apr 8 11:36:40 BST 2009
testscript in loop at Wed Apr 8 11:36:41 BST 2009
testscript in loop at Wed Apr 8 11:36:42 BST 2009
testscript in loop at Wed Apr 8 11:36:43 BST 2009
testscript in loop at Wed Apr 8 11:36:44 BST 2009
testscript in loop at Wed Apr 8 11:36:45 BST 2009
testscript in loop at Wed Apr 8 11:36:46 BST 2009
script was exited at Wed Apr 8 11:36:27 BST 2009
This shows:
(a) the script was successfully run
(b) the script was successfully detached, and became owned by init (PPID 1)
(c) it continued to run for 20 seconds
(d) the time it terminated coincides with the time the exit 0 is run in
/etc/rc.local
(e) the 'date' on the exit command is a bit weird. I suspect the trap command
line is run at the time it is encountered, rather than when the trap condition
is triggered.
So it seems at the point /etc/rc.local exits, it terminates processes it
has produced, regardless of whether it currently owns them. I was not
seeing this behaviour in Intrepid or Hardy.
--
since an upgrade to jaunty the rc.local is not loaded at startup
https://bugs.launchpad.net/bugs/332210
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs