RC : Le système de démarrage et d'arrêt de services Linux

Découvrez le mécanisme qui permet aux systèmes Linux de démarrer et d'arrêter les services système avec précision et efficacité.

 · 5 min read


  1. Introduction

  2. RC, ou Run Commands, est un système de démarrage et d'arrêt de services système qui est utilisés pour initialiser la configuration du système au démarrage et pour contrôler les services. Il permet de gérer les services système et les applications qui s'exécutent en arrière-plan, tels que les serveurs web, les bases de données, les services de réseaux, etc.

  3. Fonctionnement de RC

  4. RC fonctionne en utilisant des scripts de démarrage et d'arrêt qui sont stockés dans des répertoires spécifiques. Les scripts de démarrage sont exécutés lors du démarrage du système, tandis que les scripts d'arrêt sont exécutés lors de l'arrêt du système.

    Les répertoires rc?.d contiennent les liens symboliques vers les scripts de démarrage et d'arrêt. Mais il y a également un autre répertoire important : init.d.

    Le répertoire init.d contient les scripts de démarrage et d'arrêt eux-mêmes, qui sont exécutés par les liens symboliques dans les répertoires rc?.d. Les scripts dans init.d sont généralement des fichiers exécutables qui contiennent des commandes pour lancer ou arrêter des services système ou des applications.

    Il existe sept répertoires rc.d, chacun correspondant à un niveau de démarrage spécifique :

    • rc0.d : arrêt du système
    • rc1.d : mode mono-utilisateur
    • rc2.d : mode multi-utilisateur
    • rc3.d : mode multi-utilisateur avec réseau
    • rc4.d : mode multi-utilisateur avec réseau et X Window
    • rc5.d : mode graphique
    • rc6.d : redémarrage du système
    • rcS.d : Scripts de démarrage système avant les niveaux d'exécution (runlevels)





  5. Update-rc.d : un outil pour gérer les services système

  6. update-rc.d est un outil qui permet de gérer les services système en modifiant les liens symboliques dans les répertoires rc.d.

    Voici quelques exemples d'utilisation de update-rc.d :

    • update-rc.d nom_service defaults : Cette commande ajoute le service "nom_service" aux répertoires rc.d avec les liens symboliques appropriés pour qu'il démarre automatiquement lors du passage aux niveaux d'exécution appropriés.

      Exemple: sudo update-rc.d apache2 defaults



      Cela créera les liens symboliques nécessaires dans les répertoires rc.d pour que "nginx" démarre automatiquement lors du passage aux niveaux d'exécution appropriés.

    • update-rc.d nom_service remove : supprime le service nom_service des répertoires rc.d

      Exemple: sudo update-rc.d nginx remove
      Cela supprimera les liens symboliques associés au service "nginx" dans les répertoires rc.d et empêchera son démarrage automatique lors du démarrage du système. Cependant, cela n'empêche pas le service d'être démarré manuellement si vous le souhaitez.

    • update-rc.d nom_service enable : active le service nom_service dans les répertoires rc.d

      Exemple: sudo update-rc.d nginx enable
      Cela recréera les liens symboliques nécessaires dans les répertoires rc.d pour que "nginx" démarre automatiquement lors du passage aux niveaux d'exécution. Cela peut être utile pour éviter que le service ne soit accidentellement démarré lors d'une future utilisation du système.

    • update-rc.d nom_service disable : désactive le service nom_service dans les répertoires rc.d

      Exemple: sudo update-rc.d nginx disable


  7. comparaison des sytémes RC et Systemd

    • Approche de gestion des services :
      • RC (Run Commands) : Utilise des scripts de démarrage et d'arrêt situés dans les répertoires rc0.d, rc1.d, rc2.d, etc. Les scripts sont exécutés séquentiellement dans un ordre prédéfini.
        Supposons que vous ayez un script de démarrage pour un service appelé "my_service". Dans RC, vous pouvez placer ce script dans le répertoire rc5.d/ et il sera exécuté lorsque le système passe au niveau d'exécution (runlevel) 5 et dans l'ordre(généralement alphabétique)



      • systemd : les services sont configurés à l'aide de fichiers de configuration appelés "unit files". Ces unit files sont généralement stockés dans le répertoire /etc/systemd/system/ ou /usr/lib/systemd/system/. Chaque unit file contient des informations sur le service, telles que la commande de démarrage, les dépendances, les privilèges...
        Supposons que vous ayez une unité de service appelée "my_service.service". Vous pouvez placer cette unité dans /etc/systemd/system/ et utiliser la commande systemctl start my_service pour démarrer le service et systemctl stop my_service pour l'arrêter.



    • Gestion des dépendances :

      • RC (Run Commands) : La gestion des dépendances est moins avancée. Les scripts sont organisés dans des répertoires tels que rc0.d, rc1.d, rc2.d, etc., et sont exécutés en fonction du niveau d'exécution (runlevel) actuel du système et de l'ordre alphabétique des noms des scripts.
        Supposons que votre service "service1" dépende du service "service2". Dans RC, vous pouvez nommer le script du service "service1" avec un numéro supérieur(exemple: 15service1) à celui du script du service "service2"(exemple 0service2) dans le répertoire correspondant, de sorte que "service2" soit démarré avant "my_service".

      • systemd : Les dépendances entre les services sont explicitement déclarées dans les unités de service, permettant à systemd de démarrer les services dans l'ordre approprié.
        Supposons que votre unité de service "my_service.service" dépende de l'unité de service "dependency_service.service". Vous pouvez spécifier cette dépendance dans la section [Unit] de l'unité de service "my_service.service" en utilisant la directive Requires=dependency_service.service.

        exemple
        pour faire en sorte que le service apache2 ne demarre que apres le service network-manager, il suffit d'ajouter la ligne :Requires=network-manager.service



    • Démarrage parallèle :

      • RC (Run Commands) : Ne prend pas en charge le démarrage parallèle des services.Les services sont démarrés séquentiellement, un par un, dans l'ordre spécifié par les scripts.

      • systemd : Peut démarrer les services de manière parallèle, accélérant ainsi le processus de démarrage global du système.

    • Journalisation :

      • RC (Run Commands) : Ne fournit pas de journalisation centralisée intégrée.Les sorties des scripts de démarrage et d'arrêt sont généralement redirigées vers des fichiers de journal spécifiques(généralement dans /var/log/nomdu_service.log)

        voici par exemple le contenu du dossier /var/log/qui contient une liste de dichier de log de differnts services




      • systemd : Offre une journalisation centralisée et avancée des services, facilitant le dépannage et la recherche de problèmes.Vous pouvez utiliser la commande journalctl pour afficher les journaux des services, filtrer les messages, etc.

        commande: journalct



    • Fonctionnalités avancées :

      • RC (Run Commands) : Ne propose pas de fonctionnalités avancées telle que le redémarrage automatique en cas d'échec.

      • systemd : systemd propose des fonctionnalités avancées telles que la supervision des services avec la commande systemctl status, le redémarrage automatique en cas d'échec avec la directive Restart, la gestion fine des ressources avec les cgroup, etc.


  8. Conclusion

  9. L'initialisation RC (Run Command) offre la simplicité et la stabilité grâce à l'utilisation de scripts shell pour démarrer et arrêter les services. Elle est privilégiée dans les systèmes plus légers ou embarqués en raison de sa légèreté et de son efficacité. Cependant, systemd a gagné en popularité en offrant des fonctionnalités avancées et une meilleure gestion des services, ce qui explique son adoption croissante dans de nombreuses distributions Linux.



  10. Voir aussi:

  11. Comment créer un Flyer avec KRITA
    Créez et configurez une machine virtuelle sur VirtualBox
    BONNES PRATIQUES JAVA


TENE YONDZO Willy Gires

Etudiant en Master 1 option réseau et système

No comments yet

No comments yet. Start a new discussion.

Add Comment