Quel est le meilleur moyen de démarrer automatiquement une application si elle ne fonctionne pas?

4

Je veux démarrer automatiquement une application si elle ne fonctionne pas. Mon utilisation est le cas où si je quitte une application particulière, je veux redémarrer automatiquement. Dans mon cas, c'est l'application Messages.

Je souhaite toujours que l'application Messages continue de fonctionner. Par conséquent, si je quitte Messages, je souhaite le redémarrer.

Quelle est la meilleure façon de gérer cela?

Scott Walter
la source

Réponses:

5

Ce que vous cherchez, c'est launchd.

Il vous permettra d’exécuter une application en continu (démarrage automatique au démarrage, redémarrage à la fermeture / crash)

Pour l'utiliser ajouter un plist déposer dans ~/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>

Puis chargez-le une fois avec launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist

  • le RunAtLoad Cette option lancera l'application la première fois que launchctl l'exécutera.
  • le KeepAlive option relancera l'application si elle se bloque.
  • le StartCalendarInterval l'exécutera à un moment donné. Vraisemblablement, cela est mutuellement exclusif avec les deux précédents, mais est inclus pour montrer ce qui peut être fait avec launchd Launchctl va l'exécuter après les redémarrages.
Matthieu Riegler
la source
1

Comme mentionné, launchctl est la commande que vous voulez. Je trouve que la syntaxe pour launchctl est assez difficile comparée à crontab. Bien sûr, launchctl fait beaucoup plus que cron. Ainsi, j'utilise Lingon fournir une interface graphique pour gérer launchctl.

Lee Joramo
la source