GNU/Linux >> Tutoriels Linux >  >> Linux

Dépendances systemd et ordre de démarrage

Solution 1 :

Utilisez systemctl edit smb.service pour mettre à jour les dépendances.

After=dirsrv.target - S'assurera que le smb.service est démarré après dirsrv.target.

Pour plus de robustesse (ce qui en vaudra la peine si vous bricolez avec ce genre de choses), vous pouvez également inclure certains des éléments suivants :

Requires=dirsrv.target - Activez dirsrv.target lorsque smb.service est activé. Provoquera l'échec de smb.service si dirsrv.target échoue.

Wants=dirsrv.target - Activez dirsrv.target lorsque smb.service est activé. N'entraînera pas l'échec de smb.service si dirsrv.target échoue.

BindsTo=dirsrv.target - Si dirsrv.target est désactivé, désactivez smb.service.

Source :http://www.freedesktop.org/software/systemd/man/systemd.unit.html

systemd-ui fournit une interface graphique pour systemd. Donne une bonne vue de l'état de systemd mais vous devrez toujours utiliser un éditeur de texte pour modifier les fichiers d'unité.

Solution 2 :

Faites deux choses :

  1. Modifiez le /lib/systemd/system/smb.service fichier unit, pour spécifier la dépendance. Le [unit] section contient un After= ligne qui spécifie quels services/cibles doivent être atteints avant celui-ci.

    After=syslog.target network.target nmb.service winbind.service
    

    Changez-le en :

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
  2. Signalez cette dépendance à Fedora en tant que bogue, afin qu'elle puisse être intégrée dans les futures versions.

Solution 3 :

vous devrez peut-être modifier ou inclure une ligne avec le Requires directive dans le [Unit] partie du /usr/lib/systemd/system/smb.service fichier.

Requires=dirsrv.target

et

After=dirsrv.target

Solution 4 :

Il existe deux alternatives à la modification du fichier de service en /usr/lib/systemd/system (voir Exemple 2. Modification des paramètres du fournisseur) :

  1. Copiez le fichier dans /etc/systemd/system et effectuez les modifications sur la copie. Ce fichier remplacera complètement le fichier en /usr/lib .

  2. Créer le fichier /etc/systemd/system/smb.service.d/local.conf . Le contenu du fichier devrait ressembler à l'exemple ci-dessous. Cela remplace de manière sélective les options "Requiert" et "Après" dans le fichier de service fourni par le fournisseur.

Chacun d'entre eux (y compris la modification du fichier dans /usr/lib ) présente des avantages et des inconvénients. Le meilleur choix peut dépendre du service et de la nature des modifications.

Bien que cela puisse fonctionner, il ne suffit pas d'ajouter uniquement l'option "Après" (voir Options de la section [Unité]). "Après" contrôle l'ordre, mais pas les dépendances. Si dirsrv.target n'est pas démarré d'une autre manière, spécifier une commande ne la démarrera pas. L'utilisation de l'option "Requires" ou "Wants" forcera dirsrv.target à démarrer.

[Unit]
Requires=dirsrv.target
After=dirsrv.target

NB :Je ne sais pas si cette approche était disponible lorsque cette question a été posée à l'origine.


Linux
  1. Démarrage non graphique avec Systemd ?

  2. Comment déboguer le processus de démarrage systemd dans CentOS/RHEL 7 et 8

  3. Comment déboguer le processus de démarrage systemd dans CentOS/RHEL 7 et 8

  4. Systemd :Utiliser à la fois After et Requires

  5. Comment exécuter un script avec systemd juste avant l'arrêt ?

Commandes Systemctl pour gérer le service Systemd

Installer et exécuter Jenkins avec Systemd et Docker

Comment j'ai appris à arrêter de m'inquiéter et à aimer systemd

Gestion des cgroups avec systemd

Comment compter le nombre de fichiers et de sous-répertoires dans un répertoire

Rendre le service utilisateur systemd dépendant de la cible système