Linux

如何在 Mac OSX 伺服器上啟動時執行終端命令?

  • August 24, 2011

例如,當伺服器啟動時,我需要啟動 Tomcat,我需要啟動一個 Android 模擬器,然後向它發出一些命令。這些已經在路上了。我熟悉 Linux 並了解守護程序的基礎知識,我懷疑它會是類似的東西嗎?

LaunchDaemons 是在 OS X 中執行此操作的首選方式。每個守護程序由 /Library/LaunchDaemons 中的 .plist 文件控制(對於附加守護程序;內置守護程序位於 /System/Library/LaunchDaemons 中),它指定何時啟動守護程序(例如在載入時,在特定時間在 TCP 埠上接收到連接時等),用於啟動守護程序的命令和參數等。請參閱此處的 Apple 開發人員文件,並查看 /System/庫/LaunchDaemons 範例。

如果您習慣於使用其他啟動系統,那麼一個大警告:預設情況下,launchd 期望程序不會啟動自己的守護程序。此頁面建議使用名為 /Library/LaunchDaemons/org.apache.tomcat.plist 的啟動 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/>

引用自:https://serverfault.com/questions/304506