Демон демона не запускається під час завантаження, але працюватиме при завантаженні вручну


0

У мене є визначене демонове визначення

/Library/LaunchDaemons/homebrew.mxcl.docker-machine.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>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string>
    </dict>
    <key>Label</key>
    <string>homebrew.mxcl.docker-machine</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/opt/docker-machine/bin/docker-machine</string>
        <string>start</string>
        <string>default</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>UserName</key>
    <string>sysbh</string>
    <key>WorkingDirectory</key>
    <string>/Users/sysbh</string>
  </dict>
</plist>

Під час завантаження це не працює. Але після входу в систему я можу змусити його працюватиsudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.docker-machine.plist

Будь-які поради, що я можу зробити, щоб з’ясувати, чому запущений пліст не запускає програму під час завантаження / запуску, але чи пізніше?

І припустимо (що є виразною можливістю), що цей демон залежить від першого запущеного демона, який був запущений першим (і щоб зробити його складнішим: цей демон запускається лише один раз, щоб встановити кексти), чи існує спосіб вирішення цієї проблеми?


Це відключили? Спробуйте sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.docker-machine.plist(зверніть увагу -w).
Гордон Девіссон

Ви впевнені, що він не запускається, чи може просто не вийти? Якщо це не вдається, KeepAlive використає 10-секундне відключення перед повторним запуском. Ще кілька ідей: sysbhваш користувач? Якщо так, чи зашифрований ваш домашній каталог? Це зупинить його від роботи , поки ви не ввійшли в систему . Крім того , якщо це ваш користувач, не було б краще реалізувати це як Launch агента ? (поставити запущений список ~/Library/LaunchAgents/)
pmdj

Нарешті, ви згадуєте про кекстну залежність; ви можете змусити запускати демонів і агентів запускати, коли вузол IOKit збігається. Однак бінарний агент повинен відповісти на це повідомлення. Отже, це буде працювати лише в тому випадку, якщо ваш кекс опублікує вузол в IORegistry і якщо докер-машина може обробляти створений IOKit, що відповідає XPC події.
pmdj

Ні, він не отримав інвалідів і мені не потрібен прапор -w, щоб він працював з командного рядка. Диск є FileVaulted, але в момент завантаження демонів він був уже розшифрований (необхідний для завантаження). Зрозуміло, що команда виходить з ладу під час завантаження, але не пізніше, коли завантажується вручну. Це не повинно бути LaunchAgent, оскільки він повинен запускатися перед тим, як хтось увійде в систему, я просто не хочу, щоб цей процес запускався з привілеями root з міркувань безпеки, тому я використовую іншого користувача. Як я можу дізнатися, чи кекс публікує цей вузол?
gctwnl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.