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

12

Une chose qui m'a toujours dérouté dans Ubuntu était la façon 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 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, dois-je utiliser la méthode Upstart ou SysV pour la désactiver? De plus, comment savoir lequel est vraiment utilisé pour démarrer un service générique?

Éditer

Le vrai doute ici n'est pas de savoir comment désactiver / activer les services à l'aide de SysV / Upstart. Ce qui me dérange vraiment, c'est que certains services semblent être définis (et activés) dans SysV et Upstart en même temps. Y a-t-il une priorité entre eux (comme si mysqlest activé dans les deux, lancez-le en utilisant SysV)? Ou peut-il être le cas qu'un outil utilise l'autre en arrière-plan?

Salem
la source
1
Jetez un œil à la réponse acceptée ici: askubuntu.com/questions/133807/… a quelques liens intéressants.
Rinzwind

Réponses:

2

En ce qui concerne les services définis dans SysV et upstart, généralement si vous le redémarrez via SysV, vous verrez quelque chose comme 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 veux dire, c'est que Upstart est préféré pour ces services, et l'implémentation 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 upstart, /etc/init.d est la compatibilité SysV, mais ce ne sont que des liens symboliques pour upstart pour ce type de services.

Alistair Buxton
la source
6

Cela dépend largement de l'application et de son responsable de l'emballage.

Il y a 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 suffisamment de scripts Upstart disponibles ou le responsable de l'application a choisi de s'en tenir aux valeurs par défaut (application ou 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 manualau fichier. Cela vous permettra de charger manuellement le service.
  • Pour les services plus anciens:

    update-rc.d -f <service> remove
    

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

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

Si vous voyez une charge de liens symboliques, il est installé dans l'ancien init SysV.

Oli
la source
Donc, si j'ai un service qui est activé dans SysV et Upstart (par exemple, acpid), je peux supposer qu'il est lancé par SysV? Ou si je veux le désactiver, je devrais le faire en utilisant update-rc.det l'astuce de renommage?
Salem