Linuxだとserviceやcronを使いますが、OSXだとlaunchctlを使うようです。ということで、launchctl(launchd)の使い方を備忘としてまとめました。

基本的な使い方

plistを定義したら、あとは以下のコマンドで読み込むだけ

launchctlのリロードのサブコマンドはないので、plistのリロードをしたい場合は以下のコマンドで行います。

以下のコマンドで起動・停止します(RunAtLoadがtrueの場合はロード直後のstartは必要なし)

plist

plistの書き方はmanページを見るのが良いです。

plistファイルはXML形式でLabel, ProgramArgumentsは必須です。ProgramArgumentsの一つ目が実行プログラムで、あとは引数です。標準出力も定義可能。RunAtLoadはlaunchctl loadしたときにstartするかどうかの設定。常に起動させたい系のプログラムであればKeepAliveにtrueをセットすれば、killされても自動的に再起動してくれる。

スケジュールタスクを登録したい場合はStartIntervalやStartScheduleを定義します。

echoデーモン(スケジューラ)

echoデーモン(常駐)

echo-loop.sh↓

plist↓

ハマり

10秒以下のStartIntervalの設定がうまくいかない…

→ThrottleIntervalも2にしたらうまく行った

参考URL