Telechargé par mahmoudbardi

Systemd (1)

publicité
Systemd : les commandes essentielles
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 service
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 :
systemctl enable nom_du_service.service
Voici un exemple avec le service sshd :
# 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 :
systemctl disable nom_du_service.service
Voici un exemple avec le service sshd :
# systemctl disable sshd.service
rm '/etc/systemd/system/multi-user.target.wants/sshd.service'
Statut d'un service
Pour connaître le statut d'un service, utiliser la commande :
# systemctl is-active nom_du_service.service
Voici un exemple avec le service sshd
# systemctl is-active sshd.service
active
Les informations sont très minimalistes.
Pour plus de détails, utiliser la commande :
systemctl status nom_du_service.service
L'auto-complétion fonctionne pour le nom du service; voici un exemple sur le service sshd :
# 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 :
# systemctl list-units --type=service
Voici un extrait du résultat de la commande :
# 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 :
# systemctl start nom_du_service.service
Illustration avec le service sshd :
# 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 :
# systemctl stop nom_du_service.service
Illustration avec le service sshd :
# 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 ) :
systemctl restart nom_du_service.service
# 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 :
systemctl reload nom_du_service.service
Exemple avec le service de samba :
# systemctl reload smb.service
Gérer les niveaux d'exécution (runlevels)
Connaitre son runlevel
Pour connaitre son niveau d'exécution :
systemctl get-default
La réponse est chez moi :
multi-user.target
Ce qu'il faut mémoriser, c'est que multi-user.target correspond au runlevel
historique 3 (Multi-utilisateurs console) et que graphical.target correspond au runlevel
historique 5 (Multi-utilisateurs graphique)
Basculer temporairement de runlevel
Avant systemd, on utilisait la commande init.
Ici, on va utiliser la commande systemctl isolate :
systemctl isolate nom.target
Exemple pour passer en runlevel 5 (graphique) :
systemctl isolate graphical.target
Changer de runlevel par défaut
Avant systemd, on modifiait le fichier /etc/inittab.
Ici, on va utiliser la commande systemctl set-default :
systemctl set-default nom.target
Exemple pour définir le niveau graphique :
systemctl set-default graphical.target
Commande chkconfig (gérer les services)
Un outil à connaitre quand on fait de la Redhat ou Centos
Utilisation chkconfig :
chkconfig est un utilitaire qui permet de gérer les services réseaux linux en ligne de
commande sur Redhat ou Centos. Il se révèle pratique dans le sens ou il permet par exemple
de gérer des services dans un script ou d'ajouter un service dans certain runlevel par exmple.
Pour cela il faut que le script du service soit correctement remplit (voir un déjà existant), car
les informations sur celui-ci ( runlevel par défaut pour lequel le script doit être activé,
description ) sont directement intégrées au début de celui-ci.
Obtenir des informations sur les services :
chkconfig --list
Fournit la liste de tous les services reconnus et précise pour chaque runlevel si ceux-ci sont
lancés au démarrage.
chkconfig --list nom-service
Fournit la configuration actuelle du service nommé nom-service pour tous les runlevels.
Activer/Désactiver un service :
chkconfig --level 35 nom-service on
Spécifie que service doit être lancé au démarrage pour les runlevel 3 et 5.
chkconfig --level 35 nom-service off
spécifie que nom-service ne doit pas être lancé au démarrage pour les runlevels 3 et 5.
chkconfig --add nom-service
Ajouter nom-service comme étant un service pouvant être géré par chkconfig ( comme je le
disais plus haut script doit être correctement remplit ).
chkconfig --del nom-service
Suppression de nom-service.
chkconfig nom-service reset
Remet la configuration à celle par défaut définie dans le script.
Comparaison de l'utilitaire chkconfig avec systemctl
Téléchargement