[source]
This manual page is for Mac OS X version 10.9
If you are running a different version of Mac OS X, view the documentation locally:
In Terminal, using the man(1) command
Reading manual pages
Manual pages are intended as a quick reference for people who already understand a technology.
To learn how the manual is organized or to learn about command syntax, read the manual page for manpages(5).
For more information about this technology, look for other documentation in the Apple Developer Library.
For general information about writing shell scripts, read Shell Scripting Primer.
launchctl(1) BSD General Commands Manual launchctl(1)
NAME
launchctl -- Interfaces with launchd
SYNOPSIS
launchctl [subcommand [arguments ...]]
DESCRIPTION
launchctl interfaces with launchd to load, unload daemons/agents and generally control launchd.
launchctl supports taking subcommands on the command line, interactively or even redirected from stan-dard standard
dard input. These commands can be stored in $HOME/.launchd.conf or /etc/launchd.conf to be read at the
time launchd starts.
SUBCOMMANDS
load [-wF] [-S sessiontype] [-D domain] paths ...
Load the specified configuration files or directories of configuration files. Jobs that are
not on-demand will be started as soon as possible. All specified jobs will be loaded before
any of them are allowed to start. Note that per-user configuration files (LaunchAgents) must
be owned by the user loading them. All system-wide daemons (LaunchDaemons) must be owned by
root. Configuration files must not be group- or world-writable. These restrictions are in
place for security reasons, as allowing writability to a launchd configuration file allows one
to specify which executable will be launched.
Note that allowing non-root write access to the /System/Library/LaunchDaemons directory WILL
render your system unbootable.
-w Overrides the Disabled key and sets it to false. In previous versions, this option
would modify the configuration file. Now the state of the Disabled key is stored
elsewhere on-disk.
-F Force the loading of the plist. Ignore the Disabled key.
-S sessiontype
Some jobs only make sense in certain contexts. This flag instructs launchctl to look
for jobs in a different location when using the -D flag, and allows launchctl to
restrict which jobs are loaded into which session types. Currently known session
types include: Aqua, LoginWindow, Background, StandardIO and System.
-D domain
Look for plist(5) files ending in *.plist in the domain given. Valid domains include
"system," "local," "network" and "all." When providing a session type, an additional
domain is available for use called "user." For example, without a session type given,
"-D system" would load from property list files from /System/Library/LaunchDaemons.
With a session type passed, it would load from /System/Library/LaunchAgents.
unload [-w] [-S sessiontype] [-D domain] paths ...
Unload the specified configuration files or directories of configuration files. This will
also stop the job if it is running.
-w Overrides the Disabled key and sets it to true. In previous versions, this option
would modify the configuration file. Now the state of the Disabled key is stored
elsewhere on-disk.
-S sessiontype
Some jobs only make sense in certain contexts. This flag instructs launchctl to look
for jobs in a different location when using the -D flag, and allows launchctl to
restrict which jobs are loaded into which session types. Currently known session
types include: Aqua, LoginWindow, Background, StandardIO and System.
-D domain
Look for plist(5) files ending in *.plist in the domain given. Valid domains include
"system," "local," "network" and "all." When providing a session type, an additional
domain is available for use called "user." For example, without a session type given,
"-D system" would load from property list files from /System/Library/LaunchDaemons.
With a session type passed, it would load from /System/Library/LaunchAgents.
submit -l label [-p executable] [-o path] [-e path] -- command [args]
A simple way of submitting a program to run without a configuration file. This mechanism also
tells launchd to keep the program alive in the event of failure.
-l label
What unique label to assign this job to launchd.
-p program
What program to really execute, regardless of what follows the -- in the submit sub-command. subcommand.
command.
-o path Where to send the stdout of the program.
-e path Where to send the stderr of the program.
remove job_label
Remove the job from launchd by label.
start job_label
Start the specified job by label. The expected use of this subcommand is for debugging and
testing so that one can manually kick-start an on-demand server.
stop job_label
Stop the specified job by label. If a job is on-demand, launchd may immediately restart the
job if launchd finds any criteria that is satisfied. Non-demand based jobs will always be
restarted. Use of this subcommand is discouraged. Jobs should ideally idle timeout by them-selves. themselves.
selves.
list [-x] [label]
With no arguments, list all of the jobs loaded into launchd in three columns. The first column
displays the PID of the job if it is running. The second column displays the last exit status
of the job. If the number in this column is negative, it represents the negative of the signal
which killed the job. Thus, "-15" would indicate that the job was terminated with SIGTERM.
The third column is the job's label.
Note that you may see some jobs in the list whose labels are in the style "0xdeadbeef.anony-mous.program". "0xdeadbeef.anonymous.program".
mous.program". These are jobs which are not managed by launchd, but, at one point, made a
request to it. launchd claims no ownership and makes no guarantees regarding these jobs. They
are stored purely for bookkeeping purposes.
Similarly, you may see labels of the style "0xdeadbeef.mach_init.program". These are legacy
jobs that run under mach_init emulation. This mechanism will be removed in future versions,
and all remaining mach_init jobs should be converted over to launchd.
If [label] is specified, prints information about the requested job. If [-x] is specified, the
information for the specified job is output as an XML property list.
setenv key value
Set an environmental variable inside of launchd.
unsetenv key
Unset an environmental variable inside of launchd.
getenv key
Get an environmental variable inside of launchd.
export Export all of the environmental variables of launchd for use in a shell eval statement.
getrusage self | children
Get the resource utilization statistics for launchd or the children of launchd.
log [level loglevel] [only | mask loglevels...]
Get and set the syslog(3) log level mask. The available log levels are: debug, info, notice,
warning, error, critical, alert and emergency.
limit [cpu | filesize | data | stack | core | rss | memlock | maxproc | maxfiles] [both [soft | hard]]
With no arguments, this command prints all the resource limits of launchd as found via
getrlimit(2). When a given resource is specified, it prints the limits for that resource.
With a third argument, it sets both the hard and soft limits to that value. With four argu-ments, arguments,
ments, the third and forth argument represent the soft and hard limits respectively. See
setrlimit(2).
shutdown
Tell launchd to prepare for shutdown by removing all jobs.
umask [newmask]
Get or optionally set the umask(2) of launchd.
bslist [PID | ..] [-j]
This prints out Mach bootstrap services and their respective states. While the namespace
appears flat, it is in fact hierarchical, thus allowing for certain services to be only avail-able available
able to a subset of processes. The three states a service can be in are active ("A"), inactive
("I") and on-demand ("D").
If [PID] is specified, print the Mach bootstrap services available to that PID. If [..] is
specified, print the Mach bootstrap services available in the parent of the current bootstrap.
Note that in Mac OS X v10.6, the per-user Mach bootstrap namespace is flat, so you will only
see a different set of services in a per-user bootstrap if you are in an explicitly-created
bootstrap subset.
If [-j] is specified, each service name will be followed by the name of the job which regis-tered registered
tered it.
bsexec PID command [args]
This executes the given command in the same Mach bootstrap namespace hierachy as the given
PID.
bstree [-j]
This prints a hierarchical view of the entire Mach bootstrap tree. If [-j] is specified, each
service name will be followed by the name of the job which registered it. Requires root priv-ileges. privileges.
ileges.
managerpid
This prints the PID of the launchd which manages the current bootstrap.
manageruid
This prints the UID of the launchd which manages the current bootstrap.
managername
This prints the name of the launchd job manager which manages the current bootstrap. See Lim-itLoadToSessionType LimitLoadToSessionType
itLoadToSessionType in launchd.plist(5) for more details.
help Print out a quick usage statement.
ENVIRONMENTAL VARIABLES
LAUNCHD_SOCKET
This variable informs launchctl how to find the correct launchd to talk to. If it is missing,
launchctl will use a built-in default.
FILES
~/Library/LaunchAgents Per-user agents provided by the user.
/Library/LaunchAgents Per-user agents provided by the administrator.
/Library/LaunchDaemons System wide daemons provided by the administrator.
/System/Library/LaunchAgents Mac OS X Per-user agents.
/System/Library/LaunchDaemons Mac OS X System wide daemons.
SEE ALSO
launchd.plist(5), launchd.conf(5), launchd(8)
Darwin 1 May, 2009 Darwin