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

例如,当服务器启动时,我需要启动Tomcat,我需要启动一个Android模拟器,然后发出一些命令给它。 这些已经在路上了。 我熟悉Linux并了解Daemons的基础知识,我怀疑它会是类似的东西?

LaunchDaemons是在OS X中执行此操作的首选方法。每个守护程序都由/ Library / LaunchDaemons中的.plist文件(用于附加守护程序;内置守护程序在/ System / Library / LaunchDaemons中)控制,该文件指定何时启动守护进程(例如在加载时,在TCP端口上接收连接,在特定时间等),使用什么命令和参数来启动守护进程等。请参阅Apple开发人员文档,并查看/ System /图书馆/ LaunchDaemons的例子。

如果您习惯于使用其他启动系统,则有一个大警告:默认情况下,launchd预期启动的程序不会自行守护。 本页build议启动一个名为/Library/LaunchDaemons/org.apache.tomcat.plist的启动plist,其中包含:

<?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/>