Назад | Перейти на главную страницу

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>

Вы не можете сделать это с помощью объекта launchd. Элемент launchd указывает условия, при которых программа должна быть запущена (и, возможно, перезапускаться, если она завершается), но не условия, при которых она должна быть остановлена. Вам нужно будет использовать какой-то другой механизм, чтобы остановить процесс. (Обратите внимание, что вы можете остановить работающий демон, например, sudo launchctl stop com.clcbio.clcserver)