如何在 Mac OSX 服务器启动时运行终端命令?

如何在 Mac OSX 服务器启动时运行终端命令?

例如,当服务器启动时,我需要启动 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/>

相关内容