我正在尝试使用OSX 10.10.4上使用shell脚本的相关项目启动一个匿名服务器应用程序。
shell脚本已设置为可执行文件。
在启动时,没有任何操作可以启动Wakanda \ Server.app/Contents/MacOS/Wakanda \ Server。
请帮我完成这项工作。
shell脚本位于:
Macintosh HD:Library:StartupItems:DispatchStartup:DispatchStartup.sh
此shell脚本的内容是:
#!/bin/sh
. /etc/rc.common
# The start subroutine
StartService() {
# Insert your start command below. For example:
/Applications/Wakanda\ Server.app/Contents/MacOS/Wakanda\ Server --solution=/Applications/Dispatch/Dispatch\ Solution/Dispatch.waSolution
# End example.
}
# The stop subroutine
StopService() {
# Insert your stop command(s) below. For example:
killall -TERM /Applications/Wakanda\ Server.app/Contents/MacOS/Wakanda\ Server
sleep 15
killall -9 /Applications/Wakanda\ Server.app/Contents/MacOS/Wakanda\ Server
# End example.
}
# The restart subroutine
RestartService() {
# Insert your start command below. For example:
killall -HUP /Applications/Wakanda\ Server.app/Contents/MacOS/Wakanda\ Server
# End example.
}
RunService "$1"
// --------------------------------------------- ----------------------
shell脚本旁边的//是StartParameters.plist // ------------------------------------------------ --------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
<key>Description</key>
<string>Wakanda Server</string>
<key>OrderPreference</key>
<string>Late</string>
<key>Provides</key>
<array>
<string>Web service to database and objects</string>
</array>
<key>Uses</key>
<array>
<string>Network</string>
</array>
</dict>
</plist>
答案 0 :(得分:1)
自OS X v10.4以来,已经弃用了启动项以支持launch daemons,并且它们似乎最终在v10.10中被完全禁用。更好的选择是......创建一个启动守护进程。它将是/ Library / LaunchDaemons /中的属性列表(.plist)文件,其中包含有关启动内容和启动时间的说明。
这会比平时稍微复杂一点,因为启动系统喜欢跟踪它启动的工作,这要求他们不落入后台,并且我没有看到任何阻止Wakanda服务器自我背景的事情。您可以通过向.plist添加指令来解决此问题,以使其保持活动状态,并放弃&#34;放弃&#34;它的进程组(即不会杀掉它产生的任何剩余的后台进程)。 可能也是一个问题,因为没有好的方法告诉它等到网络启动。但是,如果它试图侦听特定的IP地址或接口,这通常是一个问题;如果它只是监听0.0.0.0(即计算机上的所有IP),这不是一个问题,因为它只会在接口出现时接收接口。
我认为.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>Disabled</key>
<false/>
<key>Label</key>
<string>local.wakanda-server</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Wakanda Server.app/Contents/MacOS/Wakanda Server</string>
<string>--solution=/Applications/Dispatch/Dispatch Solution/Dispatch.waSolution</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>AbandonProcessGroup</key>
<false/>
</dict>
</plist>
将其放在/Library/LaunchDaemons/local.wakanda-server.plist中,将所有权设置为root:wheel,将权限设置为644,然后重新启动或使用sudo launchctl load /Library/LaunchDaemons/local.wakanda-server.plist
手动加载。