La gestion des services sous Linux
Comment démarrer, arrêter, recharger etc... un service sous Linux
Comme dit sur système V, les services sont des scripts d'initialisation gérés initialement par System V.
Depuis systemd le remplace. Comme dit sur Lea-linux.org, systemd est désormais utilisé sur une bonne partie des distributions comme Ubuntu, Red Hat, Fedora, Mageia, openSuSE, Arch Linux.
Entre System V et systemdil y a eu upstart
Le site ubuntu-fr.org permet de voir comment créer un service et la doc de systemd peut se voir sur man7.org
Comme indiqué sur cette page de RedHat, (mais c'est également la même chose pour Ubuntu/Debian), les fichiers de configuration des services peuvent être dans 3 emplacements :
- /usr/lib/systemd/system/ (ou /lib/systemd/system/) : pour ce qui est installé par des packages RPM. Il ne faut pas y toucher. À ne pas modifier directement (écrasé lors des mises à jour). Cet emplacement a la priorité la plus basse, les répertoires suivants seront prioritaires
- /run/systemd/system/ : Fichiers temporaires créés au runtime (lors de l'exécution). Il ne faut pas y toucher. Priorité intermédiaire
- /etc/systemd/system/ : contient les liens créés par la commande systemctl enable. C'est aussi ici que l'on crée un service manuellement ou que l'on crée un 'override' d'un service système. Priorité maximale cad que c'est prioritaire par rapport à ce qui est dans /usr/lib/systemd/system/, /lib/systemd/system/ ou /run/systemd/system/
En astuce, on peut voir la configuration d'un service avec tous les overrides appliqués avec
systemctl cat monservice
Lien vers le fichier : cliquez ici
Si vous utilisez systemD, pour lister les services tapez
systemctl list-unit-files --type=service | grep enabled
Lien vers le fichier : cliquez ici
Exemple de résultat :
Notez que j'avais vu une autre commande proche qui est :
systemctl list-units
Lien vers le fichier : cliquez ici
Et qui affiche ce type de résultat :
On peut chercher un service avec un wildcard.
Par exemple pour lister l'état des services qui commencent par nfs, on peut taper
systemctl status nfs*
Lien vers le fichier : cliquez ici
Vous pouvez afficher l'aide de systemctl avec la commande
man systemctl
Lien vers le fichier : cliquez ici
Résultat :
Les commandes principales de systemctl sont :
| Commande | Fonction |
|---|---|
| systemctl list-units | Lister les services |
| systemctl status [nom du service].service | Connaitre l'état d'un service |
| systemctl enable [nom du service].service | Activer un service |
| systemctl disable [nom du service].service | Désactiver un service |
| systemctl stop [nom du service].service | Arrêter un service |
| systemctl start [nom du service].service | Démarrer un service |
| systemctl restart [nom du service].service | Redémarrer un service |
| systemctl reload [nom du service].service | Recharge du service avec les nouveaux paramètres (évite les coupures) |
| systemctl daemon-reload | Pour prendre en compte la modification d'un service |
Exemple de redémarrage d'un service avec systemctl :
Bon à savoir, vous pouvez spécifier le compte et groupe à utiliser pour faire tourner le service dans la section [Service]
[Service]
User=nom_utilisateur
Group=nom_groupe
Lien vers le fichier : cliquez ici
Quand vous modifiez un service, il faut recharger le daemon systemd et redémarrer le service
sudo systemctl daemon-reload
sudo systemctl restart monservice
Lien vers le fichier : cliquez ici
Comme dit au début, si vous devez modifier la configuration d'un service, il faut utiliser le bon répertoire et il faut utiliser /etc/systemd/system/, par autre chose comme par exemple /usr/lib/systemd/system/.
Le plus simple pour ne pas se planter est d'utiliser la commande sudo systemctl edit [le nom du service].
Par exemple pour modifier le service keepalived on ferait
sudo systemctl edit keepalived.service
Lien vers le fichier : cliquez ici
Puis on ajouterait la section et l'ajout
[Service]
OOMScoreAdjust=-500
Lien vers le fichier : cliquez ici
Cela va créer le fichier /etc/systemd/system/keepalived.service.d/override.conf
Derrière pour vérifier la bonne prise en compte faire
systemctl cat keepalived.service
Lien vers le fichier : cliquez ici
On voit la surcharge sur la fin
Valider avec
sudo systemctl daemon-reload
sudo systemctl restart keepalived
Lien vers le fichier : cliquez ici
On aurait également pu faie une copie de la config d'origine du service qui est dans /usr/lib/systemd/system/ pour la surcharger dans /etc/systemd/system/
Pour cela on aurait fait
sudo cp /usr/lib/systemd/system/keepalived.service /etc/systemd/system/
sudo nano /etc/systemd/system/keepalived.service
Lien vers le fichier : cliquez ici
Et de là on aurait modifié directement la configuration du service.
Même principe derrière il aurait fallu faire
- sudo systemctl daemon-reload
- sudo systemctl restart keepalived
Tout çà pour dire qu'il ne faut pas modifier directement ce qu'il y a dans /usr/lib/systemd/system/ ou /lib/systemd/system/
Upstart est un autre remplaçant du traditionnel init Unix "System V" mais il a été lui même remplacé par systemd.
Si vos services sont gérés par Upstart, pour les lister, tapez :
initctl list
Lien vers le fichier : cliquez ici
Si votre 'init' est l'ancien système, cad System V, la commande "service" ci-dessous devrait vous lister vos services :
service --status-all
Lien vers le fichier : cliquez ici
Exemple :
Au cas où, vous trouverez plus d'informations sur System V sur ce lien :
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-boot-init-shutdown-sysv.html
L'aide de la commande service s'obtient en tapant
man service
Lien vers le fichier : cliquez ici
Les commandes courantes sont
| Commande | Fonction |
|---|---|
| service --status-all | Lister les services |
| service [nom du service] stop | Arrêter un service |
| service [nom du service] start | Démarrer un service |
| service [nom du service] restart | Redémarrer un service |
Exemple :
Pages Web
| Site Web | Description |
|---|---|
| Lea-linux.org | Explications sur Systemd sur Lea-linux.org |
| Lea-linux.org | Ajouter et supprimer des services (daemons, etc.) au démarrage. |
| Askubuntu.com | Post de forum où l'on trouve pas mal de solutions sur ce sujet |
| doc.ubuntu-fr.org | systemd |
Article(s) suivant(s)
Article(s) précédent(s)