Systemd: Vainqueur de Upstart et des Scripts « System V » ?

Page 1 sur 15Lecteur de document UniversityLib

Systemd: Vainqueur de Upstart et des Scripts « System V » ?

Linux System Architecture · notes

Browse all systèmes d'exploitation et cloud documents

SYSTEMD VAINQUEUR DE UPSTART ET

DES SCRIPTS SYSTEM V ?

GNU/Linux Magazine n 153 | octobre 2012 | article de J r me Delamarche

Apr s plus de 30 ans de service (!), le v n rable processus init et ses scripts

de service disparaissent petit petit des syst mes Unix et de nos

distributions Linux pr f r es. Si la technologie Upstart est connue des

adeptes d'Ubuntu, quel sera le rempla ant sur RedHat, Debian et les

autres ? systemd tr s probablement... L'objectif de cet article est de vous

pr parer la migration vers cette nouvelle technologie.

1. INTRODUCTION

Vous connaissez certainement les scripts dits System V ou de service ? Vous

savez, ce sont ces scripts shell, situ s sous /etc/init.d/ et dont l'appel avec les

param tres start ou stop produit les messages : D marrage de ....

ou Arr t de ... .

Ces scripts, ainsi que leur m canique de lancement via /etc/rc, sont un h ritage du

v n rable Unix System V qui date de 1983. Cette architecture est simple, mais certains

la trouvent lente, peu robuste et limit e, aussi depuis quelques ann es deux alternatives

ont merg au sein des principales distributions Linux. D'un c t , on trouve les

partisans de Upstart (Ubuntu) et de l'autre les supporters de systemd (Fedora,

Mandriva, OpenSuSE et bient t RedHat et Debian). Notons que l'auteur de systemd

Lennart Poettering est employ chez RedHat... ceci explique cela.

Il ne s'agit pas ici de comparer ces deux successeurs du v n rable init, mais

d'expliquer le fonctionnement de systemd. Pourquoi ce choix partial ? Parce que

systemd me semble mieux document , mieux architectur et surtout plus universel

au vu du nombre de distributions qui l'ont choisi ou qui vont l'adopter.

Pourquoi systemd est-il meilleur que init ? (voir )

Dans un souci de rationalisation et d'optimisation, systemd va r aliser des t ches qui

taient auparavant laiss es au bon-vouloir du d veloppeur des scripts System V. Par

exemple, dor navant, la gestion et le contr le des PID des processus de service ainsi

que ceux de leurs enfants sont la charge de systemd. De m me pour les logs.

Systemd va aussi jouer le r le de coordinateur et d'arbitre pour g rer d pendances et

conflits.

Pour am liorer les performances du d marrage, systemd adopte plusieurs techniques

astucieuses : tout d'abord, connaissant l'arbre de d pendances des services, il est

naturellement capable de parall liser les lancements de processus (on peut lancer A et

B s'ils ne d pendent pas l'un de l'autre, m me indirectement). Mais au-del , systemd

peut lancer en parall le des processus interd pendants ! Comment cela ? Systemd va

anticiper et cr er une socket Unix pour tout service d marrer. Ainsi, les clients

d'un service (c'est dire les services d pendants) vont se connecter dessus alors que le

service r el n'est peut- tre pas encore actif. Quand celui-ci le sera, systemd lui

passera la socket, ainsi les clients bloqu s pourront tre servis !

2. CONCEPTS ET ARCHITECTURE DE SYSTEMD

Le composant de base g r par systemd s'appelle une unit (unit). Il faut

imaginer chaque unit comme un objet part enti re, poss dant g n ralement sa

propre configuration. Les anciens scripts de service peuvent tre r crits sous

forme d'unit s pour systemd, mais ce ne seront pas les seuls !

2.1. TYPES D'UNIT S

Les unit s sont des objets typ s qui poss dent un tat, par exemple actif , inactif

ou en erreur (active, inactive, failed).

Les types d'unit s support s sont :

Nom du type d'unit

service

socket

mount

automount

path

target

timer

Description

permet de d clencher et superviser des

processus lanc s travers des scripts

