例如,当服务器启动时,我需要启动 Tomcat,我需要启动 Android 模拟器,然后向它发出一些命令。这些已经在路径上。我熟悉 Linux,了解守护进程的基础知识,我怀疑它会是类似的东西?
答案1
LaunchDaemons 是在 OS X 中执行此操作的首选方法。每个守护进程都由 /Library/LaunchDaemons 中的 .plist 文件控制(用于附加守护进程;内置守护进程位于 /System/Library/LaunchDaemons 中),该文件指定何时启动守护进程(例如,在加载时、在 TCP 端口上收到连接时、在特定时间等)、使用什么命令和参数来启动守护进程等。请参阅 Apple 开发者文档这里,并在 /System/Library/LaunchDaemons 中查找示例。
如果你习惯使用其他启动系统,请注意:默认情况下,launchd 需要启动以下程序:不是将自己变为恶魔。这一页建议使用名为 /Library/LaunchDaemons/org.apache.tomcat.plist 的 launchd plist 启动 Tomcat,其中包含:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//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>org.apache.tomcat</string>
<key>ProgramArguments</key>
<array>
<string>/Library/Tomcat/Home/bin/catalina.sh</string>
<string>run</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
(注意 catalina.sh 被要求“运行”,不是“开始”。)
如果您需要启动某些无法阻止守护进程的程序,则需要在 .plist 中添加如下内容:
<key>KeepAlive</key>
<false/>
<key>AbandonProcessGroup</key>
<true/>