OS Xで起動時にmongodが立ち上がるようにする

個人用メモ。

下に示してある内容を ~/Library/LaunchAgents/info.s01.mongod.plist (下のLabelのところにつけているIdentifierに.plistをつけたもの) として保存、ログアウトして再度ログインする、または launchctl load ~/Library/LaunchAgents/info.s01.mongod.plist とすると設定ファイルを読み込み、RunAtLoadが有効なのでジョブも実行される。ジョブを止めるときは launchctl stop info.s01.mongod とし、再度走らせるときは launchctl start info.s01.mongod とします。

<?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>info.s01.mongod</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/*****/mongodb/bin/mongod</string>
        <string>--storageEngine</string>
        <string>wiredTiger</string>
    </array>
    <key>UserName</key>
    <string>*****</string>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
  • もちろんinfo.s01.〜を使う必要は全くないので適宜変更を。もちろんユーザー名のアスタリスク
  • ProgramArgumentsは呼び出すプログラムとそのコマンドラインオプションをスペース区切りでstring要素として追加する。
    • /Users/*****/mongodb/bin/mongod --storageEngine wiredTigerを呼ぶのに相当
    • 今回の場合MongoDB 3.0以降でサポートされるWiredTigerストレージエンジンをデフォルトで使いたいのでこう設定
      • 実際毎回手動で起動するときにこれ書くのしんどい
  • UserNameはそのプログラムを誰として実行するか。"This optional key specifies the user to run the job as. This key is only applicable when launchd is running as root."(launchd.plistのmanpagesより)とのことだけど、普段mongodをログインユーザーで走らせてるので権限ぶっ壊れないようにいちおうそれに揃える。

より詳細な解説は日本語だと LaunchDaemons (launchctl, launchd.plist) の使い方 が親切。