System V ou directement par systemd.

de type Unix, FIFO ou INET, elle est associ e un

service.

Par exemple, un acc s la socket nscd.socket va

d marrer le service nscd.service (voir plus haut le

principe de l'anticipation par cr ation de sockets

Unix).

gestion du fichier /etc/fstab.

pour la gestion des syst mes de fichiers

auto-mont s.

permet d'activer d'autres services quand des

fichiers ou des r pertoires sont modifi s.

ventuellement les r pertoires peuvent tre

cr s par systemd.

pour regrouper des unit s logiquement ou

pour d finir des unit s pr d finies dites

unit s sp ciales (voir ci-dessous).

pour activer des unit s sur le d clenchement

swap

snapshot

de timers.

pour permettre un save/rollback pendant des

changements de configuration de service.

pour l'activation des zones de swap (pas

utilis sur Fedora 17).

Nous allons voir que chaque unit poss de son propre fichier de configuration, mais le

type de l'unit sera donn par le suffixe du nom du fichier de configuration. Par

exemple, le fichier sshd.service sera associ une unit de type service.

2.2. UNIT S PR D FINIES

Mais pour pouvoir se substituer au vieil init, il a fallu concevoir des unit s

pr d finies (ou unit s sp ciales), certaines correspondant directement la valeur du

champ action des lignes du fichier /etc/inittab :

(tableau non exhaustif)

Nom de l'unit

pr d finie

basic.target

ctrl-alt-del.target

default.target

emergency.target,

rescue.target

halt.target,

poweroff.target,

reboot.target,

shutdown.target

sysinit.target

runlevelX.target

Description

d finit des t ches d clencher tr s t t.

que faire quand l'utilisateur appuie sur

Control-Alt-Suppr (lien symbolique vers

reboot.target).

lien symbolique vers multi-user.target

( quivalent au runlevel 3 de RedHat/Fedora)

ou graphical.target ( quivalent au

Advertisement

runlevel 5). C'est l'unit d clench e en

premier.

unit s invoqu es au d marrage ou lors de

l'arr t du syst me ou quand l'ordre

correspondant est donn par la commande

systemctl (voir 4).

unit s invoqu es tr s t t lors du d marrage

et ind pendamment du runlevel. L'activation

du LVM en est un exemple.

(o X prend les valeurs 0 6) permet de

simuler les changements de runlevel. Ces

unit s sont en fait des liens symboliques vers

poweroff.target (niveau 0), rescue.target

local-fs.target,

remote-fs.target,

swap.target

network.target

(niveau 1), multi-user.target (niveaux 2,3,4),

graphical.target (niveau 5) et reboot.target

(niveau 6).

pour le montage des syst mes de fichiers et

l'activation du swap.

pour g rer correctement les d pendances

entre les services et le r seau.

2.3. ORGANISATION ET SYNTAXE DES FICHIERS

DE CONFIGURATION

Si on con oit bien le besoin d'imiter le comportement de init, quoique le nombre des

unit s sp ciales soit tr s cons quent, il faut maintenant se repr senter concr tement

comment sont con ues ses fameuses unit s.

Systemd est compos de nombreux ex cutables situ s sous

/usr/lib/systemd/. D'ailleurs le premier processus, lanc par le noyau au

d marrage, est /usr/bin/systemd qui n'est autre qu'un lien symbolique vers

/usr/lib/systemd/systemd. Si vous ne vous en doutiez pas d j , vous noterez

d s pr sent que l'architecture de systemd fait un usage abondant des liens

symboliques...

La configuration est situ e dans le r pertoire /etc/systemd/ et le fichier de

configuration principal va s'appeler /etc/systemd/system.conf.

Pour conna tre l'emplacement des fichiers de configuration de systemd, il est

possible d'utiliser la commande suivante :

pkg-config systemd --variable=systemdsystemconfdir

/etc/systemd/system

Note

Note 1 : systemd peut tre invoqu par un utilisateur avec l'option --user, dans ce

cas, son fichier de configuration principal est /etc/systemd/user.conf, mais

nous occulterons cette possibilit ici.

