Linux
如何在 Mac OSX 伺服器上啟動時執行終端命令?
例如,當伺服器啟動時,我需要啟動 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/>