2009-09-03 11 views
26

Estoy tratando de averiguar por qué mi script launchd no funciona. Es extremadamente simple, pero soy nuevo en el entorno de Mac e intento acostumbrarme. Aquí está mi plist. Sé que es necesario ProgramArguments, así que simplemente puse la ruta del script allí.MUY simple Launchd plist no ejecuta mi secuencia de comandos

<?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.tomcat.plist</string> 
    <key>ProgramArguments</key> 
    <array> 
    <string>/opt/apache-tomcat-5.5.27/bin/startup.sh</string> 
    </array> 
    <key>OnDemand</key> 
    <false/> 
</dict> 
</plist> 

Cuando trato de ejecutar launchctl load <name> parece cargar correctamente (en la que no me da ningún mensaje de error), pero no parece ser el guión de ejecución, incluso en el reinicio.

He utilizado todos los ejemplos que he encontrado en línea y no puedo entender por qué esto no está ejecutando mi script en el arranque.

Respuesta

13

Para hacer el script se ejecuta automáticamente cuando se llama a la carga launchctl, es necesario agregar: -

<key>RunAtLoad</key> 
<true/> 

otra posibilidad es utilizar: -

launchctl start com.tomcat.plist 
36

Sólo en caso de cualquier otra persona corre a través de este problema, y ​​ya tiene <key>RunAtLoad</key><true/> en su plist, quiero ofrecer algunas soluciones adicionales.

permisos, compruebe dos veces para asegurarse de que su script es ejecutable (buscan una 'x'):

ls -l /opt/apache-tomcat-5.5.27/bin/startup.sh 

permisos de modificación si es necesario:

chmod +x /opt/apache-tomcat-5.5.27/bin/startup.sh 

también ejecutar el script directamente primero y asegúrese de que funciona:

/opt/apache-tomcat-5.5.27/bin/startup.sh 

Si la secuencia de comandos es ejecutable y funciona correctamente directamente, tratar tizón el registro del sistema de depuración launchd:

sudo launchctl log level debug 
tail -f /var/log/system.log 

El -f bandera (básicamente) muestra continuamente el final (últimas entradas) del registro. Puede eliminar este indicador para imprimir una instantánea del final del registro. Si usa esta bandera, necesitará abrir una nueva terminal para ejecutar otros comandos. Presione CTRL + C para finalizar la sesión de cola. Para más información: depuración

man tail 

Cuando haya terminado:

sudo launchctl log level error 

hay otros niveles de registro. Para más información:

man launchctl 

Si realiza algún cambio en la secuencia de comandos o plist, asegúrese de que vuelva a cargar el plist.Por ejemplo:

launchctl unload ~/Library/LaunchAgents/com.tomcat.plist 
launchctl load ~/Library/LaunchAgents/com.tomcat.plist 

Si hizo sólo cambios en el guión y no el plist, que sólo puede reiniciar el plist:

launchctl stop com.tomcat.plist 
launchctl start com.tomcat.plist 

si se agrega el siguiente valor clave para su plist:

<key>KeepAlive</key> 
<true/> 

A continuación, puede simplemente ejecutar:

launchctl stop com.tomcat.plist 

Y se reiniciará automáticamente.

Si nada de esto ayuda, y está teniendo problemas específicamente para configurar Tomcat en OS X, this tutorial podría ser de ayuda.

+0

teniendo el mismo problema con un script de prueba que escribí ... los comandos launchctl 'start' y 'stop' devuelven el error "No such process" – Michael

+2

@Michael 'start' y' stop' toman una etiqueta como argumento no el nombre del archivo En el ejemplo anterior, la configuración tiene ' com.tomcat.plist' pero es probable que la tuya solo tenga 'com.tomcat' para que' launchctl start com.tomcat' funcione. –

+7

precioso. "sudo launchctl log level error" ya no se implementa. – Michael

Cuestiones relacionadas