macos launchd

macos - Muy simple Launchd plist no ejecuta mi script



(2)

Estoy tratando de averiguar por qué mi script launchd no está funcionando. Es extremadamente simple, pero soy nuevo en el entorno de mac y trato de acostumbrarme. Aquí está mi plista. Sé que se requiere ProgramArguments , así que simplemente puse la ruta del script allí.

<?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 intento ejecutar launchctl load <name> , parece que se carga correctamente (ya que no me da ningún mensaje de error), pero el script no parece estar ejecutándose, incluso al reiniciar.

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


En caso de que alguien más se encuentre con este problema, y ​​ya tenga <key>RunAtLoad</key><true/> en su lista, quiero proporcionar algunas soluciones adicionales.

Verifique los permisos para asegurarse de que su script sea ejecutable (busque una ''x''):

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

Modificar permisos si es necesario:

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

También ejecute el script directamente primero y asegúrese de que funcione:

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

Si la secuencia de comandos es ejecutable y se ejecuta correctamente directamente, intente seguir el registro del sistema para depurar launchd:

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

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

man tail

Cuando hayas terminado de depurar:

sudo launchctl log level error

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

man launchctl

Si realiza algún cambio en el script o plist, asegúrese de volver a cargar el plist. Por ejemplo:

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

Si SOLO realizó cambios en el script y NO en el plist, simplemente puede reiniciar el plist:

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

Si agrega la siguiente clave-valor a su plist:

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

Entonces puedes simplemente correr:

launchctl stop com.tomcat.plist

Y se reiniciará automáticamente.

Si nada de esto ayuda, y específicamente tiene problemas con la configuración de Tomcat en OS X, este tutorial puede ser de ayuda.


Para hacer que su script se ejecute automáticamente cuando llame a launchctl load, debe agregar:

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

Alternativamente, usted podría usar: -

launchctl start com.tomcat.plist