web-dev-qa-db-fra.com

Méthode correcte pour installer un service personnalisé de démarrage

J'utilise upstart pour les services sur mes serveurs. Écrire un fichier de configuration et le placer dans /etc/init est assez facile, mais cela ne semble pas s’installer complètement. D'une part, le service --status-all ne répertorie pas mon nouveau service. J'ai vérifié et si je crée un lien dans /etc/init.d à /lib/init/ubstart-job, il apparaîtra dans le statut. Mais faire ceci manuellement me fait penser que je ne le fais pas bien, et il est fort possible que d’autres étapes de configuration ne soient pas effectuées.

Quelle est la bonne façon d'installer un service upstart tel qu'il soit correctement enregistré dans tous les outils traitant des services?

50

Lorsque vous copiez pour la première fois un nouveau fichier conf dans le dossier/etc/init, vous devez appeler:

initctl reload-configuration

Par ceci votre upstart devrait être correctement enregistré.

46
tombert

Commander le manuel d'entretien:

service --status-all exécute tous les scripts d'initialisation, dans l'ordre alphabétique, avec la commande status. Cette option appelle uniquement le statut des travaux sysvinit, les travaux en démarrage peuvent être interrogés de la même manière avec la liste initctl.

(emphase ajoutée)

C’est pourquoi son ajout à /etc/init.d (où se trouvent les travaux sysvinit) a permis ce travail. Donc: essayez de lancer liste initctl à la place :).

18
Kyle

Pour les services SysV

Assurez-vous de suivre les étapes suivantes lors de l'ajout/création d'un nouveau service dans Ubuntu.

  1. Créez le fichier de service dans /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

Maintenant, voyez-vous servir dans

service --status-all
12
Suyash Jain

Bien que la réponse choisie actuellement soit correcte pour obtenir le nouveau service ajouté à upstart, cela n'est pas particulièrement utile pour savoir POURQUOI une configuration dans/etc/init/ne parvient pas à se charger - la pièce manquante utilise d'abord init-checkconf pour s'assurer que votre configuration est valide, puis en utilisant 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
1
Jeff Parsons

J'ai constaté qu'une erreur dans le fichier .conf peut rendre le travail non reconnaissable par initctl. Par exemple, si vous avez une ligne setuid dans Upstart version 1.3 ou antérieure.

0
jcomeau_ictx