launchd uso do PathState

1

Estou tentando usar o PathState para iniciar e interromper um daemon no Mac OSX. Começa quando eu crio um arquivo chamado / var / cache / myjob / run. No entanto, quando o arquivo é removido, o daemon não pára novamente.

Como você usa o PathState para que ele pare?

A configuração de lançamento

<?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>
    
por Erik Martino 22.04.2013 / 15:36

1 resposta

0

Você não pode fazer isso com um item de lançamento. Um item launchd especifica as condições sob as quais um programa deve ser iniciado (e talvez reiniciado se ele sair), mas não as condições sob as quais ele deve ser interrompido. Você precisará usar algum outro mecanismo para interromper o processo. (Observe que você pode interromper um daemon em execução com, por exemplo, sudo launchctl stop com.clcbio.clcserver )

    
por 22.04.2013 / 20:21