5

Как создать зависимость между двумя демонами, запускаемыми при запуске системы?

Я хотел бы запустить сонар при запуске системы, но для этого требуется, чтобы сервер MySQL был уже запущен и работал.

Я не нашел явного способа определения зависимости процесса в списках запусков.

И на странице Википедии, посвященной запуску, есть очень обнадеживающее предложение:

Самая сложная часть для управления во время запуска launchd - это зависимости.

Демон сонара:

<?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>WorkingDirectory</key>
    <string>/usr/local/Sonar/sonarinstall</string>
    <key>Label</key>
    <string>org.sonarsource.sonar</string>
    <key>KeepAlive</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>bin/macosx-universal-64/sonar.sh</string>
        <string>start</string>
    </array>
    <key>UserName</key>
    <string>server1</string>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>  

MySQL демон:

<?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>homebrew.mxcl.mysql</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/mysql/bin/mysqld_safe</string>
    <string>--bind-address=127.0.0.1</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/usr/local/var</string>
</dict>
</plist>

1 ответ1

1

Вы можете достичь своей цели, изменив KeepAlive -Part своего MySQL-plist.

Следующее должно (в теории) предоставить то, что вы ищете:

<key>KeepAlive</key>
<dict>
    <key>OtherJobEnabled</key>
    <string>org.sonarsource.sonar</string>
</dict>

Это должно привести к тому, что MySQL будет запущен до сервера эхолота и будет работать до тех пор, пока работает сервер эхолота.

Для получения дополнительной информации взгляните на эти ресурсы:

Если это не сработает, Apple попросит вас использовать InterProcessCommunication (IPC), чтобы ваши настройки работали. Но, честно говоря, это за пределами моего понимания! Кто-то может прыгнуть туда.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .