如何在启动时运行基于 Java Service Wrapper 的应用程序

如何在启动时运行基于 Java Service Wrapper 的应用程序

我希望能够在 Mac 上将 Sonatype Nexus 作为服务运行。它附带了适用于 Mac 的 Java Service Wrapper 启动脚本,因此我基本上有一个可以启动服务器的 shell 脚本。

我认为我必须向 /etc/launchd.conf 添加某种设置,也许可以使用 launchctl。我发现的所有文档都指向 plist 文件,但我没有 Nexus 的此类文件。

答案1

在 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

相关内容