2 votos

Cómo ejecutar una app que no es de cerveza al inicio en macOS Sierra

Tuve que instalar una versión antigua de Elasticsearch (2.3.3) desde el código fuente. El binario se encuentra en /opt/local/elasticsearch-2.3.3/bin/ He creado 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>

A continuación, 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 elasticsearch se está ejecutando con ps ax | grep elastic no está funcionando.

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

0 votos

Por favor, no hagas dobles posts y borra el idéntico en stackexchange.com.

1voto

klanomath Puntos 19587

Elasticsearch no debe ser ejecutado como Root. Así que elimina el plist de la base de datos de launchd, mueve el plist a /Library/LaunchAgents (o ~/Library/LaunchAgents), crea /opt/local/var y modifícalo 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>

A continuación, comprueba que /opt/local/elasticsearch-2.3.3 y sus subdirectorios tienen los permisos adecuados, añade EnvironmentVariables si es necesario (o elimina la clave y el dict) y carga el plist.

Si todo funciona correctamente puede 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.

0 votos

Ok esto funciona cuando lo cargo manualmente, pero no se carga en el arranque...

0 votos

Simplemente reiniciando y luego iniciando la sesión.

0 votos

@mikeglaz No tengo ningún problema con esta configuración. Por favor, comprueba si hay errores en org.elasticsearch.stdout/stderr. Probablemente sea un error de permisos en la ruta /opt/local/elasticsearch-2.3.3 y/o en la ruta /opt/local/var. Todo el mundo necesita acceso completo a todos los subdirectorios. Adicionalmente/alternativamente puede mover ...stdout/stderr a /opt/local/tmp.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X