Note 2 : Sur la distribution Fedora 17, utilis e ici comme exemple, les r pertoires

/bin, /sbin et /lib sont en fait des liens symboliques sur /usr/bin,

/usr/sbin et /usr/lib.

Le fichier /etc/systemd/system.conf est un fichier la .INI , contenant

une rubrique et des options globales, dont les principales sont list es

dans ce tableau :

Param tre

Description

Valeur par

d faut

LogLevel

LogTarget

MountAuto

MountSwap

d finit le niveau de verbosit .

destination des messages de

logs. Une valeur usuelle est

journal, qui exploite un

processus suppl mentaire

(voir 3.2).

honore les montages de

syst mes de fichiers list s

dans /etc/fstab.

honore l'activation des zones

de swap list es dans

/etc/fstab.

choix du cgroup.

info

syslog

yes

yes

DefaultController

s

Certaines options peuvent tre surcharg es en passant des options au noyau ou sur la

ligne de commandes systemd. Par exemple, en cas de probl me, systemd propose

un mode pas- -pas pour permettre la r solution des probl mes si vous lui passez le

param tre systemd.confirm_spawn=1 comme option du noyau, ou --

confirm-spawn sur sa ligne de commandes.

cpu

systemd analyse ensuite le contenu du fichier bien nomm

/etc/systemd/system/default.target qui, sur la Fedora 17 lanc e en

mode graphique, est un lien symbolique vers

/lib/systemd/system/runlevel5.target. Enfin du concret ! Nous

pouvons examiner le contenu de ce fichier et commencer explorer la syntaxe des

fichiers de configuration des unit s.

Notez que sur votre distribution, pour conna tre l'emplacement des fichiers de

configuration des unit s, il est possible d'utiliser la commande suivante :

pkg-config systemd --variable=systemdsystemunitdir

/usr/lib/systemd/system

Si les fichiers qui sont sous /etc/systemd/system/ sont en fait des liens

symboliques sur leurs homonymes situ s sous /lib/systemd/system/, certains

r pertoires existent avec le m me nom la fois sous les r pertoires

/etc/systemd/system/ ET /lib/systemd/system/, et dans ce cas leur

contenu diff re. L'affichage de la valeur de la variable systemdsystemunitpath

avec la commande pkg-config montre bien que le r pertoire

/etc/systemd/system/ est prioritaire.

Un fichier de configuration d'unit contient les rubriques suivantes :

Nom de la rubrique Description

d crit le service et les r gles de d pendances l'aide des

param tres :

Description, Before, After, Requires, Requisite, Wants,

Condition*.

d crit ce qu'il faut faire quand on invoque

systemctl enable | disable. Par exemple, le

param tre WantedBy=xxxx indique qu'il faudra

cr er un lien symbolique dans le r pertoire

/etc/systemd/system/xxxx.wants/. Also

indique des unit s additionnelles installer en

Advertisement

plus.

Puis, selon le type de l'unit , des sections suppl mentaires et leurs lots de param tres

seront n cessaires.

2.4. EXEMPLES DE CONFIGURATION

tout seigneur tout honneur, examinons le contenu du fichier

/etc/systemd/system/default.target qui est le nom de la premi re unit

lanc e par systemd (pour information, je suis un adepte de la commande

readlink qui permet de conna tre le nom final du fichier r f renc par une suite de

liens symboliques) :

readlink -f /etc/systemd/system/default.target

/lib/systemd/system/graphical.target

cat /etc/systemd/system/default.target

Description=Graphical Interface

Documentation=man:systemd.special(7)

Requires=multi-user.target

After=multi-user.target

Conflicts=rescue.target

AllowIsolate=yes

Alias=default.target

Nous retrouvons bien les sections et dont nous avons parl au

2.3. Le param tre Requires= indique que l'unit multi-user.target doit tre

activ e pour que default.target soit consid r e comme active. Le param tre

After= pr cise qu'il faut attendre la fin de l'ex cution de l'unit multi-

user.target avant de finir l'ex cution de default.target (il existe aussi un

param tre Before=, mais en l'absence de pr cision sur l'ordonnancement, les

