• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • Le gestionnaire de système et de service par défaut pour la plupart des distributions Linux est désormais systemd.

    La systemd processus remplace le SysV init. Il s'exécute comme le premier processus après le démarrage du noyau et est chargé de mettre l'hôte Linux dans l'état où il peut être utilisé. Il est responsable du démarrage et de la gestion des services, du montage des systèmes de fichiers, de la gestion du matériel, de la génération de l'invite de connexion, et bien plus encore.

    Un avantage clé par rapport à SysV est que systemd démarre autant de services que possible en parallèle, accélérant ainsi le processus de démarrage, et cela fait apparaître l'écran de connexion plus rapidement.

    Unités

    Les éléments gérés par systemd sont appelés unités. Les fichiers d'unité se trouvent dans /lib/systemd/système.

    Unités de service

    Pour la gestion des services, les unités cibles sont des unités de service, qui ont des fichiers d'unité avec un suffixe de .un service.

    Gestion des services systemd

    La commande de gestion des unités systemd est systemctl.

    Démarrage et arrêt des services

    Pour démarrer un service systemd, utilisez la commande systemctl start:

    $ sudo systemctl start name.service

    Vous pouvez laisser le suffixe .service. Par exemple, pour démarrer le serveur Apache sur Ubuntu:

    $ sudo systemctl start apache2

    Pour arrêter un service en cours d'exécution:

    $ sudo systemctl stop name.service

    Donc, pour arrêter le serveur Apache sur Ubuntu:

    $ sudo systemctl stop apache2

    Redémarrage et rechargement des services

    Pour redémarrer un service en cours d'exécution, utilisez la commande restart:

    $ sudo systemctl restart name.service

    Et où le seul fichier de configuration de rechargement est requis

    $ sudo systemctl reload name.service

    Activation et désactivation des services

    Si vous souhaitez qu'un service démarre automatiquement au démarrage du système, utilisez la commande enable:

    $ sudo systemctl enable name.service

    Pour désactiver le démarrage d'un service au démarrage du système:

    $ sudo systemctl disable name.service

    La désactivation n'arrête pas un service en cours d'exécution.

    Affichage de l'état du service

    Pour afficher des informations sur un service:

    $ sudo systemctl status name.service

    Cela vous montrera l'état du service et les premières lignes du fichier journal. Ainsi, pendant que le service est en cours d'exécution, la sortie de

    sudo systemctl status apache2

    is

    apache2.service - The Apache HTTP Server
       Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
      Drop-In: /lib/systemd/system/apache2.service.d
               └─apache2-systemd.conf
       Active: active (running) since Tue 2020-05-19 22:11:36 UTC; 4 days ago
      Process: 116002 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
    Main PID: 104165 (apache2)
        Tasks: 55 (limit: 1024)
       CGroup: /system.slice/apache2.service
               ├─104165 /usr/sbin/apache2 -k start
               ├─116006 /usr/sbin/apache2 -k start
               └─116007 /usr/sbin/apache2 -k start
    
    May 19 22:11:36 ubuntu18 systemd[1]: Starting The Apache HTTP Server...
    May 19 22:11:36 ubuntu18 systemd[1]: Started The Apache HTTP Server.
    May 21 06:25:01 ubuntu18 systemd[1]: Reloading The Apache HTTP Server.
    May 21 06:25:01 ubuntu18 systemd[1]: Reloaded The Apache HTTP Server.
    May 22 06:25:01 ubuntu18 systemd[1]: Reloading The Apache HTTP Server.

    Pour vérifier si un service est actif:

    $ sudo systemctl is-active name.service

    Ainsi, pendant que le service apache2 est en cours d'exécution, la sortie de la commande systemctl is-active est:

    $ sudo systemctl is-active apache2
    active

    Pour vérifier si un service est activé:

    $ sudo systemctl is-enabled name.service.

    Affichage de l'état du système

    Toutes les commandes que vous avez vues jusqu'à présent sont utilisées pour gérer un seul service. Lorsque vous souhaitez une vue d'ensemble de l'état du système, utilisez l'ensemble de commandes suivant:

    Pour voir tous les types d'unités

    $ sudo systemctl -t help
    Available unit types:
    service
    socket
    target
    device
    mount
    automount
    swap
    timer
    path
    slice
    scope

    Pour lister toutes les unités installées, utilisez list-unit-files

    $ sudo systemctl list-unit-files
    UNIT FILE                              STATE          
    proc-sys-fs-binfmt_misc.automount      static         
    -.mount                                generated      
    boot-efi.mount                         generated      
    dev-hugepages.mount                    static         
    dev-mqueue.mount                       static         
    mnt.mount                              generated      
    proc-sys-fs-binfmt_misc.mount          static         
    sys-fs-fuse-connections.mount          static         
    sys-kernel-config.mount                static         
    sys-kernel-debug.mount                 static         
    acpid.path                             enabled        
    apport-autoreport.path                 enabled        
    systemd-ask-password-console.path      static         
    systemd-ask-password-plymouth.path     static         
    systemd-ask-password-wall.path         static         
    session-161.scope                      transient      
    accounts-daemon.service                enabled        
    

    La sortie n'a que deux colonnes Fichier d'unité et État. L'état sera généralement activé, désactivé, statique ou masqué.

    • Statique: Cela signifie que l'unité ne peut pas être activée, effectue une action ponctuelle ou est une dépendance d'une autre unité et ne peut pas être exécutée par elle-même.
    • Masqué: Une unité répertoriée comme masquée signifie qu'elle ne peut pas être démarrée, car elle est liée à / dev / null. C'est ce qu'on appelle le masquage de l'unité. Cela empêche le service de démarrer, manuellement ou automatiquement.

    Lister tous les services installés

    La commande systemctl list-unit-files avec -t ou –type filtre de service affiche uniquement l'état des services installés.

    $ sudo systemctl list-unit-files -t service
    
    UNIT FILE                              STATE    
    accounts-daemon.service                enabled  
    acpid.service                          disabled 
    apache-htcacheclean.service            disabled 
    [email protected]           disabled 
    apache2.service                        enabled  
    [email protected]                       disabled 
    apparmor.service                       enabled  
    apport-autoreport.service              static   
    [email protected]                static   
    apport.service                         generated
    apt-daily-upgrade.service              static   
    apt-daily.service                      static   
    atd.service                            enabled  
    [email protected]                        enabled  
    blk-availability.service               enabled  
    bootlogd.service                       masked   
    bootlogs.service                       masked   
    

    Pour voir toutes les unités de service actives, utilisez list-units avec -t service filter

    $ sudo systemctl list-units -t service
    
    UNIT                                 LOAD   ACTIVE SUB     DESCRIPTION                             
      accounts-daemon.service              loaded active running Accounts Service                        
      apache2.service                      loaded active running The Apache HTTP Server                  
      apparmor.service                     loaded active exited  AppArmor initialization                 
      apport.service                       loaded active exited  LSB: automatic crash report generation  
      atd.service                          loaded active running Deferred execution scheduler            
      blk-availability.service             loaded active exited  Availability of block devices           
      cloud-config.service                 loaded active exited  Apply the settings specified in cloud-con
      cloud-final.service                  loaded active exited  Execute cloud user/final scripts        
      cloud-init-local.service             loaded active exited  Initial cloud-init job (pre-networking) 
      cloud-init.service                   loaded active exited  Initial cloud-init job (metadata service 
      console-setup.service                loaded active exited  Set console font and keymap             
      cron.service                         loaded active running Regular background program processing dae
    

    La sortie a les colonnes suivantes:

    • UNITÉ: Le nom de l'unité de service systemd
    • CHARGE: Indique si la définition de l'unité a été correctement lue et chargée
    • ACTIVE: Décrit si l'unité est active.
    • SUB: État d'activation de bas niveau de l'unité, donnant des informations plus détaillées sur l'unité. Cela variera selon le type d'unité.
    • DESCRIPTION: La description de l'unité de service.

    Conclusion

    J'espère que cela vous donne une idée de l'utilisation de systemctl pour gérer les services sous Linux. Si vous souhaitez en savoir plus, vous pouvez consulter ceci Cours de maîtrise Linux.