web-dev-qa-db-fra.com

Comment les services système sont démarrés dans 12.10?

Une chose qui m'a toujours dérouté dans Ubuntu est la manière dont les services système sont démarrés. Je sais qu'Ubuntu utilise Upstart et prend en charge SysV, mais lequel est utilisé pour démarrer les services? Cela est important lorsque vous souhaitez un démarrage "manuel" pour un service.

Par exemple, sur mon système, j'ai des fichiers pour les services suivants, soit dans /etc/init.d/<service> (SysV) et /etc/init/<service>.conf (Upstart):

acpid, mysql, networking, qemu-kvm, ufw, libvirt-bin

Donc, si je veux désactiver l'exécution de MySQL au démarrage, je dois utiliser la méthode Upstart ou la méthode SysV pour la désactiver? Aussi, comment puis-je savoir lequel de ceux-ci est réellement utilisé pour démarrer un service générique?

Modifier

Le vrai doute ici n’est pas de savoir comment activer/désactiver les services à l’aide de SysV/Upstart. Ce qui me déroute vraiment, c'est que certains services semblent être définis (et activés) à la fois dans SysV et Upstart. Existe-t-il une priorité entre eux (comme si mysql est activé dans les deux lancements à l'aide de SysV)? Ou bien est-il possible qu'un outil utilise l'autre en arrière-plan?

12
Salem

En ce qui concerne les services définis à la fois dans SysV et dans Upstart, généralement, si vous le redémarrez via SysV, vous verrez à peu près ceci:

al@al-mythtv:~$ Sudo /etc/init.d/mysql restart
[Sudo] password for al: 
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 29846

Ce que je suppose que cela signifie, c’est que Upstart est préféré pour ces services et que la mise en oeuvre de SysV n’est qu’un wrapper.

De plus, je pense que vous avez la signification des répertoires à l'envers./etc/init est la configuration de upstart, /etc/init.d est la compatibilité SysV, mais ce ne sont que des liens symboliques vers upstart pour ces types de services.

2
Alistair Buxton

Cela dépend en grande partie de l'application et de son responsable de l'emballage.

Il existe une forte préférence pour les scripts Upstart car ils gèrent les événements (ce qui est généralement une bonne chose), mais beaucoup d'applications n'ont pas assez de scripts Upstart disponibles ou parce que le responsable de l'application a choisi de conserver les valeurs par défaut (application ou celles de Debian). .

De toute façon, vous êtes dans la position où vous devez vous adapter.

  • Pour Upstart:
    • Renommez le fichier en quelque chose qui ne se termine pas .conf, ou
    • Ajoutez manual au fichier. Cela vous permettra de charger manuellement le service.
  • Pour les services plus anciens:

    update-rc.d -f <service> remove
    

Si vous avez un script /etc/init.d/ pour quelque chose et un script /etc/init/ et que vous voulez vérifier si la version init.d est toujours active, vous pouvez vérifier avec:

ls -l /etc/rc?.d/*<service>

Si vous voyez une charge de liens symboliques, celle-ci est installée dans l'ancien init SysV.

6
Oli