Назад | Перейти на главную страницу

Как запустить приложение на основе Java Service Wrapper при запуске

Я хочу иметь возможность запускать Sonatype Nexus в качестве службы на Mac. Он поставляется со сценариями запуска Java Service Wrapper для Mac, поэтому у меня в основном есть сценарий оболочки, который может запускать сервер.

Я считаю, что мне нужно добавить какие-то настройки в /etc/launchd.conf и, возможно, использовать launchctl. Вся документация, которую я нашел, указывает на файлы plist, но у меня нет такого файла для Nexus.

Предпочтительный способ запуска служб в OS X - с запуск. По сути, вы создаете файл .plist, который описывает, что и когда нужно запускать, и помещаете файл в / Library / LaunchDaemons. Сложность в том, что launchd ожидает, что сможет отслеживать демона, поэтому ему не нравятся вещи, которые уходят в фоновый режим; Если я правильно понимаю nexus, это означает, что он запускается в консольном режиме, а не "запускается", как в большинстве систем. Я думаю, это то, что вам нужно в файле (возможно, вам придется изменить путь к исполняемому файлу):

<?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>com.sonatype.nexus</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/nexus/bin/jsw/macosx-universal-32/nexus</string>
        <string>console</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Сохраните это как /Library/LaunchDaemons/com.sonatype.nexus.plist, установите право собственности на root: wheel и разрешения на 644. Чтобы активировать его, перезагрузите компьютер или выполните команду sudo launchctl load /Library/LaunchDaemons/com.sonatype.nexus.plist.