Précédent: Référence de service, Monter: Définir des services [Table des matières][Index]
Le module (gnu services shepherd)
fournit une manière de définir les
services gérés par le GNU Shepherd, qui est le système d’initialisation
— le premier processus démarré lorsque le système démarre, aussi connu comme
étant le PID 1 (voir Introduction dans The GNU Shepherd
Manual).
Les services dans le Shepherd peuvent dépendre les uns des autres. Par exemple, le démon SSH peut avoir besoin d’être démarré après le démon syslog, qui à son tour doit être démarré après le montage des systèmes de fichiers. Le système d’exploitation simple déclaré précédemment (voir Utiliser le système de configuration) crée un graphe de service comme ceci :
Vous pouvez générer un tel graphe pour n’importe quelle définition de
système d’exploitation avec la commande guix system shepherd-graph
(voir guix system shepherd-graph
).
La variable %shepherd-root-service est un objet de service
représentant le PID 1, de type shepherd-root-service-type ; il
peut être étendu en lui passant des listes d’objets
<shepherd-service>
.
Le type de données représentant un service géré par le Shepherd.
provision
C’est une liste de symboles dénotant ce que le service fournit.
Ce sont les noms qui peuvent être passés à herd start
,
herd status
et les commandes similaires (voir Invoking herd dans The GNU Shepherd Manual). Voir the
provides
slot dans The GNU Shepherd Manual, pour plus de
détails.
requirement
(par défaut: '()
)Liste de symboles dénotant les services du Shepherd dont celui-ci dépend.
one-shot?
(par défaut : #f
)Indique si ce service est ponctuel. Les services ponctuels s’arrêtent
immédiatement à la fin de leur action start
. Voir Slots of services dans The GNU Shepherd Manual, pour plus d’infos.
respawn?
(par défaut : #t
)Indique s’il faut redémarrer le service lorsqu’il s’arrête, par exemple si le processus sous-jacent meurt.
start
stop
(par défaut : #~(const #f)
)Les champs start
et stop
se réfèrent à la capacité du Shepherd
de démarrer et d’arrêter des processus (voir Service De- and Constructors dans The GNU Shepherd Manual). Ils sont donnés comme
des G-expressions qui sont étendues dans le fichier de configuration du
Shepherd (voir G-Expressions).
actions
(par défaut : '()
)C’est une liste d’objets shepherd-action
(voir plus bas) définissant
des actions supportées par le service, en plus des actions
start
et stop
standards. Les actions listées ici sont
disponibles en tant que sous-commande de herd
:
herd action service [arguments…]
auto-start?
(par défaut : #t
)Indique si ce service doit être démarré automatiquement par le Shepherd. Si
la valeur est #f
, le service doit être démarré manuellement avec
herd start
.
documentation
Une chaîne de documentation, montrée lorsqu’on lance :
herd doc service-name
où service-name est l’un des symboles dans provision (voir Invoking herd dans The GNU Shepherd Manual).
modules
(par défaut : %default-modules
)C’est la liste des modules qui doivent être dans le contexte lorsque
start
et stop
sont évalués.
C’est le type de données qui définie des actions supplémentaires implémentées par un service Shepherd (voir au-dessus).
name
Symbole nommant l’action.
documentation
C’est une chaîne de documentation pour l’action. Elle peut être consultée avec :
herd doc service action action
procedure
Cela devrait être une gexp qui s’évalue en une procédure à au moins un argument, la « valeur de lancement » du service (voir Slots of services dans The GNU Shepherd Manual).
L’exemple suivant définie une action nommée dire-bonjour
qui salue
amicalement l’utilisateur :
(shepherd-action
(name 'dire-bonjour)
(documentation "Dit salut !")
(procedure #~(lambda (running . args)
(format #t "Salut, l'ami ! arguments : ~s\n"
args)
#t)))
En supposant que cette action est ajoutée dans le service example
,
vous pouvez écrire :
# herd dire-bonjour example Salut, l'ami ! arguments : () # herd dire-bonjour example a b c Salut, l'ami ! arguments : ("a" "b" "c")
Comme vous pouvez le voir, c’est une manière assez sophistiquée de dire bonjour. Voir Service Convenience dans The GNU Shepherd Manual, pour plus d’informations sur les actions.
Le type de service pour le « service racine » du Shepherd — c.-à-d. le PID 1.
This is the service type that extensions target when they want to create
shepherd services (voir Types service et services, for an example).
Each extension must pass a list of <shepherd-service>
. Its value
must be a shepherd-configuration
, as described below.
This data type represents the Shepherd’s configuration.
shepherd (default: shepherd
)
The Shepherd package to use.
services (default: '()
)
A list of <shepherd-service>
to start. You should probably use the
service extension mechanism instead (voir Services Shepherd).
The following example specifies the Shepherd package for the operating system:
(operating-system
;; ...
(services (append (list openssh-service-type))
;; ...
%desktop-services)
;; ...
;; Use own Shepherd package.
(essential-services
(modify-services (operating-system-default-essential-services
this-operating-system)
(shepherd-root-service-type config => (shepherd-configuration
(inherit config)
(shepherd my-shepherd))))))
Ce service représente le PID 1.
Précédent: Référence de service, Monter: Définir des services [Table des matières][Index]