initctl
Control Upstart jobs and services
SYNOPSIS
initctl [options] command [job-or-args]
PARAMETERS
--system
Control system-wide Upstart instance (default)
--user
Control user session Upstart instance
--desktop
Control desktop session Upstart instance
--local
Run locally; no daemon or serialization
-q, --quiet
Reduce output verbosity
-v, --verbose
Increase output verbosity
--debug
Enable debug logging
--help, -h
Display usage help
--version
Show version information
--no-block
Don't wait for job completion
--retry
Retry command if temporarily failed
--monitor
Monitor and print events (blocks)
--print-io
Log all protocol I/O
--show-entries
Include event entries in output
DESCRIPTION
initctl is the primary command-line interface for managing jobs and events in the Upstart init system. Upstart, developed by Canonical for Ubuntu, replaced the traditional SysV init with an event-driven model, allowing services to start based on system events rather than runlevels. Introduced in Ubuntu 6.06, it powered init until systemd adoption around 2015.
Using initctl, users can start, stop, restart, reload, or query the status of jobs defined in /etc/init/*.conf files. Jobs declare start/stop events, tasks, and instances. The tool communicates with the upstart daemon via a Unix domain socket at /com/ubuntu/upstart (system) or /run/user/$UID/upstart (user).
Key features include event emission with emit, job listing with list, and monitoring with --monitor. It supports system, user, and desktop sessions. Output includes job states like start/waiting, running, or stop/waiting. Goals ensure orderly service management during boot, shutdown, or runtime changes.
Though powerful for concurrency, Upstart faced criticism for incomplete POSIX adoption. Today, it's legacy; modern distros use systemd.
CAVEATS
Deprecated on systemd-based systems; emulated via systemctl compatibility layer. Fails if Upstart not running. User sessions require login session active.
COMMON COMMANDS
start job [INSTANCE] - Start job
stop job [INSTANCE] - Stop job
status job - Show status
emit event [KEY=VAL] - Emit event
list - List jobs
JOB FILES
Jobs in /etc/init/*.conf; syntax uses start on, stop on, exec directives.
HISTORY
Developed by Scott James Remnant (Keybuk) for Ubuntu in 2006 (v0.2.8). Evolved through Ubuntu 14.10; systemd replaced it in Ubuntu 15.04+. Maintained briefly post-2015 but obsolete in modern kernels/distros.


