1 votos

¿Por qué no soy capaz de ejecutar mi script de inicio al iniciar sesión?

Estoy usando OS X Yosemite. Estoy tratando de ejecutar un sh script en el inicio de sesión, pero estoy teniendo problemas. He creado el siguiente archivo en mi /Library/LaunchAgents directorio de ...

-rwxr-xr-x  1 root  wheel  604 Oct 19 09:24 eXist.plist

El contenido del archivo es el siguiente:

<?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>Label</key>
        <string>eXist</string>
        <key>Program</key>
        <string>/Applications/eXist-db/bin/startup.sh</string>
        <key>RunAtLoad</key>
        <true/>
        <key>UserName</key>
        <string>root</string>
        <key>StandardErorPath</key>
        <String>/tmp/eXistDB.err</string>
        <key>StandardOutputPath</key>
        <string>/tmp/eXistDB.out</string>
    </dict>
</plist>

Sin embargo, nada es llegar a ejecutar (al menos no de salida de archivos están siendo generados) y no puedo entender por qué. He verificado que existe la ruta. ¿Cómo puedo obtener mi script para que se ejecute al iniciar sesión?

Editar:

Para demostrar que existe la ruta, aquí está la salida cuando tryihng la ruta de acceso en la secuencia de comandos, versus lo que se propuso ...

Daves-MacBook-Pro-2:~ davea$ ls /Applications/eXist-db/bin/startup.sh 
/Applications/eXist-db/bin/startup.sh
Daves-MacBook-Pro-2:~ davea$ ls /Applications/eXist-db.app/Contents/Resources/eXist-db/bin/startup.sh
ls: /Applications/eXist-db.app/Contents/Resources/eXist-db/bin/startup.sh: No such file or directory

1voto

klanomath Puntos 19587

Usted ha cometido algunos errores en su plist:

  • /Applications/eXist-db/bin/startup.sh probablemente no existe si ha instalado eXist-db 2.2

    Una ruta de acceso válida es /Applications/eXist-db.app/Contents/Resources/eXist-db/bin/startup.sh

  • StandardErorPath y StandardOutputPath hay claves válidas

    Las claves válidas son StandardErrorPath y StandardOutPath

  • probablemente la root <-> launchd problema ya abordado por patrix

  • el plist no tiene que ser ejecutable

Para iniciar la aplicación después de iniciar sesión con su usuario sólo tiene que añadir a Preferencias del Sistema -> Usuarios Y Grupos -> usuario -> Elementos de inicio de Sesión


Para empezar existen-db 2.0 en el momento de arranque y al embarcadero después de iniciar la sesión del usuario, tienes que hacer lo siguiente:

Si no lo has hecho ya, introduzca primero:

sudo /Applications/eXist-db/tools/wrapper/bin/exist.sh install

para instalar un LaunchDaemon org.tanukisoftware.la envoltura.eXist-db.plist en /Library/LaunchDaemons/. Si desea agregar un StandardErrorPath y StandardOutPath modificar el archivo con sudo nano /Library/LaunchDaemons/org.tanukisoftware.wrapper.eXist-db.plist.

Se debe tener este aspecto por último:

<?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>Disabled</key>
    <true/>
    <key>Label</key>
    <string>org.tanukisoftware.wrapper.eXist-db</string>
    <key>OnDemand</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/eXist-db/tools/wrapper/bin/exist.sh</string>
        <string>launchdinternal</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/org.tanukisoftware.wrapper.eXist-db.stderr</string>
    <key>StandardOutPath</key>
    <string>/tmp/org.tanukisoftware.wrapper.eXist-db.stdout</string>
</dict>
</plist>

Carga el demonio de forma permanente con:

sudo launchctl load -w /Library/LaunchDaemons/org.tanukisoftware.wrapper.eXist-db.plist 

Ahora crear un segundo archivo en ~/Library/LaunchDaemons/ nombre com.existen.plist con nano. Se debe tener este aspecto por último:

<?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>Label</key>
    <string>com.eXist</string>
    <key>Program</key>
    <string>/Applications/eXist-db/bin/startup.sh</string>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/com.eXist.stderr</string>
    <key>StandardOutPath</key>
    <string>/tmp/com.eXist.stdout</string>
</dict>
</plist>

Un StandardErrorPath y StandardOutPath fue añadido.

Cargar el agente de forma permanente con:

launchctl load -w ~/Library/LaunchAgents/com.eXist.plist

Hecho.

Sugerencia: no utilice el editor de texto para modificar el plists: de lo contrario el plist de archivos puede ser incorrecto.

0voto

No se puede lanzar cosas como usuario root de su personal LaunchAgents carpeta ya que esto podría crear un lugar de gran agujero de seguridad. Debe haber un mensaje acerca de esto en /var/log/system.log.

De hombre launchd.plist:

Nombre de usuario de la cadena de

Esta clave opcional especifica el usuario para ejecutar el trabajo. Esta clave sólo es aplicable cuando launchd se ejecuta como root.

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