Pregunta

Estoy intentando escribir una launchd agent que se ejecuta una sencilla aplicación para cada usuario que inicia sesión en el sistema Mac OS X.

He creado un archivo llamado com.mycompany.myapp.plist y lo colocó en /Library/LaunchAgents. El contenido de ese archivo son:

{
    LimitLoadToSessionType = "Aqua";
    StartInterval = 10;
    OnDemand = NO;
    KeepAlive = YES;
    RunAtLoad = YES;
    Label = "com.mycompany.myapp";
    Program = "/Users/thomi/myapp";
    ProgramArguments = (
        "/Users/thomi/myapp",
        "-l",
        "-d",
    );
}

Al principio yo no tenía el conjunto de claves StartInterval, ya que pensamos que el agente se iniciaría automáticamente. El problema es que el agente no se inicia a menos expido manualmente los dos comandos siguientes:

launchctl load -S Aqua -D all
launchctl start com.mycompany.myapp

firther, cuando corro launchctl list com.mycompany.myapp me sale el siguiente resultado:

{
    "Label" = "com.mycompany.myapp";
    "LimitLoadToSessionType" = "System";
    "OnDemand" = true;
    "LastExitStatus" = 0;
    "TimeOut" = 30;
    "Program" = "/Users/thomi/myapp";
    ProgramArguments = (
        "/Users/thomi/myapp",
        "-l",
        "-d",
    );
};

Tenga en cuenta que el parámetro LimitLoadToSessionType ha cambiado.

Me estoy perdiendo algo aquí? ¿Existe un mecanismo diferente para comenzar a agentes de este tipo? ¿Por qué ha cambiado la propiedad LimitLoadToSessionType?

¿Fue útil?

Solución 2

Encontrado el problema - al parecer launchd no funciona correctamente con los archivos plist de estilo antiguo. Se carga bien, pero no se ejecutará nada. Volver a crear el archivo de arriba como un archivo XML nuevo estilo resolvió el problema.

Otros consejos

No estoy seguro si es el problema, pero creo que no se debe incluir tanto una OnDemand / RunAtLoad y KeepAlive juntos. Según tengo entendido la documentación, la clave KeepAlive reemplaza el combo OnDemand / RunAtLoad.

http://developer.apple.com/mac /library/technotes/tn2005/tn2083.html#SECCODINGRECOMMENDATIONS

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top