Vraag Wat is het verschil tussen "Service" en "/etc/init.d/"?


Ik beheer al geruime tijd serverinstallaties zowel aan als naast Ubuntu-smaak - ik ben behoorlijk aangepast aan /etc/init.d/ voor het herstarten van servcies. Nu krijg ik deze boodschap:

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

Dit lijkt tot stand te zijn gebracht in de nieuwste LTS van Ubuntu - waarom? Wat is er zo slecht aan /etc/init.d/ en wat / is er een verschil tussen service en /etc/init.d/?


110
2017-08-12 19:12


oorsprong


De Upstart Kookboek bevat een goede uitleg van het rationele voor schakelen. - ændrük


antwoorden:


/etc/init.d scripts zijn de oude manier om dingen te doen. Ze komen uit de System V-standaard. Die scripts worden echter alleen in een bepaalde volgorde geactiveerd, dus er kunnen geen echte afhankelijkheden worden vastgesteld.

Daarom is parvenu ontwikkeld met de bedoeling om alle te vervangen /etc/init.d scripts met upstart-scripts (in /etc/init).

service zorgt voor een soepele overgang van /etc/init.d scripts om scripts op te schonen. In de toekomst, wanneer steeds meer scripts worden overgedragen aan parvenu, zal service nog steeds werken omdat het beide mogelijkheden vindt.


97
2017-08-12 19:33



De start wordt nu afgebouwd, toch? - wrongusername
systemd zal de start vervangen als de plannen klaar zijn - 14.04 LTS gebruikt de upstart. Dit werd aangekondigd door Mark Shuttleworth, in een bericht met de titel Gracieus verliezend - not a patch


Controleer ook de man-pagina voor de serviceopdracht: man service

service voert een script uit in een voorspelbare omgeving (werkdirectory is / en slechts 2 omgevingsvariabelen zijn ingesteld: LANG en TERM). Het voegt ook het vermogen toe om te doen --full-restart. Dus kort samengevat:

  1. service kan scripts uitvoeren vanuit / etc / init of /etc/init.d (upstart of System V)
  2. service draait scripts in een voorspelbare omgeving.

Het aspect "voorspelbare omgeving" kan u problemen bezorgen als uw script om een ​​of andere reden van een omgevingsvariabele afhankelijk is. Er is waarschijnlijk een manier om dat te omzeilen, maar ik weet niet wat het is, en dat valt buiten het bestek van deze vraag :)


26
2018-06-08 15:52



Hallo @ Joe Marty, dit is precies het probleem dat ik nu aan het experimenteren ben. Ik heb een service die verwijst naar een omgevingsvariabele "DISPLAY" die niet aanwezig is bij het starten van de daemon met "service myservice start" maar aanwezig is bij het starten met "/etc/init.d/myservice start". Enig idee over hoe deze variabele beschikbaar te hebben? - frandevel