Jannah Theme License is not validated, Go to the theme options page to validate the license, You need a single license for each domain name.
Apple

Comment utiliser launchd pour exécuter des scripts selon la planification dans macOS

launchd est un outil pour démarrer, arrêter et gérer des scripts et des processus. Si vous avez travaillé avec n’importe quelle version de Linux, vous connaissez peut-être cron. launchd est essentiellement cron dans macOS.

Contenu

Que sont les démons ?

Les démons (prononcés « démons ») sont des scripts qui s’exécutent en arrière-plan. Contrairement aux applications, les démons s’exécutent en tant que processus et ne sont pas sous le contrôle direct de l’utilisateur ou d’une autre application. Sur macOS, ils sont sous le commandement du framework launchd qui décide quand ils démarrent et s’arrêtent.

Le nom inhabituel vient du démon de Maxwell, un agent imaginaire qui trie les molécules dans une expérience de pensée thermodynamique.

Écriture de scénarios

Comment exécuter un script Python sous Mac OS X

Afin d’exécuter des démons via launchd, vous devrez écrire des scripts. Le langage de script le plus courant est bash. Si vous souhaitez en savoir plus sur les scripts bash, vous pouvez consulter notre guide du débutant sur les scripts bash.

Utilisation de launchd

launchd-scripts-job-description

Les scripts dans launchd sont déclenchés par des définitions de tâches qui sont des fichiers .plist stockés dans des répertoires spécifiques. Ces fichiers XML donnent un nom au travail, spécifient le script qui doit être lancé et indiquent quand le script doit être exécuté. Une fois que vous avez écrit votre script, vous allez écrire et charger une définition de tâche qui lance le script au moment opportun.

Une définition de poste ressemble à ce qui suit :

Modifiez-le si nécessaire, puis placez-le dans un fichier texte avec l’extension .plist avant de le déposer dans le bon répertoire (voir ci-dessous).

La description de poste comporte quelques éléments clés :

  • Étiqueter: le nom du travail dans launchd. Doit être unique pour chaque travail. Ceux-ci sont écrits en notation de domaine inversée, et « local » est un excellent domaine pour les agents privés.
  • Programme: le chemin complet du script que cette description de poste lance.
  • RunAtLoad : décrit quand le script doit être exécuté. Il y a quelques options différentes ici :
  • RunAtLoad : s’exécute dès que la définition du travail est chargée. Ne s’exécute qu’une seule fois par charge.
  • StartInterval : démarre le travail toutes les n secondes. Cet exemple exécutera la tâche toutes les 7 200 secondes ou toutes les 2 heures.
  • StartCalendarInterval : exécutez le travail à une heure et une date spécifiques. Le code ci-dessous exécutera le travail tous les jours à 9 heures.
  • Agents contre démons

    Une fois que vous avez rédigé votre description de poste, vous devez l’enregistrer dans le répertoire approprié.

    launchd fait en outre la distinction entre les agents et les démons. Un agent s’exécute au nom de l’utilisateur connecté, tandis qu’un démon s’exécute sous l’utilisateur root. Cela signifie que si vous souhaitez restreindre un script à un compte utilisateur spécifique, vous pouvez utiliser un agent. Si vous voulez que quelque chose s’exécute, peu importe qui est connecté, vous utiliserez un démon.

    Psssssst :  Où se trouvent les paramètres du projet dans Android Studio ?

    La différence entre les agents et les démons est tirée de l’endroit où ils sont enregistrés sur l’ordinateur :

  • « ~/Library/LaunchAgents » s’exécute au nom de l’utilisateur connecté
  • « /Library/LaunchDaemons » s’exécute au nom des utilisateurs root
  • Vous devrez enregistrer votre plist au bon endroit.

    Chargement des tâches dans launchctl

    launchd-scripts-launchctl-list

    Une fois que vous avez créé vos scripts et enregistré votre agent au bon endroit, vous devrez le charger dans launchctl. Cela se produira automatiquement lors des connexions à l’avenir.

    Pour voir ce qui s’exécute actuellement dans laucnhctl, vous pouvez utiliser la liste launchctl dans le terminal. Cette liste géante peut être récupérée pour votre script en l’étiquetant avec quelque chose comme ce qui suit :

    Pour charger un script, ouvrez Terminal et utilisez la commande suivante :

    launchd-scripts-launchctl-load

    Pour supprimer le script de la file d’attente launchctl, utilisez la commande unload :

    launchd-scripts-launchctl-unload

    Le chargement d’un travail le place dans la file d’attente launchd et le travail s’exécutera à l’heure spécifiée dans ses conditions de lancement. Si vous voulez exécuter un script immédiatement quoi qu’il arrive, vous devez utiliser la commande « start » :

    Cette commande prend l’étiquette du travail et ne fonctionnera que si le travail a déjà été chargé dans launchctl.

    Psssssst :  Puis-je supprimer des fichiers iOS sur mon Mac ?

    Conclusion

    Vous pouvez utiliser launchd pour créer des scripts qui font des choses comme nettoyer les fichiers, redémarrer votre serveur selon un calendrier ou exécuter une application lorsqu’un certain fichier apparaît. Pour en savoir plus sur launchd, vous pouvez consulter le tutoriel laucnhd.

    Crédit image: Maxwell’s_demon

    Cet article est-il utile ? Oui Non

    Bouton retour en haut de la page

    Adblock détecté

    Veuillez désactiver votre bloqueur de publicités pour pouvoir visualiser le contenu de la page. Pour un site indépendant avec du contenu gratuit, c’est une question de vie ou de mort d’avoir de la publicité. Merci de votre compréhension! Merci