====== Services ======
----
A partir de Redhat/CentOS 7 et Ubuntu 16.04 la gestion des services se fait par systemd
===== systemd =====
==== target boot ====
systemctl get-default Interrogation de la target
systemctl set-default Positionne la target
La commande gère un lien default.target dans le répertoire /etc/systemd/system qui pointe vers /lib/systemd/system/.
=== Equivalence target/runlevel ===
^ Runlevel ^ Target ^
| 0 | poweroff.target |
| 1 | rescue.target |
| 2,3,4 | multi-user.target |
| 5 | graphical.target |
| 6 | reboot.target |
=== Interrogation runlevel ===
who -r retourne le runlevel et l'heure du dernier démarrage.
==== Création d'un service ====
[Unit]
Description=Description du service
# dépendances
Wants=svc1.service svc2.service # ces services seront démarrés en même temps que celui-ci qui démarrera que les précédents démarrent avec succès ou pas
Requires=titi.service # si le service spécifié échoue ou est arrêté, celui-ci le sera également
# ordre de démarrage
Before=svc1.service # le service svc1 démarrera après que celui-ci soit démarré
After=svc2.service # ce service démarrera après le service svc2
StartLimitIntervalSec=0 # contrôle la limitation des redémarrages
[Service]
Type=simple # simple | forking | oneshot | notify | dbus | idle
User=user # utilisateur avec lequel exécuter le service
Group=group # groupe de l'utilisateur à utiliser pour le service
StandardOutput=null # destination de la sortie console : syslog | null
StandardError=null # destination des messages d'erreur : syslog | null
SyslogIdentifier=appli # Identifiant dans les logs
Environment=VAR1=VAL1 # définition de variables d'environnement
Environment=VAR2=VAL2
EnvironmentFile=/.../fichier # définition de variables d'environnement dans un fichier externe (attention accessibilité pas dans répertoire user)
ExecStartPre=/bin/mkdir -p /var/run/monapplication # exécution de commandes avant le démarrage du service
ExecStartPre=-/bin/chown monuser:monuser /var/run/monapplication # il est possible d'ajouter un - devant la commande pour ignorer les erreurs
ExecStartPre=/opt/monapplication/scripts/check_dependencies.sh # exécution script avant le démarrage du service
TimeoutStartSec=300 # temps d'attente maximum pour ExecStartPre
WorkingDirectory=/home/pi # répertoire de travail
ExecStart=commande # commande pour lancer le service
Restart=always # politique de redémarrage du service si plantage
RestartSec=20 # délai avant redémarrage
ExecStopPost=/opt/monapplication/scripts/cleanup.sh # exécution script après l'arrêt du service
[Install]
WantedBy=multi-user.target # niveau pour le lancement du service
[[https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html]]
==== Management des services ====
=== Prise en compte modifications ===
sudo systemctl daemon-reload # recharge le gestionnaire de configuration de systemd
=== Démarrage/arrêt des services ===
sudo systemctl start # démarrage du service
sudo systemctl stop # arrêt du service
sudo systemctl restart # redémarrage du service
systemctl help # affiche les pages d'aide associé au service (si existent)
systemctl status # interrogation de l'état du service
=== Activation/désactivation des services au démarrage ===
sudo systemctl enable # activation du service au démarrage
sudo systemctl disable # désactivation du service au démarrage
systemctl list-unit-files *.service # liste l’état des services au démarrage
=== Interrogations ===
systemctl status # état du système
systemctl list-units # liste les services en cours d'exécution
systemctl # idem
systemctl --failed # liste les services en échec
systemctl list-unit-files # liste tous les services installés
systemctl is-enabled # vérifie si le service est activé
==== Debug ====
=== Fichier de log du service ===
Si le paramètre SyslogIdentifier est utilisé :
sudo journalctl -u appli # pour voir les derniers messages
sudo journalctl -u appli -f # pour suivre en temps réel
sudo journalctl -xe # journaux du système
=== Analyse démarrage du système ===
systemd-analyze blame # liste les services lancé au démarrage, triés selon leur temps d'exécution.
----
[[all:bibles:linux:services|Haut de page]]
===== Ancien management des services =====
==== Démarrage/arrêt des services ====
service start démarrage du service
service stop arrêt du service
service restart redémarre le service
service reload recharge les fichiers de configuration du service
service status interroge l'état du service
==== Activation/désactivation des services au démarrage ====
=== Redhat ===
chkconfig
=== Ubuntu ===
sudo update-rc.d enable activation du service
sudo update-rc.d disable désactivation du service
----
===== Ancien niveaux d'exécution system V =====
^ Niveau ^ Effet ^
| 0 | Halt : arrête le système d'exploitation, éteint la machine |
| 1 | mode mono utilisateur pour la maintenance, mode console |
| 2 | mode multi utilisateur, sans réseau, mode console |
| 3 | mode multi utilisateur, avec réseau, mode console |
| 4 | idem que 3 laissé à la convenance de l’administrateur |
| 5 | mode multi utilisateur, avec réseau, avec interface graphique |
| 6 | reboot, redémarrage de la machine |
| S,s | mode single user, le mode le plus bas en cas de soucis |
Le niveau d'exécution est positionné dans le fichier /etc/inittab :
id:5:initdefault:
Pour chaque niveau d’exécution il existe un répertoire /etc/rcn.d qui contient des liens symboliques vers les services, à lancer ou arrêter, présents dans /etc/init.d
Les liens sont de la forme Sxx pour start ou Kxx pour kill.
xx défini l’ordre d’exécution (00= premier, 99=dernier), les kill sont exécutés en premier, puis tous les start.
----
[[all:bibles:linux:services|Haut de page]]