Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bonne façon de désactiver/activer un daemon sous Ubuntu 14.04

19 réponses
Avatar
Francois Lafont
Bonjour à tous,

1. Je connais un peu Debian mais Ubuntu pas trop. Je cherche
la bonne façon de désactiver/activer un daemon sur Ubuntu
14.04.

Ce que j'appelle « désactiver/activer » un daemon, ce n'est
pas « stopper/démarrer » le daemon, c'est juste faire en
sorte de choisir si l'on veut que le daemon ne démarre pas
ou bien démarre lors du reboot de l'OS.

Ce que j'appelle « la bonne façon », c'est une façon pérenne
(en ligne de commandes bien sûr) qui résiste aux mises à jour
notamment.

Je sais que sous Debian Wheezy, on fait ça très bien avec :

a) update-rc.d <le-daemon> disable
b) update-rc.d <le-daemon> enable

où dans ce cas, le daemon n'est ni stoppé ni démarré,
simplement il ne sera pas démarré au prochain reboot de l'OS
avec a) et il le sera avec b) (et ça résiste en cas de mises
à jour du daemon concerné). Je cherche donc l'équivalent sur
Ubuntu 14.04.

2. Je suis amené à poser cette question suite à l'installation
du paquet "pacemaker" sur Ubuntu 14.04. En effet le daemon
pacemaker ne se lance pas après reboot alors que je voudrais
que ce soit le cas.

Déjà à la base, j'avais mis un peu de temps pour comprendre
comment fonctionne system V sur Debian, mais alors là avec
Ubuntu 14.04 je suis complètement perdu. Déjà, je pensais
que sur Ubuntu 14.04 c'était upstart qui gérait les démarrages
des daemons et que les fichiers de conf qui s'occupaient de
ça se trouvait dans /etc/init/. Or en l'occurrence, dans le
cas de pacemaker sur Ubuntu 14.04, je n'ai aucun fichier
pacemaker dans /etc/init/, par contre j'en ai un dans
/etc/init.d/ ce qui correspond pour moi à un script init
à la sauce system V. Du coup, je suis un peu perdu et
donc si vous pouvez m'éclairer en quelques mots sur le
mécanisme global de démarrage de daemons sur Ubuntu 14.04,
je suis preneur.

Merci d'avance pour votre aide.

--
François Lafont

10 réponses

1 2
Avatar
didier gaumet
Le 01/09/2014 16:38, Francois Lafont a écrit :
[...]
si vous pouvez m'éclairer en quelques mots sur le
mécanisme global de démarrage de daemons sur Ubuntu 14.04,
je suis preneur.



le mécanisme actuel et par défaut d'initialisation de Debian Stable
c'est SystemV et celui d'Ubuntu est Upstart.
Le mécanisme futur et par défaut d'initialisation de Debian (et à priori
aussi d'Ubuntu, d'après ce que j'ai compris), c'est Systemd (donc il te
faudra apprendre à te servir de systemctl).

La page de documentation francophone d'Ubuntu sur Upstart:
http://doc.ubuntu-fr.org/upstart
Avatar
Francois Lafont
Le 02/09/2014 09:20, didier gaumet a écrit :

le mécanisme actuel et par défaut d'initialisation de Debian Stable
c'est SystemV et celui d'Ubuntu est Upstart.
Le mécanisme futur et par défaut d'initialisation de Debian (et à priori
aussi d'Ubuntu, d'après ce que j'ai compris), c'est Systemd (donc il te
faudra apprendre à te servir de systemctl).



Oui j'ai vu ça. Apparemment, ça ne va pas être simple...

La page de documentation francophone d'Ubuntu sur Upstart:
http://doc.ubuntu-fr.org/upstart



Ok, merci pour le lien. Si je suis scrupuleusement ce qui y
est indiqué, pour démarrer mon service pacemaker manuellement,
puisqu'il ne l'est pas automatiquement après le reboot du
système, je dois faire :

# initctl start pacemaker # ou bien "start pacemaker"
initctl: Unknown job: pacemaker

Toujours d'après le lien, quand on a ce message, c'est que
le service est « géré par un script system V ». Donc déjà,
si je comprends bien, en fait un service sur Ubuntu 14.04
n'est pas forcément géré par upstart, il peut l'être par
system V et donc sur Ubuntu 14.04 les deux mécanismes sont
présents.
Est-ce correct ?

Du coup, je tente l'activation du service pacemaker comme
sur Debian Wheezy (via system V), ça je connais. Je tente
alors :

