Я начал писать заметку о launchctl, но понял, что сегодня её не закончу. Поэтому кратко расскажу о том, как загружать или выгружать сервисы, установленные через MacPorts.

Стартовые скрипты MacPorts размещает в файлах /Library/LaunchDaemons/org.macports.${port}.plist.

Загрузить сервисы можно либо привычно через launchctl

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.${port}.plist

либо через MacPorts:

$ sudo port load port

Останов сервиса:

$ sudo launchctl unload -w /Library/LaunchDaemons/org.macports.${port}.plist

или

$ sudo port unload port

Например, установим apache2 (он толком в Mac OS X не нужен, так как при включении “Web sharing” загружается Apache/2.2.11):

$ sudo port install apache2

Ставится конфигурационный файл launchctl /Library/LaunchDaemons/org.macports.apache2.plist:


<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
<plist version='1.0'>
<dict>
<key>Label</key><string>org.macports.apache2</string>
<key>ProgramArguments</key>
<array>
	<string>/opt/local/bin/daemondo</string>
	<string>--label=apache2</string>
	<string>--start-cmd</string>
	<string>/opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper</string>
	<string>start</string>
	<string>;</string>
	<string>--stop-cmd</string>
	<string>/opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper</string>
	<string>stop</string>
	<string>;</string>
	<string>--restart-cmd</string>
	<string>/opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper</string>
	<string>restart</string>
	<string>;</string>
	<string>--pid=none</string>
</array>
<key>Debug</key><false/>
<key>Disabled</key><true/>
<key>OnDemand</key><false/>
<key>RunAtLoad</key><false/>
</dict>
</plist>

Загрузка:

$ sudo port load apache2

Выгрузка:

$ sudo port unload apache2

В следующей статье я детально расскажу о launchctl.