diff --git a/pages/osx/launchctl.md b/pages/osx/launchctl.md new file mode 100644 index 0000000000..5977338d46 --- /dev/null +++ b/pages/osx/launchctl.md @@ -0,0 +1,32 @@ +# launchctl + +> A command-line interface to Apple's `launchd` manager for launch daemons (system-wide services) and launch agents (per-user programs). +> `launchd` loads XML-based `*.plist` files placed in the appropriate locations, and runs the corresponding commands according to their defined schedule. + +- Activate a user-specific agent to be loaded into `launchd` whenever the user logs in: + +`launchctl load ~/Library/LaunchAgents/{{my_script}}.plist` + +- Activate an agent which requires root privileges to run and/or should be loaded whenever any user logs in (note the absence of `~` in the path): + +`sudo launchctl load /Library/LaunchAgents/{{root_script}}.plist` + +- Activate a system-wide daemon to be loaded whenever the system boots up (even if no user logs in): + +`sudo launchctl load /Library/LaunchDaemons/{{system_daemon}}.plist` + +- Show all loaded agents/daemons, with the PID if the process they specify is currently running, and the exit code returned the last time they ran: + +`launchctl list` + +- Unload a currently loaded agent, e.g. to make changes (note: the plist file is automatically loaded into `launchd` after a reboot and/or logging in): + +`launchctl unload ~/Library/LaunchAgents/{{my_script}}.plist` + +- Manually run a known (loaded) agent/daemon, even if it isn’t the right time (note: this command uses the agent's label, rather than the filename): + +`launchctl start {{my_script}}` + +- Manually kill the process associated with a known agent/daemon, if it's running: + +`launchctl stop {{my_script}}`