Systemd : les commandes essentielles
Table des matières
systemd est un remplaçant du démon init system V pour Linux. Il a pour but d'offrir une meilleure gestion des dépendances entre services, ainsi que de permettre le chargement en parallèle des services au démarrage.
Cela permet réduire le temps de démarrage du système et de lancer moins de processus.
Les distributions Fedora, Mageia, Open SUSE et Debian ont adopté ce système par défaut dans leurs distributions respectives.
Ubuntu utilise upstart et Gentoo utilise OpenRC.
L'outil systemctl permet de configurer les services qui sont lancés au démarrage.
Pour configurer un service pour qu'il soit lancé automatiquement au démarrage du système, utiliser la commande :
Voici un exemple avec le service sshd :
Pour configurer un service pour qu'il ne soit plus lancé automatiquement au démarrage du système, utiliser la commande :
Voici un exemple avec le service sshd :
Pour connaître le statut d'un service, utiliser la commande :
Voici un exemple avec le service sshd
Les informations sont très minimalistes.
Pour plus de détails, utiliser la commande :
L'auto-complétion fonctionne pour le nom du service; voici un exemple sur le service sshd :
Il est possible de lister tous les services actifs :
Voici un extrait du résultat de la commande :
Pour démarrer un service, utilisez la commande :
Illustration avec le service sshd :
Pour arrêter un service, utilisez la commande :
Illustration avec le service sshd :
Une commande existe pour redémarrer un service (ce qui correspond à un systemctl stop enchaîné d'un systemctl start ) :
Redémarrer un service entraîne son arrêt pendant un très court moment.
Imaginons, on modifie la configuration de samba (partage de fichiers), on souhaite prendre en compte la nouvelle configuration.
Redémarrer le service entraîne une déconnexion d'utilisateurs, et si un fichier est en cours de transfert, celui-ci s'annule.
On peut recharger la configuration sans interrompre le service avec cette commande :
Exemple avec le service de samba :
Introduction
systemd est un remplaçant du démon init system V pour Linux. Il a pour but d'offrir une meilleure gestion des dépendances entre services, ainsi que de permettre le chargement en parallèle des services au démarrage.
Cela permet réduire le temps de démarrage du système et de lancer moins de processus.
Les distributions Fedora, Mageia, Open SUSE et Debian ont adopté ce système par défaut dans leurs distributions respectives.
Ubuntu utilise upstart et Gentoo utilise OpenRC.
Configurer ses services
L'outil systemctl permet de configurer les services qui sont lancés au démarrage.
Activer un service au démarrage
Pour configurer un service pour qu'il soit lancé automatiquement au démarrage du système, utiliser la commande :
Code BASH :
systemctl enable nom_du_service.service
Voici un exemple avec le service sshd :
Code BASH :
# systemctl enable sshd.service ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service'
Désactiver un service au démarrage
Pour configurer un service pour qu'il ne soit plus lancé automatiquement au démarrage du système, utiliser la commande :
Code BASH :
systemctl disable nom_du_service.service
Voici un exemple avec le service sshd :
Code BASH :
# systemctl disable sshd.service rm '/etc/systemd/system/multi-user.target.wants/sshd.service'
Services en fonction
Statut d'un service
Pour connaître le statut d'un service, utiliser la commande :
Code BASH :
# systemctl is-active nom_du_service.service
Voici un exemple avec le service sshd
Code BASH :
# systemctl is-active sshd.service
active
Les informations sont très minimalistes.
Pour plus de détails, utiliser la commande :
Code BASH :
systemctl status nom_du_service.service
L'auto-complétion fonctionne pour le nom du service; voici un exemple sur le service sshd :
Code BASH :
# systemctl status sshd.service sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since lun. 2013-09-16 17:49:01 CEST; 2 days ago Main PID: 676 (sshd) CGroup: name=systemd:/system/sshd.service └─676 /usr/sbin/sshd -D sept. 16 17:49:01 fedora systemd[1]: Starting OpenSSH server daemon... sept. 16 17:49:01 fedora systemd[1]: Started OpenSSH server daemon. sept. 16 17:49:02 fedora sshd[676]: Server listening on 0.0.0.0 port 22. sept. 16 17:49:02 fedora sshd[676]: Server listening on :: port 22. sept. 18 15:02:34 fedora sshd[28095]: Accepted password for adrienfedo from 192.168.1.11 port 51600 ssh2 sept. 18 16:22:30 fedora sshd[16864]: Accepted password for adrienfedo from 192.168.1.11 port 51618 ssh2
Il est possible de lister tous les services actifs :
Code BASH :
# systemctl list-units --type=service
Voici un extrait du résultat de la commande :
Code BASH :
# systemctl list-units --type=service UNIT LOAD ACTIVE SUB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrt-xorg.service loaded active running ABRT Xorg log watcher abrtd.service loaded active running ABRT Automated Bug Reporting accounts-daemon.service loaded active running Accounts Service alsa-state.service loaded active running Manage Sound Card State (rest atd.service loaded active running Job spooling tools auditd.service loaded active running Security Auditing Service avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack bluetooth.service loaded active running Bluetooth service bumblebee-nvidia.service loaded active exited Compiling NVidia Driver
Exécution de services
Démarrer un service
Pour démarrer un service, utilisez la commande :
Code BASH :
# systemctl start nom_du_service.service
Illustration avec le service sshd :
Code BASH :
# systemctl is-active sshd.service active # systemctl stop sshd.service # systemctl is-active sshd.service inactive
Arrêter un service
Pour arrêter un service, utilisez la commande :
Code BASH :
# systemctl stop nom_du_service.service
Illustration avec le service sshd :
Code BASH :
# systemctl is-active sshd.service active # systemctl stop sshd.service # systemctl is-active sshd.service inactive
Redémarrer un service
Une commande existe pour redémarrer un service (ce qui correspond à un systemctl stop enchaîné d'un systemctl start ) :
Code BASH :
systemctl restart nom_du_service.service
Code BASH :
# systemctl restart sshd.service
Recharger la configuration un service
Redémarrer un service entraîne son arrêt pendant un très court moment.
Imaginons, on modifie la configuration de samba (partage de fichiers), on souhaite prendre en compte la nouvelle configuration.
Redémarrer le service entraîne une déconnexion d'utilisateurs, et si un fichier est en cours de transfert, celui-ci s'annule.
On peut recharger la configuration sans interrompre le service avec cette commande :
Code BASH :
systemctl reload nom_du_service.service
Exemple avec le service de samba :
Code BASH :
# systemctl reload smb.service