Cela fait un certain temps que je gère les installations de serveurs, à la fois sous Ubuntu et sous une autre forme. Je suis assez habitué à /etc/init.d/
pour redémarrer les services. Maintenant je reçois ce message:
root@tatooine:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048
Cela semble avoir été mis en place dans le dernier LTS d'Ubuntu - pourquoi? Quel est le problème avec /etc/init.d/
et quelle est la différence entre service
et /etc/init.d/
?
Les scripts /etc/init.d
sont l'ancienne façon de faire les choses. Ils viennent de la norme System V. Cependant, ces scripts ne sont déclenchés que dans une séquence particulière, aucune dépendance réelle ne peut donc être établie.
Par conséquent, upstart a été développé dans le but de remplacer tous les scripts /etc/init.d
par des scripts upstart (dans /etc/init
).
service
permet la transition en douceur des scripts /etc/init.d
aux scripts ultérieurs. À l'avenir, lorsque de plus en plus de scripts seront transférés vers Upstart, le service fonctionnera toujours car il détectera les deux possibilités.
Consultez également la page de manuel relative à la commande de service: man service
service
exécute un script dans un environnement prévisible (le répertoire de travail est/et seules 2 variables d’environnement sont définies: LANG et TERM). Il ajoute également la possibilité de faire --full-restart
. Pour résumer:
service
peut exécuter des scripts depuis/etc/init ou /etc/init.d (upstart ou System V)service
exécute les scripts dans un environnement prévisible.L'aspect "environnement prévisible" peut vous causer des problèmes si votre script dépend d'une variable d'environnement pour une raison quelconque. Il y a probablement un moyen de contourner cela, mais je ne sais pas ce que c'est, et cela dépasse le cadre de cette question :)