¿Cómo forzar la salida de un script AppleScript lanzado desde la barra de herramientas?

3

Tengo un script de AppleScript (para iniciar MySQL) que ejecuto desde el menú de la barra de herramientas de AppleScript. Hace el trabajo (inicia MySQL), sin embargo, el script no parece estar saliendo. Y la rueda dentada en la barra de herramientas sigue girando.

Gearwheel keeps rotating

Al hacer clic en la rueda dentada, puedo hacer clic en el botón de cierre 'x' para ese script, pero no hace nada. No hay procesos congelados en Activity Monitor.

¿Cómo puedo "forzar la salida" de ese script?

PD Alguien preguntó cuál es el guión, aquí está:

do shell script "sudo /usr/local/mysql/support-files/mysql.server start" with administrator privileges
Oleg
fuente
¿Cuál es el guión?
Tetsujin
@Tetsujin Lo he agregado a la descripción de la pregunta.
Oleg
1
De acuerdo, lo configura como un script de shell, por lo tanto, esperará hasta que la aplicación que inició se cierre, antes de pasar a la siguiente línea. Realmente no sé cómo prevenir eso.
Tetsujin
1
Tengo algunos scripts que permanecen en ejecución durante días, como el "padre" de los procesos iniciados; en el momento de dejar de fumar, luego ejecutan más instrucciones para poner en orden después. No los tengo configurados como Servicios, por lo que no me molestan al correr la rueda dentada.
Tetsujin
1
Guarde el script como una aplicación, inicie haciendo doble clic. Mundano, pero funciona para mí; sin embargo, esperaría a ver si alguien más inteligente que yo sabe cómo lograrlo, sería mejor a largo plazo.
Tetsujin

Respuestas:

1

Ok, primero que nada, cuando esté utilizando "AppleScript con" privilegios de administrador "no debe usar sudo

En segundo lugar, debe enviar el trabajo en segundo plano si desea que el AppleScript termine.

La forma más fácil de hacerlo es poner el comando en un script de shell, así:

#!/bin/zsh -f

/usr/local/mysql/support-files/mysql.server start &|

exit 0

(Nota la &| Al final de la línea. Eso le dice al proceso que vaya al 'fondo')

Guarda esas 3 líneas en un archivo llamado algo así como /usr/local/bin/start-mysql-server.sh y luego hacer

chmod 755 /usr/local/bin/start-mysql-server.sh

para hacerlo ejecutable.

Finalmente, cambie su AppleScript a

do shell script "/usr/local/bin/start-mysql-server.sh" with administrator privileges

y eso debería Lanzamiento y luego el equipo debe desaparecer.

TJ Luoma
fuente
1
¿Cómo deja de ejecutar el script?
Buscar웃
1
Necesitarías un script separado para detenerlo.
TJ Luoma
0

Yo lo haría:

  1. Terminal abierta
  2. Tipo ps aux|grep mysql
  3. obtener el PID del script
  4. Tipo kill -s 9 #### donde #### es el PID del script

Me aseguraría de que no elimine el proceso incorrecto, como otro servidor mysql.

Deesbek
fuente
podría usar algunos conocimientos para verificar la secuencia de comandos exacta que está ejecutando, pero lo anterior es muy fácil de escribir.
Deesbek
que es -s 9? Es es lo mismo que -9?
Oleg