# update-rc.d pacemaker enable
update-rc.d: warning: start runlevel arguments (none) do not match pacemaker Default-Start values (2 3 4 5)
update-rc.d: warning: stop runlevel arguments (none) do not match pacemaker Default-Stop values (0 1 6)
System start/stop links for /etc/init.d/pacemaker do not exist.

Le message m'indique qu'il n'y a pas de liens symboliques
start/stop donc la commande est n'a eu aucun effet. Je crée
alors les liens puis relance l'activation du service :

# update-rc.d pacemaker defaults
# update-rc.d pacemaker enable

Cette fois-ci j'ai bien mes liens :

# ls /etc/rc?.d/ | grep pacemaker
K20pacemaker
K20pacemaker
S20pacemaker
S20pacemaker
S20pacemaker
S20pacemaker
K20pacemaker

Et lors du reboot mon service pacemaker est bien redémarré.
Cool. ;)

Bon du coup, je suis en fait tombé sur un service qui n'est
pas pris en charge par upstart. Dans le cas d'un service
pris en charge par upstart, si j'ai bien compris ce qui est
indiqué dans le lien, pour désactiver un service il faut
que j'édite une fichier /etc/init/<le-service>.override
et que j'y place la ligne :

start on never

Qu'on me rectifie si j'ai dit des bêtises. Ce qui me gênait
dans tout ça, c'est que je n'avais pas compris qu'il y avait
upstart *et* system V sur Ubuntu 14.04, je pensais qu'il n'y
avait que upstart.

--
François Lafont
Avatar
didier gaumet
Le 02/09/2014 11:39, Francois Lafont a écrit :
[...]
Toujours d'après le lien, quand on a ce message, c'est que
le service est « géré par un script system V ». Donc déjà,
si je comprends bien, en fait un service sur Ubuntu 14.04
n'est pas forcément géré par upstart, il peut l'être par
system V et donc sur Ubuntu 14.04 les deux mécanismes sont
présents.
Est-ce correct ?


[...]
Bon du coup, je suis en fait tombé sur un service qui n'est
pas pris en charge par upstart. Dans le cas d'un service
pris en charge par upstart, si j'ai bien compris ce qui est
indiqué dans le lien, pour désactiver un service il faut
que j'édite une fichier /etc/init/<le-service>.override
et que j'y place la ligne :

start on never

Qu'on me rectifie si j'ai dit des bêtises. Ce qui me gênait
dans tout ça, c'est que je n'avais pas compris qu'il y avait
upstart *et* system V sur Ubuntu 14.04, je pensais qu'il n'y
avait que upstart.



Ce que je comprends de l'initialisation en général et d'Ubuntu en
particulier, c'est que ces procédés sont mutuellement exclusifs: c'est
SystemV ou Upstart ou Systemd. Donc pour Ubuntu c'est actuellement
Upstart, que je n 'ai jamais pratiqué. Il y a manifestement des daemons
pour lesquels il existe des scripts SystemV et pas (encore?) pour
Upstart ou Systemd.

J'ai regardé vite fait pacemaker dans le wiki francophone Ubuntu: c'est
manifestement une doc pré-Upstart donc obsolète.
J'aurais tendance à te dire de regarder sur le site pacemaker, il y a
manifestement de la doc en anglais (je n'ai pas poussé plus loin, je ne
sais quelle version tu utilises): peut-être cela t'indiquera-t-il la
marche à suivre pour Upstart.
Je te conseillerais aussi de poster ta demande sur un groupe ou forum
spécifiquement Ubuntu, éventuellement à dominante technique et en
anglais, ça augmenterait sûrement tes chances d'avoir un retour pertinent.
Sinon, ne te restera plus qu'è écrire toi-même ton script Upstart pour
pacemaker...
Voilà: je ne saurais t'en dire plus, désolé :-)
Avatar
Francois Lafont
Le 02/09/2014 12:28, didier gaumet a écrit :

Ce que je comprends de l'initialisation en général et d'Ubuntu en
particulier, c'est que ces procédés sont mutuellement exclusifs: c'est
SystemV ou Upstart ou Systemd.



Attention, je suis d'accord avec cette exclusion mutuelle
/pour un service donné/. Après, je viens de constater dans
mon message précédent que certains services (sous Ubuntu 14.04)
sont gérés par upstart et d'autres (pacemaker par exemple)
par system V.

D'ailleurs, les manips que j'ai faites pour activer pacemaker
au boot ont fonctionné, c'est donc bien la preuve qu'Ubuntu
14.04 tolère encore le mécanisme system V. Ou bien, par
contraposée, si Ubuntu 14.04 ne supportait plus du tout system V,
mes manips auraient été sans effet et pacemaker ne se serait pas
lancé automatiquement au boot.

