¿Cuál es la mejor manera de iniciar una aplicación automáticamente si no se está ejecutando?

4

Quiero iniciar automáticamente una aplicación si no se está ejecutando. Mi uso es el caso de que si salgo de una aplicación en particular quiero reiniciar automáticamente. Específicamente en mi caso es la aplicación de Mensajes.

Siempre quiero mantener la aplicación de Mensajes en ejecución, por lo que si salgo de Mensajes, deseo que se reinicie.

¿Cuál es la mejor manera de manejar esto?

    
pregunta Scott Walter 08.08.2014 - 00:08

2 respuestas

5

Lo que estás buscando es launchd .

Le permitirá ejecutar una aplicación de forma continua (inicio automático en el inicio, reinicio cuando se cierra / falla)

Para usarlo, agregue un archivo plist en ~/Library/LaunchAgents/

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>RunAtLoad</key>  
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>SomeApp.restart</string>
        <key>ProgramArguments</key>
        <array>
                <string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
            <integer>5</integer>
            <key>Minute</key>
            <integer>10</integer>
       </dict>
</dict>
</plist>

Luego cárgalo una vez con launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist

  • La opción RunAtLoad lanzará la aplicación la primera vez que launchctl ejecute esto.
  • La opción KeepAlive reiniciará la aplicación si se bloquea.
  • El StartCalendarInterval lo ejecutará en un momento determinado. Presumiblemente, esto se excluye mutuamente con los dos anteriores, pero se incluye para mostrar lo que se puede hacer con launchd Launchctl ejecutará esto después de reiniciar.
respondido por el Matthieu Riegler 08.08.2014 - 00:57
1

Como se mencionó, launchctl es el comando que desea. Me parece que la sintaxis de launchctl es bastante difícil en comparación con crontab. Por supuesto, launchctl hace mucho más que cron. Por lo tanto, utilizo Lingon para proporcionar una GUI para administrar launchctl.

    
respondido por el Lee Joramo 08.08.2014 - 01:48

Lea otras preguntas en las etiquetas