Использование launchd PathState
Я пытаюсь использовать 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>
1 ответ
Решение
Вы не можете сделать это с запущенным элементом. Элемент launchd определяет условия, при которых программа должна быть запущена (и, возможно, перезапущена при ее выходе), но не условия, при которых она должна быть остановлена. Вам нужно будет использовать какой-то другой механизм, чтобы остановить процесс. (Обратите внимание, что вы можете остановить работающий демон, например, sudo launchctl stop com.clcbio.clcserver
)