Я хочу иметь возможность запускать 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
.