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.