Qual è la differenza tra "Service" e "/etc/init.d/"?


113

/etc/init.d/Gestisco le installazioni di server sia dentro che fuori da Ubuntu per un po 'di tempo - mi sono adattato abbastanza per riavviare i servizi. Ora ricevo questo messaggio:

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

Questo sembra essere stato realizzato nell'ultimo LTS di Ubuntu - perché? Cosa c'è di così brutto /etc/init.d/e che differenza c'è tra servicee /etc/init.d/?


3
L'Upstart Cookbook contiene una buona spiegazione del razionale per la commutazione.
ændrük,

Risposte:


103

/etc/init.dgli script sono il vecchio modo di fare le cose. Provengono dallo standard System V. Tuttavia, tali script vengono attivati ​​solo in una sequenza particolare, quindi non è possibile stabilire dipendenze reali.

Pertanto, upstart è stato sviluppato con l'intento di sostituire tutti gli /etc/init.dscript con script upstart (in /etc/init).

serviceconsente la transizione graduale dagli /etc/init.dscript agli script di avvio. In futuro, quando sempre più script verranno trasferiti all'inizio, il servizio continuerà a funzionare perché trova entrambe le possibilità.


6
Upstart sta per essere ritirato ora, giusto?
wrongusername

6
systemd sostituirà upstart una volta che i piani saranno in atto - 14.04 LTS utilizzerà upstart. Lo ha annunciato Mark Shuttleworth , in un post intitolato Perdere cortesemente
non una patch il

28

Controlla anche la pagina man per il comando di servizio: man service

serviceesegue uno script in un ambiente prevedibile (la directory di lavoro è / e sono impostate solo 2 variabili di ambiente: LANG e TERM). Aggiunge anche la possibilità di fare --full-restart. Quindi per riassumere:

  1. service può eseguire script da / etc / init o /etc/init.d (upstart o System V)
  2. service esegue script in un ambiente prevedibile.

L'aspetto "ambiente prevedibile" può causare problemi se lo script dipende da una variabile di ambiente per qualche motivo. C'è probabilmente un modo per aggirare questo, ma non so cosa sia, e questo va oltre lo scopo di questa domanda :)


2
Ciao @Joe Marty, questo è esattamente il problema che sto sperimentando ora. Ho un servizio che si basa su una variabile d'ambiente "DISPLAY" che non è presente all'avvio del demone con "service myservice start" ma presente all'avvio con "/etc/init.d/myservice start". Qualche idea su come rendere disponibile questa variabile?
frevevel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.