I am running ubuntu 11.10 in a virtual machine (VirtualBox) to learn more about development in linux. I am using a git repository to save my work and have written a script to bundle my work up and save it to the shared folder for use while the virtual machine is not running.
I would like to automatically run this script before shutdown so that my work is always available if the vm is off (currently I have to manually run the script).
I don't know if upstart is the best way to accomplish this, but this is the config that I wrote as a test:
description "test script to run at shutdown"
start on runlevel [056]
task
script
touch /media/sf_LinuxEducation/start
sleep 15
touch /media/sf_LinuxEducation/start-long
end script
pre-start script
touch /media/sf_LinuxEducation/pre-start
sleep 15
touch /media/sf_LinuxEducation/pre-start-long
end script
post-start script
touch /media/sf_LinuxEducation/post-start
sleep 15
touch /media/sf_LinuxEducation/post-start-long
end script
pre-stop script
touch /media/sf_LinuxEducation/pre-stop
sleep 15
touch /media/sf_LinuxEducation/pre-stop-long
end script
post-stop script
touch /media/sf_LinuxEducation/post-stop
sleep 15
touch /media/sf_LinuxEducation/post-stop-long
end script
The result is that only one touch is accomplished (the first touch in pre-start).
What do I need to change to see one of the touches after the sleep to work?
Or Is there an easier way to get this accomplished?
Thanks in advance.
Best Answer
The Upstart Intro, Cookbook and Best Practices has a great number of code snippets to use in creating upstart tasks and jobs.
The shutdown process section of the cookbook says that
/etc/init/rc.conf
will be run and call/etc/init.d/rc
. In turn this will eventually call/etc/init.d/sendsigs
. So if youstart on starting rc
then your task will be executed before rc (and the sigterms that would normally have the process shut down).file: /etc/init/test.conf
file: /etc/init/test.sh