我正在尝试使用PathState在Mac OSX上启动和停止守护进程。 它创build一个名为/ var / cache / myjob / run的文件。 但是,当文件被删除时,守护程序不会再次停止。
你如何使用PathState使其停止?
启动configuration
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>StandardOutPath</key> <string>/var/log/tomcat/server.log</string> <key>StandardErrorPath</key> <string>/var/log/tomcat/server.log</string> <key>Label</key> <string>com.clcbio.clcserver</string> <key>WorkingDirectory</key> <string>/Users/tomcat/tomcatdist</string> <key>GroupName</key> <string>daemon</string> <key>KeepAlive</key> <dict> <key>PathState</key> <dict> <key>/var/cache/tomcat/run</key> <true /> </dict> </dict> <key>ProgramArguments</key> <array> <string>/bin/bash</string> <string>-c</string> <string>java -Xmx512m -XX:MaxPermSize=192m -Djava.awt.headless=true -Djava.library.path=./native -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=./conf/logging.properties -Djava.endorsed.dirs=./endorsed -Dcatalina.base=./ -Dcatalina.home=./ -cp bin/bootstrap.jar:./conf org.apache.catalina.startup.Bootstrap</string> </array> <key>UserName</key> <string>tomcat</string> </dict> </plist>
你不能用launchd项目来做到这一点。 启动的项目指定程序开始的条件(如果退出,可能会重新启动),而不是应该停止的条件。 你需要使用其他一些机制来停止这个过程。 (请注意,您可以使用例如sudo launchctl stop com.clcbio.clcserver停止正在运行的守护程序)