Donc pour Ubuntu c'est actuellement
Upstart, que je n 'ai jamais pratiqué. Il y a manifestement des daemons
pour lesquels il existe des scripts SystemV et pas (encore?) pour
Upstart ou Systemd.



Et pour ces daemons, Ubuntu 14.04 permet d'utiliser system V
(c'est en tout cas ce que j'en conclus).

Autre exemple : ntp. Je constate, en regardant les fichiers du paquet
(sous Ubuntu 14.04 toujours) que ce service utilise system V car après
installation, j'ai un fichier /etc/init.d/ntp et rien dans /etc/init/.
De plus, ce service, contrairement à pacemaker, se lance bien
automatiquement après le boot sans que je n'ai à faire la moindre manip.

J'ai regardé vite fait pacemaker dans le wiki francophone Ubuntu: c'est
manifestement une doc pré-Upstart donc obsolète.
J'aurais tendance à te dire de regarder sur le site pacemaker, il y a
manifestement de la doc en anglais (je n'ai pas poussé plus loin, je ne
sais quelle version tu utilises): peut-être cela t'indiquera-t-il la
marche à suivre pour Upstart.
Je te conseillerais aussi de poster ta demande sur un groupe ou forum
spécifiquement Ubuntu, éventuellement à dominante technique et en
anglais, ça augmenterait sûrement tes chances d'avoir un retour pertinent.
Sinon, ne te restera plus qu'è écrire toi-même ton script Upstart pour
pacemaker...



Mais je pense que ce n'est pas la peine. Le paquet pacemaker
sur ubuntu 14.04 est packagé pour utiliser system V et ça
marche donc il n'y a pas de souci :

update-rc.d pacemaker defaults
update-rc.d pacemaker enable

et c'est fini, pacemaker se lance au démarrage (et je
pense que c'est upgrade-résistant). La petite curiosité
ici, c'est simplement que les packageurs ont décidé qu'après
installation le service ne serait pas activé et que c'est
à l'administrateur de la machine de le faire (ou pas).

Voilà: je ne saurais t'en dire plus, désolé :-)



Mais tu m'as déjà bien aidé, merci à toi.

--
François Lafont
Avatar
didier gaumet
Le 02/09/2014 13:02, Francois Lafont a écrit :

Attention, je suis d'accord avec cette exclusion mutuelle
/pour un service donné/. Après, je viens de constater dans
mon message précédent que certains services (sous Ubuntu 14.04)
sont gérés par upstart et d'autres (pacemaker par exemple)
par system V.


[...]

Non, c'est bien Upstart, en tant que processus N°1 du système, qui gère
tout, mais ce que je ne savais pas, c'est qu'il accepte les scripts
d'initialisation SystemV.

D'après http://en.wikipedia.org/wiki/Upstart, je cite:
"Easy transition and perfect backwards compatibility with sysvinit were
the explicit design goals;[3] accordingly, Upstart can run unmodified
sysvinit scripts. In this way it differs from most other init
replacements (beside systemd and OpenRC), which usually assume and
require complete transition to run properly, and do not support a mixed
environment of traditional and new startup methods.[4]"

Tu peux être content, si ça t'arrive avec Systemd, il te faudra écrire
un script toi-même ;-)
Avatar
Francois Lafont
Bonsoir,

Le 02/09/2014 18:31, didier gaumet a écrit :

Attention, je suis d'accord avec cette exclusion mutuelle
/pour un service donné/. Après, je viens de constater dans
mon message précédent que certains services (sous Ubuntu 14.04)
sont gérés par upstart et d'autres (pacemaker par exemple)
par system V.


[...]

Non, c'est bien Upstart, en tant que processus N°1 du système, qui gère
tout, mais ce que je ne savais pas, c'est qu'il accepte les scripts
d'initialisation SystemV.

D'après http://en.wikipedia.org/wiki/Upstart, je cite:
"Easy transition and perfect backwards compatibility with sysvinit were
the explicit design goals;[3] accordingly, Upstart can run unmodified
sysvinit scripts. In this way it differs from most other init
replacements (beside systemd and OpenRC), which usually assume and
require complete transition to run properly, and do not support a mixed
environment of traditional and new startup methods.[4]"



Ah ok. Ben merci d'avoir approfondi la question sans quoi
je serais resté sur une idée totalement fausse. Ubuntu
n'utilise donc que Upstart mais celui-ci a donc eu le bon
goût de rester 100% compatible avec sysvinit. Ce sont les
packageurs qui ont dû être soulagés. ;)

