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
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
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 :
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.
La différence entre les agents et les démons est tirée de l’endroit où ils sont enregistrés sur l’ordinateur :
Vous devrez enregistrer votre plist au bon endroit.
Chargement des tâches dans launchctl
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 :
Pour supprimer le script de la file d’attente launchctl, utilisez la commande 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.
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