nokの雑記

技術的な内容にしようと思ったけど無理でした。

Macでplist経由の自動起動を切ろうとした話

td-agentを使っていたのですが,自動起動させたくないので設定を見直したらちょっとハマった話.
たぶん他の.plistでも効くと思われます.

よもやま

td-agent.plistの場所はこちらでした.

/Library/LaunchDaemons/td-agent.plist

起動と停止はこちら.
(起動)sudo launchstl load /Library/LaunchDaemons/td-agent.plist
(停止)sudo launchstl unload /Library/LaunchDaemons/td-agent.plist

本題

まずはファイルを見てみましょう.こんな感じ.

<?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>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>td-agent</string>
  <key>ProgramArguments</key>
  <array>
    <string>/opt/td-agent/usr/sbin/td-agent</string>
    <string>--log</string>
    <string>/var/log/td-agent/td-agent.log</string>
    <string>--use-v1-config</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/opt/td-agent</string>
</dict>
</plist>

自動起動をしないときはRunAtLoadの下にある<true/>から<false/>にしたらOKと思ったら,ダメでした.
実は上の方に記述されているKeepAliveが<ture/>の場合,システムはこのデーモンをなんとか起動し続けようとするらしいです(killしてもすぐに復帰するとか).

なので,KeepAliveとRunAtLoadの<true/>を両方とも<false/>にしたら解決しました.