Tu peux être content, si ça t'arrive avec Systemd, il te faudra écrire
un script toi-même ;-)



Et oui, avec systemd les packageurs n'auront plus le choix,
ils devront s'adapter.

Merci encore.

--
François Lafont
Avatar
Lucas Levrel
Le 3 septembre 2014, Francois Lafont a écrit :

Tu peux être content, si ça t'arrive avec Systemd, il te faudra écrire
un script toi-même ;-)



Et oui, avec systemd les packageurs n'auront plus le choix,
ils devront s'adapter.



Sur opensuse 13.1 (qui utilise Systemd), man systemd me dit :
---
systemd is compatible with the SysV init system to a large degree: SysV
init scripts are supported and simply read as an alternative (though
limited) configuration file format.
---
et il y a plein de scripts dans /etc/init.d .

Pour ta présente demande, il suffirait de faire :
systemctl enable (machin).service
où (machin) serait probablement pacemaker.

Pas franchement plus compliqué ! Pour les packageurs c'est un gros boulot
de tout reprendre, c'est sûr.

--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
C'est mieux avé les accents (F. Patte)
Avatar
Francois Lafont
Le 03/09/2014 12:39, Lucas Levrel a écrit :

Sur opensuse 13.1 (qui utilise Systemd), man systemd me dit :
---
systemd is compatible with the SysV init system to a large degree: SysV init scripts are supported and simply read as an alternative (though limited) configuration file format.
---
et il y a plein de scripts dans /etc/init.d .



Ah ok. Du coup, systemd jouerait aussi la carte de la
compatibilité avec sysvinit tout comme le fait upstart.
Décidément, j'avais pas mal d'idées fausses sur les
systèmes init. ;)

Pour ta présente demande, il suffirait de faire :
systemctl enable (machin).service
où (machin) serait probablement pacemaker.



Sur ma Ubuntu 14.04 à jour, j'ai :

# systemctl enable pacemaker.service
systemctl: command not found

Et aussi :

# apt-file search systemctl
(aucune occurrence trouvée)

Mais ce n'est pas un souci car, à partir du moment où
le service pacemaker est géré par un script init.d (ie
à la sauce sysvinit donc, même si c'est quand même upstart
qui en réalité fait le job), il me suffit alors de faire :

update-rc.d pacemaker defaults
update-rc.d pacemaker enable

Ça marche très bien et c'est la manière ad hoc d'activer
un service dont le lancement se fait avec un script init.d.

Pour la petite histoire, si les packageurs de pacemaker
ont fait le choix d'avoir un service qui ne se lance pas
au boot par défaut, c'est parce que pacemaker est très
lié au package corosync (les 2 vont plus ou moins ensemble,
corosync est une dépendance de pacemaker) et jusqu'à un
certain temps, c'était dans la conf de corosync qu'on
indiquait à corosync de lancer pacemaker (corosync, lui,
se lançait au boot automatiquement après installation).
C'est pourquoi le service pacemaker n'était pas activé
par défaut après installation. Or, d'après ce que j'ai
lu, depuis quelques versions récentes, corosync ne
s'occupe plus de lancer pacemaker. C'est à l'admin system
de gérer ça. C'est pourquoi je me suis retrouvé avec un
pacemaker qui ne se lançait pas au boot.

Pas franchement plus compliqué ! Pour les packageurs c'est un gros boulot de tout reprendre, c'est sûr.



Oui, c'est pourquoi l'idée de vouloir rester compatible
(plus ou moins) à sysvinit me paraît une bonne idée.

--
François Lafont
Avatar
Az Sam
"Francois Lafont" a écrit dans le message
de news:5405a38d$0$2273$

et c'est fini, pacemaker se lance au démarrage (et je
pense que c'est upgrade-résistant). La petite curiosité
ici, c'est simplement que les packageurs ont décidé qu'après
installation le service ne serait pas activé et que c'est
à l'administrateur de la machine de le faire (ou pas).




dans les cas comme cela il n'y a personne a contacter directement, les
"packageurs", pour savoir comment ils ont organisé leur paquet ?

--
Cordialement,
Avatar
Lucas Levrel
Le 3 septembre 2014, Francois Lafont a écrit :

Pour ta présente demande, il suffirait de faire :
systemctl enable (machin).service
où (machin) serait probablement pacemaker.



Sur ma Ubuntu 14.04 à jour, j'ai :

# systemctl enable pacemaker.service
systemctl: command not found



Le conditionnel s'appliquait au cas systemd : si/quand ton système
utilise/utilisera systemd, il suffira de faire...

--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
C'est mieux avé les accents (F. Patte)
1 2