0 votos

Usar un AppleScript para matar un AppleScript

Tengo un AppleScript que uso para configurar la pantalla compartida de mi AppleTV, a veces se atasca y tengo que matarlo para volver a intentarlo. Así que me gustaría escribir un script que mate cualquier que se esté ejecutando y luego ejecutar el scriptde nuevo.

El problema es que no puedo encontrar una manera de hacerlo que no mate al propio script.

Puedo ver el uso de

ps axc

que el archivo tiene la ruta

/Aplicaciones/Conexión de la pantalla de reflejo - Maestro Bedroom.app/Contents/MacOS/applet

Así que intenté usar

set PID to do shell script "(ps ax | grep \"Connect Screen Mirroring - Master Bedroom\" | grep applet | awk '{print $1}')"

do shell script "kill " & PID

Pero eso me da el error

sh: línea 0: kill: 88944 89410 89411: los argumentos deben ser procesos o trabajos IDs

Creo que el problema es que el primer script me devuelve un segundo, y a veces un tercer, PID inesperado, así que si pudiera encontrar una manera de filtrar eso podría estar bien.

Si ejecuto sólo

set PID to do shell script "ps ax | grep \"Connect Screen Mirroring - Master Bedroom\" | grep applet"

Vuelvo

"89474 ?? S 0:00.33 /Applications/Connect Screen Mirroring - Master Bedroom.app/Contents/MacOS/applet 89485 ?? S 0:00.00 sh -c ps ax | grep "Connect Screen Mirroring - Master Bedroom" | grep applet"

Lo mejor que puedo decir es que la segunda cosa que se devuelve es el propio comando del shell.

¿Alguna sugerencia sobre cómo ignorarla? ¿O una forma mejor de hacerlo?

2voto

user3439894 Puntos 5883

Así es como yo lo haría:

En Terminal :

kill $(ps ax | awk '/[C]onnect Screen Mirroring - Master Bedroom/{print $1}')

Utilizando el do shell script comando en AppleScript :

do shell script "kill $(ps ax | awk '/[C]onnect Screen Mirroring - Master Bedroom/{print $1}'); exit 0"

Utilizando awk elimina la necesidad de tubo a grep dos veces mientras que le permite devolver sólo el valor de la primera columna de ps de salida, que es el PID y colocando corchetes alrededor del primer carácter [C] aísla la salida a la ocurrencia que se busca, no a lo que genera el awk comando sí mismo.

Utilizando sustitución de comandos , $(...) , sólo devuelve el PID a la kill comando .

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