Tout d'abord, une clarification s'impose:
- init.d est le répertoire dans lequel sont stockés les scripts de contrôle des services, qui contrôlent le démarrage et l'arrêt de services tels que
httpd
oucron
- rc.local est un service qui permet d'exécuter des scripts arbitraires dans le cadre du processus de démarrage du système.
Quant à savoir s’il vaut mieux utiliser rc.local
ou cron
exécuter votre script, je suppose que c’est davantage une question d’esthétique que de fonctionnalité. cron
, en tant que planificateur de tâches, est conçu comme une méthode permettant d’effectuer des opérations de maintenance ou d’entretien sur une machine, telles que la vérification des mises à jour, le nettoyage des caches ou la réalisation d’audits de sécurité. Cela ne signifie pas qu'il est limité à l'exécution de ces fonctions, car il peut exécuter n'importe quel script ou commande souhaité à l'heure spécifiée (telle que @reboot
).
L’utilisation rc.local
, par contre, relèverait davantage d’une tâche de configuration système, car rc.local
, exécutée par le système init de la machine, elle est généralement responsable de la configuration de la configuration réseau, des services ou des environnements de la machine (mais là encore, elle n’est pas limitée à cette tâche).
Cependant, ces deux points devraient être tempérés par le fait que tous les systèmes init n'offrent pas de rc.local
mécanisme et que tous les démons cron n'offrent @reboot
pas de balise psuedo.
Points bonus
Comme indiqué précédemment, init.d
le répertoire contient les scripts qui contrôlent les services pouvant être démarrés ou arrêtés sur votre système (au moins sur les ordinateurs utilisant un SysV
système de type init). En fonction de votre système init et de l'objectif de votre script, il peut être raisonnable de convertir votre script en script init pour qu'il soit exécuté de la même manière qu'un service. Ceci, cependant, dépend fortement de votre système init car le cadre entourant la manière dont ces fichiers sont construits peut être très différent.
Dernier mot
Il convient également de noter que les scripts bash se terminent généralement par un suffixe .sh
plutôt que .txt
, car cela indique immédiatement que le fichier est un script shell au lieu d'un fichier texte. Cela étant dit, à condition que soit il a un shebang ( #!/bin/bash
) en haut du fichier, ou est appelé en tant que bash /path/to/script.whatever
, cela ne devrait pas importer en termes d'exécution du script.