ex cutions sont parall lis es).

Le param tre Conflicts= indique que l'unit default.target ne doit pas tre

lanc e si rescue.target est d j activ e. L'unit rescue.target correspond

au runlevel 1, il est normal de ne pas lancer le mode multi-utilisateur et encore moins

l'interface graphique !

Le param tre AllowIsolate= est un hack : il permettra de faire en sorte qu'on

puisse imiter le changement de niveau d'ex cution comme on le faisait avec init.

Dans le cas d'un changement de runlevel, donc, tous les processus qui ne seront pas

g r s par l'unit default.target ou ses d pendances seront arr t s.

Le param tre Alias= de la rubrique indique que lors de l'activation de

cette unit (dont le v ritable nom est runlevel5.target), il faudra cr er un alias

sous la forme d'un lien symbolique nomm default.target ! Eh oui : autant

d crire tous les liens symboliques dans des fichiers de configuration et laisser les outils

fournis avec systemd g rer correctement ces liens.

Reprenons : default.target doit tre activ e apr s multi-user.target.

Que fait cette unit ?

cat /lib/systemd/system/multi-user.target

Description=Muti-User

Documentation=man:systemd.special(7)

Requires=basic.target

Conflicts=rescue.service rescue.target

After=basic.target rescue.service rescue.target

AllowIsolate=yes

Alias=default.target

Vous commencez comprendre le m canisme ? On nage en pleine r cursivit : cette

unit d pend de basic.target, mais un moment donn , il faudra bien lancer des

processus ! Notons que la rubrique d finit un Alias qui porte le m me

nom que celui d fini par l'unit graphical.target : ce n'est pas un probl me car

l'unit graphical.target se jouant apr s multi-user.target, le lien

symbolique default.target pointera bien vers la bonne unit .

En continuant l'examen des unit s selon leurs d pendances, on constate que

basic.target d pend de sysinit.target et sockets.target. La

configuration de sysinit.target contient un nouveau param tre int ressant :

...

Wants=local-fs.target swap.target

On se doute qu'il va falloir d'abord activer les syst mes de fichiers locaux ainsi que le

swap avant de r aliser d'autres t ches, mais ici, Wants= indique que l'unit

sysinit.target sera activ e m me si l'une des unit s dont elle d pend choue

lors de son activation. Ce comportement est diff rent du Requires= qui stipule que

l'unit n'est activ e que si toutes les unit s dont elle d pend sont activ es avec succ s

