10 votes

Comment puis-je exécuter un travail une fois par jour avec launchd, indépendamment du moment où l'ordinateur est allumé ?

Je voudrais exécuter un shell script quotidiennement, mais pas nécessairement à une heure précise. L'ordinateur sur lequel s'exécute le script est allumé à des heures irrégulières, et on ne peut pas supposer quand ce sera le cas.

Pour cela, j'aimerais que launchd se comporte un peu comme anacron : il n'a besoin que d'exécuter la tâche une fois par jour à à tout moment .

La plupart des messages que j'ai vus ici ou sur d'autres sites décrivent des choses comme "fonctionner tous les jours à 05:00", ce qui n'est pas utile pour moi si la machine est éteinte à cette heure...

Comment puis-je écrire un plist launchd spécifiant ce comportement ?

8voto

nohillside Points 82672

Launchd exécutera vos travaux au prochain réveil du Mac. Donc si vous éteignez votre Mac, cela ne fonctionnera pas. Vous devrez mettre votre mac en veille pour que votre script quotidien s'exécute au réveil du mac si la dernière fois qu'il aurait dû s'exécuter était pendant la durée de la veille.

man launchd.plist :

Si le système est endormi, le travail sera lancé au prochain réveil de l'ordinateur. Si plusieurs intervalles s'écoulent avant le réveil de l'ordinateur, ces événements seront regroupés en un seul au réveil de l'ordinateur. sommeil.

Ou en d'autres termes : Vous n'avez rien à faire de particulier, c'est le comportement par défaut de toute façon.

Si vous voulez également exécuter la commande une fois après le redémarrage, ajoutez

<Key>RunAtLoad</Key>
<true/>

à votre plist launchd.

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