2 votos

¿Por qué mi launchd script no se ejecuta en el inicio de sesión?

He tratado de seguir esta pregunta de modo que al iniciar la sesión, el que está configurado actualmente protector de pantalla se convierte en el fondo de escritorio. Por lo tanto, he creado el siguiente script:

# login.sh
/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background &

Entonces he creado un lanzamiento de servicios como ~/Library/LaunchAgents/my_login_items.plist con el contenido

<?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>com.user.loginscript</string>
   <key>Program</key>
   <string>/path/to/login.sh</string>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>

Y, a continuación, ejecute launchctl load ~/Library/LaunchAgents/my_login_items.plist. No pasa nada, sin embargo.

3voto

John N Puntos 400

Esta es una profunda insatisfacción en la respuesta, pero yo tengo que trabajar por ejecutar /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background & en un subshell. He cambiado login.sh a...

#!/bin/bash
longname=$0
shortname=$(basename "${longname}")
echo "$(date -u "+%Y-%m-%d %H:%M:%S") ${shortname} (${longname}) running..."
output=$(/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background)    # <- COMMAND GOES HERE            
echo "$(date -u "+%Y-%m-%d %H:%M:%S") ${shortname} ended."

...y que funciona (mi habitual escritorio estáticas cambios en mi protector de pantalla predeterminado). Yo uso este modismo para otros launchd tareas, la ejecución de las tareas en un subshell, así que puede probar si la operación tuvo éxito y de registro $output. No entiendo por qué esto funciona mientras el original no, pero al menos funciona.

Tenga en cuenta que he quitado el & desde el final de su comando - no estoy convencida de que esto es necesario con launchd, y que estaba impidiendo mi contenedor de secuencia de comandos de registro de que se había terminado (aunque el & no era la causa del problema original).

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