Mac-Osx

啟動 PathState 使用

  • October 16, 2013

我正在嘗試使用 PathState 在 Mac OSX 上啟動和停止守護程序。它從我創建一個名為 /var/cache/myjob/run 的文件開始。但是,當文件被刪除時,守護程序不會再次停止。

你如何使用 PathState 讓它停止?

啟動配置

<?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 項指定程序應該在什麼條件下啟動(如果它退出,可能會重新啟動),但不指定應該停止的條件。您需要使用其他一些機制來停止該過程。(請注意,您可以使用 eg 停止正在執行的守護程序sudo launchctl stop com.clcbio.clcserver

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