エンジニアのひよこ_level10

【毎日更新!】新卒4年目エンジニアブログです!

【Mac】PCを再起動しても、再度プロセス起動させるlaunchctl【843日目】

PC再起動すると終わるプロセス

PCを再起動してしまうと、プロセスは終わってしまうが、
mysqlとか、svnserveとか、gitbucketとかみたいに、再起動したらまた立ち上がってほしいプロセスがある。

そんな時に、PCが再起動したらプロセスをまた起動させる設定がしたい。

launchctl

launchctlを設定すると良い。

  1. 設定ファイルを作る
  2. ファイルを設定する

の2手順。

1. 設定ファイルを作る

gitbucketを例にします。

java -jar /usr/local/opt/gitbucket/libexcec/gitbucket.warというコマンドを再起動したい場合。

○作るファイル
/Library/LaunchDaemons/gitbucket.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>Label</key>
    <string>gitbucket</string>
    <key>ProgramArguments</key>
    <array>
      <string>java</string>
      <string>-jar</string>
      <string>/usr/local/opt/gitbucket/libexcec/gitbucket.war</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

この時、以下に注目

    <key>ProgramArguments</key>
    <array>
      <string>java</string>
      <string>-jar</string>
      <string>/usr/local/opt/gitbucket/libexcec/gitbucket.war</string>
    </array>

このように、 <array>タグの後に、入れたいコマンドを区切って格納していくことで設定できる。

2. ファイルを設定する

sudo launchctl load /Library/LaunchDaemons/gitbucket.plist

作ったファイルを指定して、loadする。

ちなみに、設定を解除したい場合は unloadになる

sudo launchctl unload /Library/LaunchDaemons/gitbucket.plist