4 votos

¿Puedo crear una aplicación Automator para iniciar Tomcat cuando lo necesite?

Puedo iniciar Apache Tomcat (instalado a través de HomeBrew) en el Terminal usando

$ catalina run

Pero no funciona en una aplicación de Automator Shell script usando bash

Intenté establecer un bash Shell script en Automator así:

catalina run

Cuando ejecuto la aplicación Automator, no funciona y muestra -: catalina: command not found .

¿Cuál es la forma correcta de crear una aplicación de Automator, o tengo que utilizar AppleScript?

3voto

Tony Williams Puntos 4903

Cuando ejecutas un comando shell o script en Automator se le pasa el PATH por defecto de tu sistema, no el de tu perfil de bash. Esta es la razón por la que bash no puede encontrar el catalina comando.

Siempre debe especificar la ruta completa del comando en el shell scripts. Si se instaló a través de HomeBrew esto es probablemente /usr/local/bin/catalina pero puede confirmarlo ejecutando which catalina en una sesión de terminal.

3voto

user3439894 Puntos 5883

Para responder realmente a las preguntas que has hecho:

  • ¿Puedo crear una aplicación Automator para iniciar y detener Tomcat cuando lo necesite?

  • ¿Cuál es la forma correcta de hacer esto, o necesito AppleScript o algo así?

  • ¿Y es posible hacer tanto el arranque como la parada en una sola aplicación de Automator?

  • ¿Cuál es la forma correcta de crear una aplicación de Automator, o tengo que utilizar AppleScript?

Como normalmente hay más de una forma de hacer algo, vamos a abstenernos de usar "...la forma correcta de..." y mostrarte algunas opciones.

Si simplemente quiere ser capaz de cambiar el estado de Apache Tomcat es decir iniciar o Detener entonces se puede utilizar la siguiente línea de comandos en un Automatizador Flujo de trabajo de la aplicación utilizando un Ejecutar Shell script acción :

  • En Automatizador crear un nuevo Flujo de trabajo de la aplicación .
  • Añade un Ejecutar Shell script acción .
    • Ajustes : Shell: /bin/bash y Pasar la entrada: a stdin

Sustituir el código por defecto con la siguiente línea de código :

[[ $(/bin/ps aux | /usr/bin/grep [t]omcat) == "" ]] && /usr/local/bin/catalina start || /usr/local/bin/catalina stop
  • Salvar el Automatizador Flujo de trabajo de la aplicación .

Este comando comprueba para ver si Apache Tomcat es corriendo y si no entonces comienza y si entonces se detiene lo Simplemente cambia el estado de Apache Tomcat . Es una solución sin complicaciones.


Una solución más sólida sería utilizar un Ejecutar AppleScript acción en su lugar.

  • En Automatizador crear un nuevo Flujo de trabajo de la aplicación .
  • Añade un Ejecutar AppleScript acción .

Utilice lo siguiente ejemplo AppleScript código en lugar del código por defecto :

try
    set isRunning to (do shell script "/bin/ps aux | /usr/bin/grep [t]omcat")
on error number 1
    set isRunning to missing value
end try

if isRunning contains missing value then
    display dialog "                Click the Start button to start Apache Tomcat." buttons {"Cancel", "Start"} ¬
        default button 2 with title "Start Apache Tomcat"
    do shell script "/usr/local/bin/catalina start"
else
    display dialog "                Click the Stop button to stop Apache Tomcat." buttons {"Cancel", "Stop"} ¬
        default button 2 with title "Stop Apache Tomcat"
    do shell script "/usr/local/bin/catalina stop"
end if
  • Salvar el Automatizador Flujo de trabajo de la aplicación .

Esto también podría utilizarse en un AppleScript Aplicación creado en script Editor por sí mismo, sin necesidad de Automatizador . En cualquiera de los casos, cuando se ejecute se presentará uno u otro Cuadros de diálogo .

Start Apache Tomcat Stop Apache Tomcat

Esto le da la oportunidad de ver si es o no corriendo y cancelar si quieres en su lugar.


Nota: Con la excepción de la utilización de un try declaración y un on error number 1 declaración no hay otro tratamiento de errores presentado en el ejemplo AppleScript código . Para más información tratamiento de errores como sea apropiado/necesario/querido, el usuario tiene la responsabilidad de añadir las tratamiento de errores para cualquier código de ejemplo presentado.

Además, el código de ejemplo El programa presentado aquí fue probado bajo una instalación limpia de MacOS 10.12.6 con herramientas de línea de comandos (MacOS Sierra versión 10.12) para Xcode-9.1, Homebrew, JDK 9.0.1, y apache-tomcat-8.5.23.tar.gz instalado. No veo ninguna razón por la que esto no funcionaría en MacOS 10.13 también.

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