17 votes

Relancer automatiquement une application MacOS fermée

J'ai une application qui s'ouvre lorsque je me connecte.

Existe-t-il un moyen de le relancer automatiquement s'il se bloque ou si je le ferme par inadvertance ?

L'application en question est Transmission, s'il existe une solution spécifique à cette application.

Dans un monde parfait, il pourrait même être lancé sans que j'ouvre une session.

33voto

Voici mon launchd script à garder SomeApp toujours en cours.

Nommez-le SomeApp.restart.plist et le placer 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>
</dict>
</plist>

Chargez-la une fois avec

launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist

Launchctl exécutera ceci après les redémarrages.

  • RunAtLoad lancera l'application la première fois que launchctl exécutera ceci
  • KeepAlive le relancera si l'application quitte (CMD+Q ou crash)

Il devrait fonctionner éternellement. Si vous voulez un outil GUI pour vous aider, Lingon fonctionne même si le développement a été arrêté.

8voto

Danny Whitt Points 855

Vous pourriez écrire un launchd script pour le faire. Launchd peut surveiller les applications et les redémarrer si elles disparaissent. Je pourrais en avoir un quelque part si vous êtes intéressé.

Mis à jour avec un exemple...

Voir l'exemple de Mankoff. Voici le mien, il est légèrement différent mais fonctionne de la même façon...

<?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>keep.it.running</string>  
    <key>Program</key>  
    <string>/Applications/Address Book.app/Contents/MacOS/Address Book</string>  
</dict>  
</plist>

0voto

Vous pouvez ouvrir des applications en arrière-plan avec open -jg ou le launch dans AppleScript.

#!/bin/bash

open -jg -a FastScripts -a Mail
osascript -e 'launch app "Alfred"'

KeepAlive n'est pas nécessaire. RunAtLoad exécuterait également le programme à l'intervalle zéro.

<?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>Label</key>
    <string>com.stackexchange.apple.837</string>
    <key>Program</key>
    <string>/Users/username/Library/Scripts/open applications.sh</string>
    <key>StartInterval</key>
    <integer>1</integer>
</dict>
</plist>

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X