2 votes

Créer un script qui exécutera un programme et, s'il se ferme sans planter, le relancera à nouveau

J'ai déjà posé cette question dans l'échange UNIx mais on m'a dit de poser également ici concernant les AppleScripts si le shell standard ne fonctionne pas.

Je recherche un script qui ouvrira une application. Attendez qu'elle se ferme, si l'application s'est terminée normalement (c'est-à-dire n'a pas planté), relancez-la. Sinon, gardez le rapport de plantage ouvert et quittez le script. J'aimerais que ce script fonctionne jusqu'à ce que je le quitte manuellement.

Jusqu'à présent, la suggestion suivante a été faite :

while open -W /chemin/vers/application.app
do
    :
done

Mais cela ouvre l'application et ensuite en cas de plantage ou de fermeture, la relancera automatiquement. Je suppose que c'est parce que open se terminera toujours par un code de sortie normal 0, que l'on attende ou non. À moins bien sûr que open plante, mais dans ce cas, il ne le fera pas.

Toute aide à ce sujet est appréciée.

Merci.

2voto

Mateusz Szlosek Points 21762

Pour continuer à redémarrer le travail à la sortie réussie, vous pouvez utiliser launchd sur OSX. Pour cela, vous devez préparer un fichier *.plist afin de "dire" à launchd comment se comporter. Pour redémarrer l'application à la sortie réussie, veuillez consulter la clé KeepAlive -> SuccessfulExit (plus d'informations : https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html). Pour démarrer votre travail, vous devrez le démarrer via la commande launchctl, par exemple :

launchctl load chemin/vers/fichier.plist

Pour l'arrêter :

launchctl unload chemin/vers/fichier.plist

Plus d'informations sur la programmation launchctl/launchd ici :

http://alvinalexander.com/mac-os-x/launchd-examples-launchd-plist-file-examples-mac

http://launchd.info

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