« LINUX:Systemd » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(9 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
----
''→ [[LINUX:Menu|retour au menu de Linux]]''
----
__FORCETOC__
__FORCETOC__
=But=
=But=
Ligne 5 : Ligne 8 :


=Localisation=
=Localisation=
Tous les configurations des services installés se trouvent dans le répertoire "/usr/lib/systemd". La majorité des services qui nous concernent se retrouvent dans le sous-répertoire "system".
Toutes les configurations des services installés se trouvent dans le répertoire "/usr/lib/systemd". La majorité des services qui nous concernent se retrouvent dans le sous-répertoire "system".


Si on désire créer son propre service, il suffit de le placer dans le répertoire "/usr/lib/systemd/system".
Si on désire créer son propre service, il suffit de le placer dans le répertoire "/usr/lib/systemd/system" ou "/etc/systemd/system".
Pour que ce nouveau service soit directement pris en charge, il faut introduire la commande:
Pour que ce nouveau service soit directement pris en charge, il faut recharger la configuration par la commande:
  systemctl daemon-reload
  systemctl daemon-reload
Cette contrainte s'applique également dans le cas d'une modification d'un fichier de configuration d'un service existant. Il faut remarquer que dans le cas d'une modification d'un de ces fichiers, ces changements risquent d'être écrasés lors d'une mise à jour. D'autres solutions existent, décrites plus bas.




=Activation=
=Activation/Désactivation=
Pour activer un service, on utilise la commande:
Pour activer un service, on utilise la commande:
  systemctl enable <NOM DU SERVICE>
  systemctl enable <NOM DU SERVICE>
Cette commande crée un lien symbolique à partir du fichier d'origine et le place dans un des sous-répertoires du répertoire "/etc/systemd/system" souvent "multi-user.target.wants". Il peut créer plusieurs liens si nécessaire.
Cette commande crée un lien symbolique à partir du fichier d'origine et le place dans un des sous-répertoires du répertoire "/etc/systemd/system" souvent "multi-user.target.wants". Elle peut créer plusieurs liens si nécessaire.


Dès lors il se lancera au démarrage de la machine.
Dès lors il se lancera au démarrage de la machine.
Ligne 24 : Ligne 28 :




=Lancer=
=Lancement/Arrêt=
Quelques commandes pour gérer le service:
Quelques commandes pour gérer le service:
* Pour lancer le service:
* Pour lancer le service:
Ligne 37 : Ligne 41 :
Pour voir l'état du service:
Pour voir l'état du service:
  systemctl status <NOM DU SERVICE>
  systemctl status <NOM DU SERVICE>
Si le problème est plus grave, utilisez la commande suivante quyi vous donnera plus de détails; souvent la ligne du fichier de configuration concernée par le blocage sera signalée.  
Elle permet de constater certains problèmes.
 
Si le problème est plus grave, utilisez la commande suivante qui vous donnera plus de détails; souvent la ligne du fichier de configuration concernée par le blocage sera signalée.  
  journalctl -xeu <NOM DU SERVICE>
  journalctl -xeu <NOM DU SERVICE>


Ligne 46 : Ligne 52 :
Vous constaterez dans le fichier "/var/log/messages" un message du genre suivant:
Vous constaterez dans le fichier "/var/log/messages" un message du genre suivant:
  Feb  7 22:57:57 serveurXXX systemd[1]: XXXXXX.service: Failed with result ''' 'timeout' '''.
  Feb  7 22:57:57 serveurXXX systemd[1]: XXXXXX.service: Failed with result ''' 'timeout' '''.
Ceci m'est arrivé deux fois sur une vielle machine devant lancer de très nombreux services. Certains très gourmands et longs à lancer n'ont pas pu démarrer dans les temps.
Ceci m'est arrivé deux fois sur une vieille machine devant lancer de très nombreux services. Certains très gourmands et longs à lancer n'ont pas pu démarrer dans les temps.


On peut y remédier en ajoutant une ligne dans la configuration générale du système de "systemd".
On peut y remédier en ajoutant une ligne dans la configuration générale du système de "systemd".
On allonge ce temps limite de démarrage des services. Pour cela, on ajoute ou on adapte la ligne suivante dans le fichier "'''/etc/systemd/system.conf'''":
On allonge ce temps limite de démarrage des services. Pour cela, on ajoute ou on adapte la ligne suivante dans le fichier "'''/etc/systemd/system.conf'''":
----
----
  DefaultTimeoutStartSec=5min
  DefaultTimeoutStartSec=3min
----
----
Dans cet exemple, on le met à 5 minutes (défaut: 90 sec.).
Dans cet exemple, on le met à 3 minutes (défaut: 90 sec.). A ajuster selon les cas.
 
Une commande analogue existe, à mettre dans le fichier de configuration du service concerné mais alors il faut surveiller les modifications éventuelles apportées lors des mises à jour.




=<nowiki><ALT><CTRL><DEL></nowiki>=
=<nowiki><ALT><CTRL><DEL></nowiki>=
Dans ce même fichier "'''/etc/systemd/system.conf'''", il peut être utile de ne pas pouvoir redémarrer la machine par la séquence de touches <ALT><CTRL><DEL> bien connue sous Windows mais qui fait tout autre chose, par un ajout de la ligne:
Dans ce même fichier "'''/etc/systemd/system.conf'''", il peut être utile de ne pas pouvoir redémarrer la machine par la séquence de touches <nowiki><ALT><CTRL><DEL></nowiki> bien connue sous Windows mais qui fait tout autre chose, par l'ajout de la ligne:
----
----
  CtrlAltDelBurstAction=none
  CtrlAltDelBurstAction=none
----
----
L'utilisation de ces touches sur un serveur peut être perturbant.
L'utilisation de ces touches sur un serveur peut être perturbant si pas non approprié; vous n'êtes sûrement le seul à l'utiliser.




=[[LINUX:Fichier contenant le numéro de processus|Fichier contenant le numéro de processus]]=
A chaque programme lancé est attribué un numéro unique (PID). S'il est lancé deux fois, il en aura deux différents. Il est courant de retrouver ce numéro dans un fichier pour les services.




=[[LINUX:Systemd-Attente avant le lancement du service|Attente avant le lancement du service]]=
Dans certains cas, il est utile d'attendre un certain temps avant que le service ne se lance.
=[[LINUX:Systemd-Paramétrage personnalisé|Paramétrage personnalisé]]=
Chaque service géré par Systemd nécessite un paramétrage spécifique fourni par la distribution. Dans certains cas, on est amené à en modifier ou ajouter certains.
=[[LINUX:Systemd-Dracut et Kernel|Dracut et Kernel]]=
Certains services sont lancés d'office lors du démarrage.
----
''&rarr; [[LINUX:Menu|retour au menu de Linux]]''
----
----
''->[[LINUX:Menu|retour au menu de Linux]]''
__NOEDITSECTION__
__NOEDITSECTION__
[[Category:LINUX]]
[[Category:LINUX]]

Dernière version du 15 juin 2023 à 12:24


retour au menu de Linux


But

"Systemd" est le gestionnaire actuel des services sous Fedora.


Localisation

Toutes les configurations des services installés se trouvent dans le répertoire "/usr/lib/systemd". La majorité des services qui nous concernent se retrouvent dans le sous-répertoire "system".

Si on désire créer son propre service, il suffit de le placer dans le répertoire "/usr/lib/systemd/system" ou "/etc/systemd/system". Pour que ce nouveau service soit directement pris en charge, il faut recharger la configuration par la commande:

systemctl daemon-reload

Cette contrainte s'applique également dans le cas d'une modification d'un fichier de configuration d'un service existant. Il faut remarquer que dans le cas d'une modification d'un de ces fichiers, ces changements risquent d'être écrasés lors d'une mise à jour. D'autres solutions existent, décrites plus bas.


Activation/Désactivation

Pour activer un service, on utilise la commande:

systemctl enable <NOM DU SERVICE>

Cette commande crée un lien symbolique à partir du fichier d'origine et le place dans un des sous-répertoires du répertoire "/etc/systemd/system" souvent "multi-user.target.wants". Elle peut créer plusieurs liens si nécessaire.

Dès lors il se lancera au démarrage de la machine.

Pour désactiver un service, la commande suivante élimine ce lien:

systemctl disable <NOM DU SERVICE>

Attention: certains services ont plusieurs liens; la commande ci-dessus les éliminera tous.


Lancement/Arrêt

Quelques commandes pour gérer le service:

  • Pour lancer le service:
systemctl start <NOM DU SERVICE>
  • Pour relancer le service:
systemctl restart <NOM DU SERVICE>
  • Pour arrêter le service:
systemctl stop <NOM DU SERVICE>


Statut

Pour voir l'état du service:

systemctl status <NOM DU SERVICE>

Elle permet de constater certains problèmes.

Si le problème est plus grave, utilisez la commande suivante qui vous donnera plus de détails; souvent la ligne du fichier de configuration concernée par le blocage sera signalée.

journalctl -xeu <NOM DU SERVICE>


Timeout

Il peut arriver qu'au démarrage de la machine certains services ne puissent pas démarrer dans les temps.

Vous constaterez dans le fichier "/var/log/messages" un message du genre suivant:

Feb  7 22:57:57 serveurXXX systemd[1]: XXXXXX.service: Failed with result  'timeout' .

Ceci m'est arrivé deux fois sur une vieille machine devant lancer de très nombreux services. Certains très gourmands et longs à lancer n'ont pas pu démarrer dans les temps.

On peut y remédier en ajoutant une ligne dans la configuration générale du système de "systemd". On allonge ce temps limite de démarrage des services. Pour cela, on ajoute ou on adapte la ligne suivante dans le fichier "/etc/systemd/system.conf":


DefaultTimeoutStartSec=3min

Dans cet exemple, on le met à 3 minutes (défaut: 90 sec.). A ajuster selon les cas.

Une commande analogue existe, à mettre dans le fichier de configuration du service concerné mais alors il faut surveiller les modifications éventuelles apportées lors des mises à jour.


<ALT><CTRL><DEL>

Dans ce même fichier "/etc/systemd/system.conf", il peut être utile de ne pas pouvoir redémarrer la machine par la séquence de touches <ALT><CTRL><DEL> bien connue sous Windows mais qui fait tout autre chose, par l'ajout de la ligne:


CtrlAltDelBurstAction=none

L'utilisation de ces touches sur un serveur peut être perturbant si pas non approprié; vous n'êtes sûrement le seul à l'utiliser.


Fichier contenant le numéro de processus

A chaque programme lancé est attribué un numéro unique (PID). S'il est lancé deux fois, il en aura deux différents. Il est courant de retrouver ce numéro dans un fichier pour les services.


Attente avant le lancement du service

Dans certains cas, il est utile d'attendre un certain temps avant que le service ne se lance.


Paramétrage personnalisé

Chaque service géré par Systemd nécessite un paramétrage spécifique fourni par la distribution. Dans certains cas, on est amené à en modifier ou ajouter certains.


Dracut et Kernel

Certains services sont lancés d'office lors du démarrage.




retour au menu de Linux