$ man launchd
$ man launchctl
$ man launchd.plist
$ man plutil
- daemon => initdで実行されるようなデーモンプログラム
- agent => crondで実行されるような定期実行プログラム
~/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 Per-user agents provided by Mac OS X.
/System/Library/LaunchDaemons System-wide daemons provided by Mac OS X.
plistファイルに対して.
$ launchctl load /path/to/your.plist
plistでload済みのjobはlabelを指定して起動/停止を行う.
$ launchctl start label
ただ OnDemand = false
もしくはKeepAlibe = true
だとloadした時点でjobが稼働するので、stopすると再起動する.
jobを除去する. unloadはplistを指定、removeであればlabelを指定でok.
$ launchctl unload /path/to/your.plist
$ launchctl remove label
謎.
StandardOutPath, StandardErrorPathにファイルパスを設定する.
OnDemandは10.5以降でdeprecatedだからKeepAliveを使うべき、true/false以外に以下でjob継続するかが設定できる.
- 前回のexit code
- ネットワーク状況
- 特定ファイルの有無
- 他jobの有無
<?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>my.mongod</string>
<key>Program</key>
<string>/path/to/mongod</string>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
/Library/LaunchDaemons以下にぶちこめば次回システム起動時に読み込まれる.