(c'est une forme de transaction !).

Parfois, une unit peut d pendre de tr s nombreuses autres unit s, ce qui provoquerait

l' criture de directives Wants= ou Requires= assez fastidieuses avec le souci de

devoir modifier ces lignes chaque fois que les d pendances sont modifi es. Pour viter

cela, systemd permet d'externaliser les d pendances d'une unit en permettant

l'utilisation de r pertoires associ s des liens symboliques (encore !). Le principe est

le suivant (nous le d crivons pour la directive Wants=, il se transpose ais ment pour

la directive Requires=) :

Prenons l'exemple de l'unit sysinit.target, elle d pend de local-

fs.target et swap.target, comme indiqu par son fichier de configuration,

mais ce n'est pas tout ! Comme il existe un r pertoire nomm

/etc/systemd/system/sysinit.target.wants/, l'unit

sysinit.target d pend aussi de toutes les unit s dont le nom appara t dans les

liens symboliques situ s dans ce r pertoire :

cd /etc/systemd/system

ls -l sysinit.target.wants

...

lvm2-monitor.service -> /usr/lib/systemd/system/lvm2-

monitor.service

...

mdmonitor-takeover.service -> /usr/lib/systemd/system/mdmonitor-

takeover.service

Les d pendances se r glent donc simplement coups de cr ation et destruction de

liens symboliques. R le parfaitement rempli par la commande systemctl que nous

verrons dans un instant.

Prenons un autre exemple : comment est lanc le d mon sshd ? Il est d crit par

l'unit /lib/systemd/system/sshd.service qui est r f renc e par un lien

symbolique situ sous /etc/systemd/system/multi-

user.target.wants/. Le contenu du fichier sshd.service est :

Description=OpenSSH server saemon

After=syslog.target network.target auditd.service

EnvironmentFile=/etc/sysconfig/sshd

ExecStartPre=/usr/sbin/sshd-keygen

ExecStart=/usr/sbin/sshd -D $OPTIONS

ExecReload=/bin/kill -HUP $MAINPID

WantedBy=multi-user.target

Oui, un service dispose d'une nouvelle rubrique nomm e dont les

param tres sont explicites. Toutefois, il manque ici le param tre Type= qui indique

comment lancer le service. La valeur par d faut est simple pour indiquer que le

processus nomm par ExecStart= est le processus principal du service, mais les

autres possibilit s sont : forking, dbus, oneshot, idle et notify (voir la

documentation man systemd.service). Remarquez aussi la ligne de commandes

Advertisement

qui permet de faire un reload du d mon : la variable $MAINPID est g r e par

systemd et aura pour valeur le PID de sshd.

Dans la configuration de l'unit sshd.service, on trouve aussi la directive

WantedBy= qui indique la d pendance entre ce service et l'unit multi-

user.target, ce qui n cessitera la cr ation d'un lien symbolique dans

/etc/systemd/system/multi-user.target.wants/ lors de

l'initialisation des unit s.

La configuration des services permet aussi d'imiter la fonctionnalit du respawn

propos e par init. Avec systemd, la surveillance et la reg n ration d'un processus

de service est r alis e par les directives Restart= (sur quel tat du processus faut-il

le relancer ?) et RestartSec= (au bout de combien de secondes faut-il le relancer

?). Regardez le contenu de la configuration de l'unit [email protected] pour en

avoir un exemple.

Avez-vous remarqu la pr sence du caract re @ dans le nom de l'unit

[email protected] ? Il s'agit d'une astuce lexicale propos e par systemd pour

permettre de cr er des mod les d'unit s (unit templates). En effet, vous savez

qu'habituellement vous disposez d'un certain nombre de terminaux virtuels, chacun

tant g r par une commande de la famille getty (par exemple, sur RedHat cette

commande est /sbin/mingetty voir dans le fichier /etc/inittab). Pour

imiter ce comportement, il faudrait donc d finir autant d'unit s que de terminaux

virtuels g rer, ce qui est videmment viter. Les mod les d'unit s prennent tout

leur sens alors :

si systemd doit activer une unit dont le nom est [email protected] et que

ce nom d'unit n'existe pas sous /lib/systemd/system/, alors, cause de la

pr sence du caract re @ dans le nom de l'unit , systemd va rechercher une unit dont

le nom est [email protected]. Comme cette unit existe, c'est elle qui sera invoqu e

et la cha ne tty1 qui faisait partie du nom de l'unit initiale sera fournie sous forme

de specifier accessible dans la configuration de l'unit . Ce specifier se nomme %I

(lire i majuscule. Il en existe d'autres voir man systemd.unit).

Voici un extrait du fichier [email protected] sur Fedora17 :

Description=Getty on %I

...

Restart=always

RestartSec=0

TTYPath=/dev/%I

...

Outre les services, au sens classique du terme, nous avons dit en pr ambule que

systemd allait aussi g rer les sockets afin d'acc l rer les lancements des processus

inter-d pendants. Regardons la syntaxe de configuration d'une unit de type Socket,

par exemple cups.socket :

Description=CUPS Printing Service Sockets

ListenStream=/var/run/cups/cups.sock

ListenStream=631

ListenDatagram=0.0.0.0:631

WantedBy=sockets.target

Nous constatons la pr sence d'une rubrique contenant les param tres de

cr ation des sockets cr er. Ici, systemd va cr er une socket du domaine UNIX qui

s'appellera /var/run/cups/cups.sock, puis une socket TCP

(ListenStream) l' coute sur le port 631 pour toutes les adresses IP de la machine,

puis il cr era une socket UDP (ListenDatagram) l' coute du port 631 en IPv4

uniquement. D'autres param tres sont disponibles (voir man systemd.socket).

Comme ultime exemple, nous allons prendre l'exemple d'un montage effectuer lors

du d marrage. Il m'arrive souvent de placer ce type de montage dans le v n rable

/etc/rc.local, mais le faire g rer par systemd est un gage de robustesse. Sur

notre Fedora 17, le contenu du fichier media.mount est :

Description=Media Directory

Before=local-fs.target

:

What=tmpfs

Where=/media

Type=tmpfs

Options=mode=755,nosuid,nodev,noexec

Ce qui permet d'avoir au d marrage un r pertoire /media associ un syst me de

fichiers de type tmpfs.

Comme vous le subodorez peut- tre d j , le nombre de param tres possibles pour

d finir la configuration des unit s est tr s important, ce qui fait la fois la richesse et

la complexit de systemd !

2.5. PETITE SYNTH SE

R capitulons en prenant comme exemple le d marrage du syst me :

Lorsque systemd est lanc par le noyau (1), il lit son fichier

/etc/systemd/system.conf (2), puis il examine la premi re unit lancer :

default.target (3) qui est en r alit un lien symbolique vers

runlevel5.target (lui-m me lien symbolique vers graphical.target).

Ce fichier contient une directive After=multi-user.target, donc systemd

cherche la configuration de cette unit (4) et l'interpr te. Mais il existe un r pertoire

multi-user.target.wants (5), donc systemd parcourt ce r pertoire pour

activer les unit s qui y sont d crites. On y trouve par exemple sshd.service, etc.

3. GESTION DES PROCESSUS ET DES LOGS

3.1. GESTION DES PROCESSUS

Par d faut, systemd maintient automatiquement la relation entre PID et processus

activ s. Ainsi, le PID de notre d mon sshd pr c dent est stock par systemd dans

le fichier /var/run/sshd.pid. Mais pour les services dont la valeur de Type=

est forked (alors que le type est simple pour sshd.service), systemd peut

se tromper dans son analyse du processus principal. En effet, quand un service est de

type forked, cela signifie que le processus lanc par systemd va lancer un ou

plusieurs processus fils puis va se terminer. S'il a lanc plusieurs processus fils, le

stockage de PID du processus fils principal est la charge du processus parent et il

faut indiquer systemd dans quel fichier est stock ce PID. On fait pour cela un

usage de la directive PIDFile= dans le fichier de configuration de l'unit .

Note

sur Fedora 17, le r pertoire /var/run est en fait un lien symbolique vers /run qui

est le point de montage d'un syst me de fichiers de type tmpfs, donc rapide mais non

persistant.

3.2. GESTION DES LOGS

Dans le tableau du 2.3, nous avons montr les param tres principaux de systemd

dans le fichier /etc/systemd/system.conf. Parmi ceux-ci, nous avons voqu

LogTarget=. Sur Fedora 17, la valeur de ce param tre est : journal. Cela indique

systemd d'envoyer tous les messages de log un nouveau d mon nomm

systemd-journald lui-m me activ par systemd car d crit par l'unit

systemd-journald.service.

Ce processus est configur par le fichier /etc/systemd/systemd-

journald.conf dont voici un extrait :

ForwardToSyslog=yes

MaxLevelSyslog=debug

Compress=yes

#SystemMaxUse=

#ForwardToConsole=no

Le processus systemd-journald stocke les logs qu'il re oit dans des fichiers

Advertisement

situ s sous /run/log/journal/, mais il peut aussi r mettre les logs vers le

d mon syslog (ou rsyslog dans notre cas) ou vers la Console syst me. On peut

lui indiquer des tailles limites de fichiers g n rer ou une taille maximale d'espace

disque utiliser.

Les fichiers de logs sont un format binaire, il faut utiliser la commande

journalctl pour en afficher le contenu :

journalctl

affiche le contenu des logs avec votre paginateur pr f r , mais il est possible de limiter

le nombre de lignes affich es avec l'option -n (comme le fait la commande tail) :

journalctl -n 10

Enfin, l'affichage peut tre filtr (comme le ferait grep !) en pr cisant des valeurs

sp cifiques pour les champs des lignes de logs. Ces champs ont des noms pr d finis

comme MESSAGE, PRIORITY, _PID, _HOSTNAME, _SYSTEMD_UNIT (voir man

systemd.journal-fields). Par exemple, pour n'afficher que les logs relatifs

l'unit sshd.service, on ex cute la commande :

journalctl _SYSTEMD_UNIT=sshd.service

4. COMMENT FAIRE COMME AVANT, AVEC

INIT ?

Finalement, 30 ans apr s, Unix/Linux ne change pas radicalement : on peut g rer

systemd avec les commandes ln pour les liens symboliques et vi pour la

configuration ! N anmoins, essayons d' tre un peu plus productifs et vitons de

r crire des commandes qui existent d j . Si, comme moi, vous vous tes habitu aux

commandes simples mais n anmoins utiles chkconfig et service, par quoi va-t-il

falloir les remplacer ?

Voici un petit tableau qui met en parall le vos commandes usuelles avec leur pendant

la mode de systemd :

Remplacement de la commandechkconfig

chkconfig sshd on

chkconfig sshd off

chkconfig sshd --list

Remplacement de la commande service

service sshd status

systemctl enable sshd.service

systemctl disable sshd.service

systemctl is-enabled sshd.service

systemctl status sshd.service

service sshd status

service sshd start

systemctl start sshd.service

service sshd start

service sshd stop

systemctl stop sshd.service

service sshd stop

service sshd reload

systemctl reload sshd.service

service sshd reload

Remplacement des commandesinitettelinit

init 0

systemctl poweroff

init 6

init 3

init 0

systemctl reboot

init 6

systemctl isolate runlevel3.target

init 3

Choix du niveau d'ex cution au d marrage

valeur de initdefault dans /etc/inittab

valeur du lien symbolique

default.target

En r sum :

Fonctionnalit

init (system V)

systemd

Activation d'un service

au d marrage

commande chkconfig

liens symboliques vers

/etc/init.d/

chkconfig et liens

symboliques pour les

scripts non encore migr s

commande systemctl pour

les processus pris en charge

par systemd

D marrage ou arr t

d'un service

Changement de niveau

d'ex cution

commande service

commande service ou

commande systemctl

commande init

commande init ou

commande systemctl

Vous voyez l'int r t de la nouvelle commande systemctl qui centralise toutes les

op rations mais qui permet de r aliser d'autres op rations :

  • pour obtenir la liste de toutes les unit s (situ es sous /lib/systemd/system/)

et leur tat courant :

systemctl list-unit-files

  • pour obtenir la liste et la description des unit s de type service :

systemctl list-units -t service

  • si vous changez la configuration de systemd ou des unit s, la commande suivante

permet de faire relire les fichiers par systemd :

systemctl daemon-reload

  • et si vous aimez les graphes bien touffus (et inexploitables !), vous pouvez

g n rer une image repr sentant les d pendances entre toutes les unit s par :

systemctl dor | dot -Tsvg > fichier.svg

CONCLUSION

la lecture de cet article, peut- tre avez-vous eu la r action suivante : mais

pourquoi avoir fait si compliqu alors que finalement init ne fonctionnait pas si mal

que a ? . Effectivement, je

me suis aussi pos cette question et me la pose encore. Administrateur de serveurs

Linux, je n'ai jamais connu de probl me avec init et, si parfois, on peut consid rer le

temps de d marrage comme plut t long, ce n'est rien compar aux d lais de scans et de

tests des Bios et firmwares des contr leurs de toutes sortes. Le passage vers systemd

(ou upstart) ne se justifie pas, selon moi, sur de telles plates-formes. Vouloir faire

la course entre distributions Linux, Mac OS X voire Windows (!), n'a aucun int r t

pour des serveurs. N anmoins, il semble que le pas soit pris et que, petit petit, les

principales distributions Linux nous forcent ainsi nous adapter. Alors, avant de vous

retrouver face une nouvelle version de votre Linux pr f r o init et les scripts

System V auront d finitivement disparu, tudiez d s pr sent le fonctionnement de

systemd dont le p rim tre d'action va encore s'accro tre avec la future int gration de

udev !