Intento ejecutar un AppleScript cada 24 horas para cerrar una aplicación en ejecución y reiniciarla. He usado el siguiente código con éxito con otras aplicaciones:
repeat
delay 84600
set app_name to "APPLICATION NAME"
set the_pid to (do shell script "ps ax | grep " & (quoted form of app_name) & " | grep -v grep | awk '{print $1}'")
if the_pid is not "" then do shell script ("kill -9 " & the_pid)
delay 30
tell application app_name to activate
end repeat
Sin embargo, cuando ejecuto este script obtengo el error de que el argumento Kill: debe ser el id de proceso o de trabajo.
Cuando compruebo el valor de the_pid, regresa con la PID correcta, sin embargo, devuelve más de una PID. Por ejemplo, devuelve 5430 y 5960, uno que corresponde a la aplicación y el otro a CrashReporter. Por lo tanto, creo que el comando kill falla debido a que hay más de un PID presente en la variable the_pid.
¿Alguien sabe cómo evitar/arreglar esto? ¿Cómo hacer que kill acepte la variable the_pid cuando contiene más de un PID? ¿Es una cuestión de formato?
Sé que siempre puedo usar killall y pasar el nombre de la aplicación pero no hay ninguna razón técnica por la que esto no deba funcionar.