Un tutoriel de lancement simple
Supposons que vous ayez écrit un petit script que vous souhaitez exécuter de temps en temps. Si vous utilisez un Mac, launchd
est un outil parfait à utiliser.
C’est mieux que crontab
car, entre autres choses, si votre ordinateur est éteint lorsque votre programme est programmé pour s’exécuter, launchd
exécutera votre programme dès que l’ordinateur se réveillera. Pendant ce temps, crontab
ne le fera pas.
La première chose à faire est de créer un script à exécuter. Je vais écrire un nœud simple.js mais vous pouvez utiliser ce que vous voulez.
touch ~/demo/main.js
Pour les besoins de cet exemple, tout ce script va faire est de consigner l’heure à laquelle il a été exécuté.
console.log("Hello", Date.now())
Maintenant, nous devons créer un fichier de configuration launchd
.
touch ~/Library/LaunchAgents/com.demo.daemon.plist
Un fichier plist n’est que le format XML personnalisé d’Apple pour les configurations. Collez ce code là-dedans. Vous devrez peut-être changer /Users/chet/demo
dans le répertoire que vous utilisez pour cet exemple.
Ce fichier spécifie quelques choses:
- Le démon démarre chaque fois que l’utilisateur se connecte.
- Il s’exécutera toutes les 20 secondes.
- Il sortira dans certains fichiers journaux (très utile pour le débogage).
- Il définira le chemin d’accès à l’environnement (utile si votre programme utilise d’autres commandes de
usr/local/bin
). - La commande s’exécutera dans le répertoire
/Users/chet/demo
. - Et la commande est
/usr/local/bin/node main.js
.
Il y a un tas d’autres options que vous pouvez lire ici. Une option couramment utilisée est l’option KeepAlive
qui redémarrera votre script chaque fois qu’il se termine ou se bloque. Ceci est utile si vous souhaitez que votre script soit toujours en cours d’exécution.
Maintenant, nous avons juste besoin de le faire fonctionner. Tout d’abord, ouvrez le Console.app
. Vous ne l’avez peut-être jamais utilisé auparavant, mais c’est une application utilitaire native pour déboguer ce genre de choses. Dans le système.section journal, vous pouvez rechercher com.demo.daemon
pour voir s’il y a des erreurs système lorsque vous essayez de démarrer launchd
.
De retour dans votre Terminal, exécutez la commande suivante.
launchctl load ~/Library/LaunchAgents/com.demo.daemon.plist
Si vous voyez des erreurs dans le Console.app
, vous pouvez arrêter le démon avec unload
et rechercher des erreurs dans le fichier stderr.log
.
launchctl unload ~/Library/LaunchAgents/com.demo.daemon.plist
cat ~/demo/stderr.log
Si tout s’est bien passé, vous ne devriez rien voir dans le Console.app
et vous devriez voir les journaux entrer dans le fichier ~/demo/stdout.log
toutes les 20 secondes.