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

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

我相信我必须添加一些设置到/etc/launchd.conf,也许使用launchctl。 我发现所有的文件指向plist文件,但我没有这样的Nexus文件。

在OS X上启动服务的首选方式是使用launchd 。 基本上,你创build一个.plist文件,描述什么需要运行,什么时候,并把文件放在/ Library / LaunchDaemons中。 棘手的是launchd期望能够监视守护进程,所以它不喜欢掉到后台的东西; 如果我正确地理解了nexus,那就意味着以控制台模式运行它,而不是像在大多数系统上那样“启动”它。 我想这是关于你需要在文件中(你可能需要调整可执行文件的path):

<?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