Jaký je rozdíl mezi "Service" a "/etc/init.d/"?

110

Spravuji serverovou instalaci jak na vypnutí, tak na vypnutí Ubuntu chuti na nějakou dobu - docela jsem se přizpůsobil/etc/init.d/ pro restart služby. Nyní dostanu tuto zprávu:

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

Zdá se, že to bylo dosaženo v nejnovějším LTS Ubuntu - proč? Co je tak špatné o/etc/init.d/ a co / je tam rozdíl meziservice a/etc/init.d/?

    
dané Marco Ceppi 12.08.2010 21:12

2 odpovědi

97
Skripty

/etc/init.d jsou starým způsobem, jak dělat věci. Přicházejí z normy System V. Tyto skripty se však vypalují pouze v určitém pořadí, takže nelze vytvořit skutečné závislosti.

Proces byl proto vyvinut s úmyslem nahradit skripty/etc/init.d skripty upstart (v/etc/init).

service umožňuje plynulý přechod z skriptů/etc/init.d na spuštění skriptů. V budoucnu, kdy se stále více skriptů přenáší na začátek, služba bude stále fungovat, protože najde obě možnosti.

odpověděl txwikinger 12.08.2010 21:33
26

Zkontrolujte také manuálovou stránku příkazu service:man service

service spustí skript v předvídatelném prostředí (pracovní adresář je / a jsou nastaveny pouze 2 proměnné prostředí: LANG a TERM). Přidává také schopnost provést--full-restart. Takže shrnout:

  1. service může spouštět skripty z / etc / init nebo /etc/init.d (upstart nebo System V)
  2. service spouští skripty v předvídatelném prostředí.

Vzhled "předvídatelného prostředí" může způsobit problémy, pokud váš skript závisí na proměnné prostředí z nějakého důvodu. Pravděpodobně existuje způsob, jak to obejít, ale nevím, co to je, a to je mimo rozsah této otázky:)

    
odpověděl Joe Marty 08.06.2011 17:52