Modo corretto per installare un servizio upstart personalizzato


51

Sto usando upstart per i servizi sui miei server. Scrivere un file conf e posizionarlo /etc/initè abbastanza facile, ma non sembra installarlo completamente. Per uno, il service --status-allnon elenca il mio nuovo servizio. Ho controllato e se inserisco un collegamento /etc/init.dad /lib/init/ubstart-jobesso verrà visualizzato nello stato. Ma farlo manualmente mi fa pensare che non lo stia facendo bene e potrebbero esserci altri passaggi di configurazione che non vengono eseguiti.

Qual è il modo corretto di installare un servizio upstart in modo che sia correttamente registrato in tutti gli strumenti che si occupano di servizi?


2
Questo ragazzo ha risposto a una delle mie domande utilizzando il servizio upstart e ha dato una spiegazione dettagliata, potrebbe indicare un passo che potrebbe essere mancato a askubuntu.com/a/278128/75967
Meer Borg

1
Volevi dire /lib/init/upstart-job?
dalore,

Risposte:


46

Quando inizialmente copi un nuovo file conf nella cartella / etc / init devi chiamare:

initctl reload-configuration

In questo modo il tuo upstart dovrebbe essere correttamente registrato.


8
Quindi questo imposta correttamente il lavoro (cioè, starte stopfunziona) ma non fa apparire tutto il lavoro nello stato. Ho ancora dovuto aggiungerlo manualmente /etc/init.d/per farlo accadere.
James McMahon,

1
@JamesMcMahon È necessario eseguire initctl listil comando con sudo: sudo initctl list. In questo modo vedrai l'elenco completo dei servizi.
Shahriyar Imanov,

Perché sudo, non sembra affatto modificare l'output dell'elenco initctl.
Ama

@JamesMcMahon, I still had to manually add it to /etc/init.d. Dovevi ancora aggiungere cosa? Ciò significa che, oltre a un X.conffile aggiunto /etc/init, è anche necessario aggiungere un file a /etc/init.d?
Kevin Meredith,

@KevinMeredith, mi dispiace non sono stato più dettagliato. Sono passati 2 anni e non ricordo i dettagli. Se guardi nella documentazione di init.d, si spera che sia chiaro.
James McMahon,

18

Consulta il manuale di servizio:

service --status-all esegue tutti gli script init, in ordine alfabetico, con il comando status. Questa opzione chiama lo stato solo per i lavori sysvinit, i lavori di avvio possono essere interrogati in modo simile con l'elenco initctl.

(enfasi aggiunta)

Ecco perché aggiungerlo a /etc/init.d (dove si trovano i lavori sysvinit) ha fatto sì che funzionasse. Quindi: prova invece a eseguire l'elenco initctl :).


That's why adding it Aggiungere cosa? Oltre al my_service.conffile in /etc/init, è anche necessario disporre di un /etc/init.dfile?
Kevin Meredith,

Non funziona con Ubuntu 16.04.4 LTS \\ $ initctl list initctl: il nome "com.ubuntu.Upstart" non esiste $ sudo initctl list initctl: impossibile connettersi a Upstart: impossibile connettersi a socket / com / ubuntu / upstart: Connessione rifiutata
nine9five

13

Per i servizi SysV

Assicurati di seguire i seguenti passi mentre aggiungi / crei un nuovo servizio in Ubuntu.

  1. Crea il file di servizio in /etc/init.d/<service name>
  2. chmod 700 /etc/init.d/<service name>
  3. update-rc.d <service name> defaults
  4. update-rc.d <service name> enable

Ora vediamo il servizio in

service --status-all

15
la tua risposta si riferisce a sysv e non all'inizio. potresti volerlo eliminare.
jcomeau_ictx

3
È davvero una risposta utile.
ATorras,

sebbene si riferisca a un altro serivice, è davvero utile
wuppi il

1

Ho scoperto che un errore nel file .conf può rendere il lavoro non riconoscibile da initctl. ad esempio, avere una setuidlinea in Upstart versione 1.3 o precedente.


1

Sebbene l'attuale risposta scelta sia corretta per l'aggiunta del nuovo servizio all'avvio, non è particolarmente utile per scoprire PERCHÉ non è possibile caricare una configurazione in / etc / init / - il pezzo mancante sta usando init-checkconf per assicurarsi che la tua configurazione è valida e quindi usando reload-configuration:

####Test the new config - resolving any issues before continuing:
ERROR: File /etc/init/test.conf: syntax invalid:
test.conf:35: Unterminated quoted string

####then fix and recheck:
# init-checkconf /etc/init/test.conf
File /etc/init/test.conf: syntax ok

####then reload:
# initctl reload-configuration

#### and start:
# start test
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.