122 votes

Quelle est la différence entre "Service" et "/etc/init.d/" ?

Je gère des installations de serveurs sous Ubuntu et hors Ubuntu depuis un certain temps. /etc/init.d/ pour le redémarrage des 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

Ce problème semble avoir été introduit dans la dernière version LTS d'Ubuntu - pourquoi ? Qu'est-ce qui est si mauvais dans /etc/init.d/ et quelle différence y a-t-il entre service y /etc/init.d/ ?

114voto

Joel Spolsky Points 22686

/etc/init.d Les scripts sont l'ancienne façon de faire les choses. Ils proviennent du standard System V. Cependant, ces scripts ne sont tirés que dans une séquence particulière, donc aucune dépendance réelle ne peut être établie.

C'est pourquoi upstart a été développé dans l'intention de remplacer tous les produits de la gamme des /etc/init.d scripts avec upstart scripts (en /etc/init ).

service permet une transition en douceur de /etc/init.d scripts pour démarrer scripts. Dans le futur, lorsque de plus en plus de scripts seront transférés vers upstart, le service fonctionnera toujours car il trouve les deux possibilités.

29voto

Joe Marty Points 291

Consultez également la page de manuel de la commande 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 . Donc, pour résumer :

  1. service peut exécuter scripts à partir de /etc/init ou /etc/init.d (upstart ou System V)
  2. 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 :).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X