.Sh SUBCOMMANDS
.Bl -tag -width -indent
.It Xo Ar load Op Fl wF
+.Op Fl S Ar sessiontype
+.Op Fl D Ar domain
.Ar paths ...
.Xc
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.
.Bl -tag -width -indent
.It Fl w
Remove the disabled key and write the configuration files back out to disk.
.It Fl F
Force the loading of the plist. Ignore the Disabled key.
+.It Fl S Ar sessiontype
+Some jobs only make sense in certain contexts. This flag instructs
+.Nm launchctl
+to look for jobs in a different location when using the -D flag, and allows
+.Nm launchctl
+to restrict which jobs are loaded into which session types. Currently known
+session types include: Aqua, X11 and tty.
+.It Fl D Ar domain
+Look for
+.Xr 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.
.El
.It Xo Ar unload Op Fl w
.Ar paths ...
.Xc
Unload the specified configuration files or directories of configuration files.
+This will also stop the job if it is running.
.Bl -tag -width -indent
.It Fl w
Add the disabled key and write the configuration files back out to disk.
.El
-.It Ar start Ar joblabels ...
-Start the specified jobs by label.
-.It Ar stop Ar joblabels ...
-Stop the specified jobs by label. Jobs may restart automatically if demand driven.
+.It Xo Ar submit Fl l Ar label
+.Op Fl p Ar executable
+.Op Fl o Ar path
+.Op Fl e Ar path
+.Ar -- command
+.Op Ar args
+.Xc
+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.
+.Bl -tag -width -indent
+.It Fl l Ar label
+What unique label to assign this job to launchd.
+.It Fl p Ar program
+What program to really execute, regardless of what follows the -- in the submit sub-command.
+.It Fl o Ar path
+Where to send the stdout of the program.
+.It Fl e Ar path
+Where to send the stderr of the program.
+.El
+.It Ar remove Ar job_label
+Remove the jobs from launchd by label.
+.It Ar start Ar job_label
+Start the specified jobs by label. The expected use of this subcommand is for
+debugging and testing so that one can manually kick-start an on-demand server.
+.It Ar stop Ar job_label
+Stop the specified jobs 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 themselves.
.It Ar list
List all of the jobs loaded into
.Nm launchd .
.Xr umask 2
of
.Nm launchd .
+.It Ar bslist Op Ar PID
+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 available to a subset of processes. The three states a
+service can be in are active ("A"), in-active ("I") and on-demand ("D").
+.It Ar bsexec Ar PID command Op Ar args
+This executes the given command in the same Mach bootstrap namespace hierachy
+as the given PID.
.It Ar help
Print out a quick usage statement.
.El