Question Quelle est la différence entre «Service» et «/etc/init.d/»?


Je gère les installations de serveurs à la fois sur et hors de Ubuntu depuis un certain temps - je suis devenu tout à fait adapté à /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é provoqué par le dernier LTS d'Ubuntu - pourquoi? Qu'est-ce qui ne va pas /etc/init.d/ et quelle / est-il une différence entre service et /etc/init.d/?


110
2017-08-12 19:12


origine


le Livre de cuisine contient une bonne explication du rationnel pour la commutation. - ændrük


Réponses:


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

Par conséquent, upstart a été développé avec l'intention de remplacer tous les /etc/init.d scripts avec des scripts de démarrage (dans /etc/init).

service permet la transition en douceur de /etc/init.d scripts pour les scripts de démarrage. À l'avenir, lorsque de plus en plus de scripts seront transférés vers le démarrage, le service fonctionnera toujours car il trouve les deux possibilités.


97
2017-08-12 19:33



Upstart va être éliminé maintenant, non? - wrongusername
systemd remplacera les nouveaux systèmes une fois les plans en place - 14.04 LTS utilisera le démarrage. Cela a été annoncé par Mark Shuttleworth, dans un post intitulé Perdre gracieusement - not a patch


Vérifiez également la page de manuel de 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:

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


26
2018-06-08 15:52



Salut @Joe Marty, c'est exactement le problème que j'expérimente maintenant. J'ai un service qui repose sur une variable d'environnement "DISPLAY" qui n'est pas présente lors du démarrage du démon avec "service myservice start" mais présente lors du démarrage avec "/etc/init.d/myservice start". Une idée sur la façon dont cette variable est disponible? - frandevel