events
Section: File Formats (5)
Updated: April 2008
Index
Return to Main Contents
NAME
events - format of event files used by the upstart init system
DESCRIPTION
upstart works on the basis of event files that describe jobs
that should be managed. This includes the particulars about what binary
or shell script code should executed while the job is running, and
which events can cause the job to be started or stopped.
Event files are stored in the /etc/event.d directory.
SYNTAX
Event files can contain the following stanzaz.
- exec <command> <arguments>
-
When the event is started by init, execute the following arguments.
Example: exec /bin/dbus-daemon --system
- script ...
-
Like exec but instead of executing a single program, execute
the following shell code. script sections are closed with a
end script marker.
Example:
script
rm -f /var/run/sshd.pid
sshd
end script
Only one of exec and script can be used at a time. If both
are bspecifed, exec takes priority.
- pre-start
- Execute the command/script before actually starting the process.
pre-start can be invoked as pre-start exec or pre-start script
in the same way that a start action can be handled by either
exec or script.
- post-start
- Execute the command/script after starting the process.
The format is similar to pre-start.
- pre-stop
- Execute the command/script before stopping the process.
The format is similar to pre-start.
- post-stop
- Execute the command/script after stopping the process.
The format is similar to pre-start.
- start on <event>
- Describes on what condition to start this job. Without this
section, the job can only be manually started with the
initctl(8) command.
Examples:
start on startup
This starts immediately after boot.
start on stopped rc3
This starts when the 'rc3' event has stopped.
Events are matched via globbing. So a stanza of the form
start on runlevel [2345]
would match any of runlevels 2, 3, 4, or 5.
- stop on <event>
- Describes on what condition to stop this job. Without this
section, the job can only be manually stopped with the
initctl command.
Examples:
stop on runlevel 0
This stops the job when runlevel 0 is entered.
stop on stopping dbus ok
This stops the job when the 'dbus' job is stopped.
Events are matched via globbing. So a stanza of the form
stop on runlevel [!5]
would match any runlevel other than 5.
- daemon
- Sets the daemon flag for the job. This means that the job will
fork in the background and that its PID needs to be obtained.
- respawn
- This sets the daemon, service, and respawn flags for the job.
The respawn flag means that the process will be restarted when
it ends.
- respawn limit [count [timeout]]
- This configures respawn limits. Respawn limits only apply
if the respawn flag is set for the job; setting a limit
does not automatically set respawning capability. If the
process is respawned more than count times within an
interval of timeout seconds, the job will be stopped
automatically, andn ot restarted. The limit defaults to 10
times within 5 seconds.
Example: respawn limit 10 120
This sets the limit for respawn to ten times within two
minutes, the historical behavior for System V init.
- service
- service means that the job has reached its goal when running.
service is implied by the respawn flag.
- instance
- instance means that the job starts new instances every time
it is started, even if there is another instance running. It
is the converse of daemon.
- kill timeout <time>
- Sets the time to wait between sending TERM and KILL signals to
time seconds.
- normal exit <status>
- When used with respawn any exit codes denoted in status will
prevent a respawn of the process.
- console {logged|output|owner|none}
- Describes what to do with the job's output. Valid values are:
logged
Redirect to logger. (the default setting)
output
Direct to the current stdout
owner
The process becomes the owner of the console, allowing it to
receive signals from the keyboard
none
Output is redirected to /dev/null
- env <name>=<value>
- Sets an environment variable for the job.
Example: env LD_LIBRARY_PATH=/opt/app/lib
- umask <umask>
- Sets the umask of the job to umask.
Example: umask 0755
- nice <value>
- Sets the nice level of the job to value.
Example: nice 5
- chroot <path>
- Changes the job's root directory to path.
Example: chroot /var/empty
- chdir <path>
- Changes the working directory of the job to path.
Example: chdir /var/tmp
- limit {as|core|cpu|data|fsize|memlock|msgqueue|nice|nofile|nproc|rss|rtprio|sigpending|stack} {unlimited|<value>}
- Changes the limit of the process to whatever is specfied.
Examples:
limit nproc 10
limit core unlimited
- description <text>
- Describes the job. Not currently used by any init(8) tools.
Example: descripton "This is a test job."
- author <text>
- Author of the job. Not currently used by any init(8) tools.
Example: author "Obi-wan Kennedy <bidy@whitehouse.gov>"
- version <version>
- Version of the job. Not currently used by any init(8) tools.
Example: version "0.0.0.0.1 test"
- emits <signals>
- Describes signals emitted by the job. Not currently used by
any init(8) tools. For more information on signals, see the
initctl(8) man page and the emit option.
Example: emits spam egg ham
EVENTS
A wide array of events can be emitted by the system (see
initctl(8)) but the following events are generated by
upstart itself, or are usually seen on a typical install.
- stalled
-
No jobs are running and no events are pending.
- control-alt-delete
-
Control-Alt-Delete has been pressed.
- kbdrequest
-
A kbdrequest event has occurred.
- power-status-changed
-
Init received SIGPWR.
- starting <job>
-
The given job is being started.
- started <job>
-
The given job has successfully been started.
- stopping <job>
-
The given job is being stopped.
- stopped <job>
-
The given job has been stopped successfully.
- startup
-
Emitted when the system boots.
- runlevel <runlevel>
-
Init has been asked to move to the given runlevel.
FILES
/etc/event.d
The directory where event files are stored.
SEE ALSO
initctl(8)
telinit(8)
init(8)
http://upstart.ubuntu.com/getting-started.html