Inicie la aplicación periódicamente con Automator

3

¿Cómo puedo iniciar una aplicación en Automator periódicamente, como en intervalos de 15 minutos?

Zoltán Matók
fuente

Respuestas:

3

También puede usar AppleScript en su lugar ( /Applications/Utilities/AppleScript\ Editor.app/).

El siguiente script inicia Terminal.app cada siete segundos:

on idle
    tell application "System Events"
        tell application "Terminal"
            run
        end tell
        return 7
    end tell
end idle

Guarde este script como una aplicación y déjelo "permanecer abierto después del controlador de ejecución".

Gentmatt
fuente
Gracias, esto ayuda! ¿Qué sucede si la aplicación ya se está ejecutando y está trabajando? ¿Será interrumpido?
Zoltán Matók
Probé su solución y funciona, más o menos ... En la aplicación de Mac que intento ejecutar pongo un método [NSApp terminate: self] para que se cierre solo después de que su trabajo esté hecho. Cuando ejecuto el script, inicia con éxito las aplicaciones y hará su trabajo y se cerrará. Cuando la secuencia de comandos se active de nuevo, arrojará un error de "conexión no válida", que, como leí, significa que la secuencia de comandos intentó comunicarse con una aplicación que dejó de ejecutarse mientras se ejecutaba la secuencia de comandos. ¿Cómo puedo evitar esto?
Zoltán Matók
@ ZoltánMatók Lo siento, pero no puedo seguir exactamente el problema que estás describiendo. ¿Por qué el Script de Apple activaría este error de conexión? He estado usando variaciones de este script de Apple para diferentes aplicaciones sin problemas. Por lo tanto, espero que el problema se encuentre dentro de la aplicación de Mac descrita. ¿Quizás debería abrir una pregunta por separado sobre Stackoverflow?
gentmatt
1
Gracias, lo hice! Aquí está el enlace si está interesado apple.stackexchange.com/questions/66007/…
Zoltán Matók
@ ZoltánMatók Sí, ya lo encontré;) Lo voté tan pronto como lo vi.
gentmatt
1

Con launchd, puede guardar la lista de propiedades a continuación como ~/Library/LaunchAgents/com.stackexchange.apple.65970.plist, y luego cargarla con launchctl load ~/Library/LaunchAgents/com.stackexchange.apple.65970.plisto al cerrar sesión y volver a iniciarla.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.stackexchange.apple.65970</string>
    <key>ProgramArguments</key>
    <array>
        <string>open</string>
        <string>-jga</string>
        <string>Mail</string>
    </array>
    <key>RunAtLoad</key>
    <true/> <!-- run before the first 15 minutes have passed -->
    <key>StartInterval</key>
    <integer>900</integer>
</dict>
</plist>

open -gabre una aplicación en segundo plano, pero aún abrirá una ventana visible si la aplicación no se estaba ejecutando antes. -jtambién oculta la aplicación si no se estaba ejecutando. Se agregó en 10.8 y solo se muestra en el mensaje de ayuda.

También puede agregar una línea como esta a un crontab:

*/15 * * * * open -jga Mail
Lri
fuente
Genial, esto se ve genial. ¿Cómo lograría que la aplicación se cerrara después de 5 minutos y luego reiniciara nuevamente? Estoy preguntando sobre el lanzamiento de Google Drive Sync Client para Mac. Utiliza mucha memoria. Así que quiero sincronizar, dejarlo y luego esperar 30 minutos para volver a hacerlo.
Ivan