[MacOSX]Launchdとりあえず使ってみるまとめ

Launchdとは

MacOSXにおいてLinuxでいうところのinit.dとかcrondとかの代わり
をしてくれるミドルウェア

  • システム起動時
  • ファイル変更時
  • HDDマウント時
  • 定期実行(XX分に1回起動、とか)
  • 定時実行(XX時に毎回起動、とか)

等のイベントにフックして、特定のアプリケーションを起動したり
できます。

環境

以下の環境ではこの記事の内容を検証しています。

  • MacOSX 10.10 Yosemite
  • MacOSX 10.11 El Capitan

動機

Yosemiteより前のOSXではLauchd以外にもStartupItemsにplist置いとくだけで
やってくれたんですが、YosemiteからLaunchdに統一。StartupItemsは利用できなくなりました。

より新しく高機能なのはLaunchdなんですが、
保守していたスクリプトがStartupItemsに置かれる前提のものだったので
改修ついでにおさらいしました。

設定ファイルの置き場所

/System/Library/LaunchDaemons/ 以下に置かれているファイルが
それになります。

※ここ以外でもlaunchctlコマンドが読めればどこでもいいのかな?
検証はしてないです。

他にも以下に配置することができます。
ユーザによって起動を制御したいときは、ユーザディレクトリ以下に
配置したらいいと思います。

基礎的な設定ファイル

拡張子はplistですが、要はxmlです。(jsonっぽくもかける?)
以下にzabbix_agentdをシステム開始時に起動する設定ファイルを挙げておきます。

決まっているわけではないと思いますが、ファイル名はLabelの値と同一に
する慣例になっているっぽいです。
(下記の例なら com.zabbix.zabbix_agentd.plist というファイル)

dictタグ内はkeyタグと次のタグでkey-valueになっています。

key value description
Label com.zabbix.zabbix_agentd このplistのラベル(必須だけど一意であれば任意の値)
RunAtLoad true 起動時に実行するか
KeepAlive SuccessfulExit-false 成功したら起動終了するか
ProgramArguments *1 実行するプログラムの引数

指定時間で起動したい場合はRunAtLoadの代わりに
StartCalendarIntervalを利用します。

*1 /usr/local/sbin/zabbix_agentd -c /usr/local/etc/zabbix_agentd.conf

launchdに設定を登録する

うまく起動しないときは

するとplistとして正しい文法で書かれているかチェックしてくれます。

※それでもうまく動かないようならここ
(StandardOutputとからへん)を参考にログ出してみる

launchdから設定を削除する

[MacOSX]Launchdとりあえず使ってみるまとめ」への2件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です