launchd って?
init と rc と cron と inetd と watchdogd を足したようなスーパーデーモン。
Apple が開発し、たしか Tiger の頃に導入された。
Linux などにも移植されている。
Agent と Daemon
launchctl
設定を有効にする
launchctl load hoge.plist
設定を無効にする
launchctl unload hoge.plist
設定の一覧を取得する
launchctl list
launchd 設定ファイル
TBD
ファイル/ディレクトリの変更を監視する : WatchPaths
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- 名前。ファイル名はcom.example.filewatch.plist とする (慣習) -->
<key>Label</key>
<string>com.example.filewatch</string>
<!-- 実行するコマンド。これを argv として exec される -->
<key>ProgramArguments</key>
<array>
<string>touch</string>
<string>/tmp/hogehoge</string>
<string>/tmp/fugafuga</string>
</array>
<!-- 変更を監視するファイル/フォルダのパス -->
<!-- サブディレクトリの変更は追跡できない -->
<!-- 例えば touch ~user1/hogehoge/sub/1 には反応しない -->
<key>WatchPaths</key>
<array>
<string>/Users/user1/hogehoge</string>
</array>
</dict>
</plist>
定期的に実行する : StartCalendarInterval
何かがマウントされたときに実行する : StartOnMount
<dict>
...
<key>StartOnMount</key>
<true/>
</dict>