Outils pour utilisateurs

Outils du site


all:bibles:linux:services

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
all:bibles:linux:services [2024/12/17 08:15] omeylhocall:bibles:linux:services [2024/12/17 10:23] (Version actuelle) – [Création d'un service] omeylhoc
Ligne 1: Ligne 1:
 +====== Services ======
 +
 +----
 +
 +<note tip>A partir de Redhat/CentOS 7 et Ubuntu 16.04 la gestion des services se fait par systemd</note>
 +
 +===== systemd =====
 +
 +==== target boot ====
 +
 +<code bash>
 +systemctl get-default         Interrogation de la target
 +systemctl set-default <mode>  Positionne la target
 +</code>
 +
 +La commande gère un lien default.target dans le répertoire <color #00a2e8>/etc/systemd/system</color> qui pointe vers <color #00a2e8>/lib/systemd/system/<target></color>.
 +=== 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 ===
 +
 +<code bash>
 +who -r     retourne le runlevel et l'heure du dernier démarrage.
 +</code>
 +
 +==== Création d'un service ====
 +
 +<code bash>
 +[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
 +</code>
 +
 +[[https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html]]
 +
 +==== Management des services ====
 +
 +=== Prise en compte modifications ===
 +
 +<code bash>
 +sudo systemctl daemon-reload   # recharge le gestionnaire de configuration de systemd
 +</code>
 +
 +=== Démarrage/arrêt des services ===
 +
 +<code bash>
 +sudo systemctl start <service>      # démarrage du service
 +sudo systemctl stop <service>       # arrêt du service
 +sudo systemctl restart <service>    # redémarrage du service 
 +systemctl help <service>            # affiche les pages d'aide associé au service (si existent)
 +systemctl status <service>          # interrogation de l'état du service
 +</code>
 +
 +=== Activation/désactivation des services au démarrage ===
 +
 +<code bash>
 +sudo systemctl enable <service>      # activation du service au démarrage
 +sudo systemctl disable <service>     # désactivation du service au démarrage
 +systemctl list-unit-files *.service  # liste l’état des services au démarrage
 +</code>
 +
 +=== Interrogations ===
 +
 +<code bash>
 +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 <service>  # vérifie si le service est activé
 +</code>
 +
 +==== Debug ====
 +
 +=== Fichier de log du service ===
 +
 +Si le paramètre SyslogIdentifier est utilisé :
 +
 +<code bash>
 +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
 +</code>
 +
 +=== Analyse démarrage du système ===
 +
 +<code bash>
 +systemd-analyze blame    # liste les services lancé au démarrage, triés selon leur temps d'exécution.
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:services|Haut de page]]
 +
 +===== Ancien management des services =====
 +
 +==== Démarrage/arrêt des services ====
 +
 +<code bash>
 +service <nom> start     démarrage du service
 +service <nom> stop      arrêt du service
 +service <nom> restart   redémarre le service
 +service <nom> reload    recharge les fichiers de configuration du service 
 +service <nom> status    interroge l'état du service
 +</code>
 +
 +==== Activation/désactivation des services au démarrage ====
 +
 +=== Redhat ===
 +
 +<code bash>
 +chkconfig <service> <option>             défini l’état du service dans /etc/rcx.d. Avec option=on|off|reset|resetpriorities
 +chkconfig --list <service>               liste la configuration d’un service donné en fonction du niveau d’exécution
 +chkconfig --list                         liste de l’ensemble des services
 +chkconfig --add <service>                ajoute un service
 +chkconfig --del <service>                supprime le service
 +chkconfig --level x <service> on|off     active ou désactive le service pour les niveaux d’exécution indiqués.
 +</code>
 +
 +=== Ubuntu ===
 +
 +<code bash>
 +sudo update-rc.d <service> enable     activation du service
 +sudo update-rc.d <service> disable    désactivation du service
 +</code>
 +
 +----
 +
 +===== 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 :
 +
 +<code bash>
 +id:5:initdefault:
 +</code>
 +
 +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<service> pour start ou Kxx<service> 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]]