Cómo ejecutar una aplicación que no sea de preparación en el inicio en macOS Sierra

2

Tuve que instalar una versión anterior de Elasticsearch (2.3.3) desde la fuente. El binario se encuentra en /opt/local/elasticsearch-2.3.3/bin/ . Creé el siguiente archivo

/Library/LaunchDaemons/org.elasticsearch.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>org.elasticsearch</string>
        <key>ProgramArguments</key>
        <array>
            <string>/opt/local/elasticsearch-2.3.3/bin/elasticsearch</string>
        </array>
        <key>UserName</key>
        <string>root</string>
<!--         <key>GroupName</key>
        <string>staff</string> -->
        <key>WorkingDirectory</key>
        <string>/opt/local/elasticsearch-2.3.3/bin</string>
        <key>KeepAlive</key>
        <true/>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>

Luego emito el siguiente comando:

sudo launchctl load -w /Library/LaunchDaemons/org.elasticsearch.plist

Cuando pregunto con sudo launchctl list | grep elastic , devuelve org.elasticsearch . Pero cuando compruebo si se está ejecutando elasticsearch con ps ax | grep elastic , no se está ejecutando.

¿Hay algún problema con mi archivo .plist ?

    
pregunta mikeglaz 17.08.2017 - 00:23

1 respuesta

2

Elasticsearch no debe ejecutarse como root. Así que elimine el plist de la base de datos de launchd, mueva el plist a / Library / LaunchAgents (o ~ / Library / LaunchAgents), cree / opt / local / var y modifíquelo ligeramente:

<?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>EnvironmentVariables</key>
    <dict>
        <key>VAR</key>
        <string>VAL</string>
    </dict>
    <key>KeepAlive</key>
    <false/>
    <key>Label</key>
    <string>org.elasticsearch</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/local/elasticsearch-2.3.3/bin/elasticsearch</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/org.elasticsearch.stderr</string>
    <key>StandardOutPath</key>
    <string>/tmp/org.elasticsearch.stdout</string>
    <key>WorkingDirectory</key>
    <string>/opt/local/var</string>
</dict>
</plist>

Luego, verifique /opt/local/elasticsearch-2.3.3 y sus subdirectorios para obtener los permisos adecuados, agregue EnvironmentVariables si es necesario (o elimine la clave & dict) y cargue el plist.

Si todo funciona correctamente, puedes eliminar StandardErrorPath y StandardOutPath y sus cadenas.

También puede ejecutarlo como demonio, pero con un usuario diferente (es decir, su nombre de usuario), depende de sus necesidades / entorno.

    
respondido por el klanomath 17.08.2017 - 03:50

Lea otras preguntas en las etiquetas