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
elearning:workbooks:redhat:rh124:l111 [2024/09/26 11:49] – removed adminelearning:workbooks:redhat:rh124:l111 [2024/09/26 13:19] (Version actuelle) admin
Ligne 1: Ligne 1:
 +~~PDF:LANDSCAPE~~
  
 +Version : **2024.01**
 +
 +Dernière mise-à-jour : ~~LASTMOD~~
 +
 +======RH12412 - Gestion des Services et des Démons======
 +
 +=====Contenu du Module=====
 +
 +  * **RH12412 - Gestion des Services et des Démons**
 +    * Contenu du Module
 +    * Systemd
 +      * LAB #1 - La Commande systemctl
 +      * LAB #2 - Fichiers de Configuration
 +        * 2.1 - Fichiers de Configuration par Défaut
 +        * 2.2 - Surchargement des Fichiers de Configuration par Défaut
 +      * LAB #3 - La Commande systemd-analyze
 +      * LAB #4 - Les Cibles Systemd
 +        * 4.1 - Contrôler les dépendances d'une Cible
 +        * 4.2 - La Cible par Défaut
 +      * LAB #5 - Gestion des Services
 +        * 5.1 - Gestion des Instances Uniques
 +        * 5.2 - Gestion d'Instances Multiples
 +        * 5.3 - Interdire la Modification du Statut d'un Service
 +
 +=====Systemd=====
 +
 +Les systèmes de démarrage antérieurs à Systemd, **SysVinit** et **Upstart**, étaient des systèmes de démarrage **séquentiels**. 
 +
 +**Systemd** essaie, par contre, de démarrer autant de services en parallèle que possible. Ceci est rendu possible car la majorité d'architectures matérielles modernes sont multi-cœurs. Si un service dépend d'un autre qui n'est pas encore démarré ce premier est mis en attente dans une mémoire tampon. Qui plus est, les services qui ne sont pas nécessaires au démarrage de la machine, tel cups, ne sont démarrés ultérieurement que si nécessaire. Lors de démarrage, les partitions sont montées en parallèle. Dernièrement, **Systemd** remplace les scripts de démarrage traditionnels avec des binaires compilés, beaucoup plus rapides que leur prédécesseurs.
 +
 +Au lieu de parler de scripts de démarrage et de niveaux d'exécution, **Systemd** utilise la terminologie **Unités** (//Units//) et **Cibles** (//Targets//). Une Unité peut être :
 +
 +  * **.automount** - active la fonctionalité d'automount.
 +  * **.device** - expose une périphérique dans systemd.
 +  * **.mount** - contrôle quand et comment les systèmes de fichiers sont montés.
 +  * **.path** - active un service quand il y a un accès à un fichier ou répertoire sous surveillance par le système.
 +  * **.service** - démarre, arrête, redémarre ou recharge un service.
 +  * **.scope** - gère des services.
 +  * **.slice** - regroupe des Unités dans une arborescence afin de limiter des ressources en utilisant des CGroups.
 +  * **.snapshot** - un état sauvegardé du gestionnaire Systemd.
 +  * **.socket** - permet aux Unités d'utiliser des sockets pour la communication inter-processus.
 +  * **.swap** - encapsule une périphérique ou un fichier swap.
 +  * **.timer** - déclenche l'activation d'autres Unités en utilisant des minuteurs de Systemd.
 +  * **.target** - regroupe des Unités multiples afin qu'elles puissent être démarrées en même temps. Par exemple **network.target** regroupe toutes les Unités nécessaires pour démarrer toutes les interfaces réseaux en même temps.
 +
 +Une Cible est en quelque sorte une **grande étape** dans le démarrage du système :
 +
 +  * **halt.target** - arrête le système.
 +  * **poweroff.target** - arrête le système et coupe le courant.
 +  * **shutdown.target** - arrête le système.
 +  * **rescue.target** - démarre le système en mode single-user (seul root peut s'y connecter). Tous les systèmes de fichiers sont montés mais le réseau n'est pas démarré.
 +  * **emergency.target** - démarre le système en mode single-user (seul root peut s'y connecter). Uniquement le système de fichiers racine est monté en mode lecture seule. Le réseau n'est pas démarré.
 +  * **multi-user.target** - démarre le système en mode multi-utilisateur avec tous les systèmes de fichiers montés et le service network démarré.
 +  * **graphical.target** - démarre le système en multi-user.target puis démarre l'interface graphique.
 +  * **hibernate.target** - sauvegarde l'état courant sur disque et arrête le système. Quand le système est démarré, l'état est restauré.
 +  * **reboot.target** - redémarre le système.
 +
 +**Systemd** utilise des Cibles d'une manière similaire à ce que **SysVinit** utilise des niveaux d'exécution. Pour rendre la transition plus facile, il existe des **Cibles** qui "simulent" les niveaux d'exécution de **SysVinit** :
 +
 +<code>
 +[root@redhat9 ~]# ls -l /usr/lib/systemd/system/runlevel*
 +lrwxrwxrwx. 1 root root 15 Jul 18 13:00 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
 +lrwxrwxrwx. 1 root root 13 Jul 18 13:00 /usr/lib/systemd/system/runlevel1.target -> rescue.target
 +lrwxrwxrwx. 1 root root 17 Jul 18 13:00 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
 +lrwxrwxrwx. 1 root root 17 Jul 18 13:00 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
 +lrwxrwxrwx. 1 root root 17 Jul 18 13:00 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
 +lrwxrwxrwx. 1 root root 16 Jul 18 13:00 /usr/lib/systemd/system/runlevel5.target -> graphical.target
 +lrwxrwxrwx. 1 root root 13 Jul 18 13:00 /usr/lib/systemd/system/runlevel6.target -> reboot.target
 +
 +/usr/lib/systemd/system/runlevel1.target.wants:
 +total 0
 +
 +/usr/lib/systemd/system/runlevel2.target.wants:
 +total 0
 +
 +/usr/lib/systemd/system/runlevel3.target.wants:
 +total 0
 +
 +/usr/lib/systemd/system/runlevel4.target.wants:
 +total 0
 +
 +/usr/lib/systemd/system/runlevel5.target.wants:
 +total 0
 +</code>
 +
 +====LAB #1 - La Commande systemctl====
 +
 +Pour visualiser la liste des Unités, il convient d'utiliser la commande **systemctl** avec l'option **list-units** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl list-units
 +  UNIT                                                                                                     LOAD   ACTIVE SUB       DESCRIPTION                                >
 +  proc-sys-fs-binfmt_misc.automount                                                                        loaded active running   Arbitrary Executable File Formats File Syst>
 +  sys-devices-pci0000:00-0000:00:01.1-ata2-host2-target2:0:0-2:0:0:0-block-sr0.device                      loaded active plugged   QEMU_DVD-ROM
 +  sys-devices-pci0000:00-0000:00:05.0-0000:01:01.0-virtio2-host0-target0:0:0-0:0:0:0-block-sda-sda1.device loaded active plugged   QEMU_HARDDISK 1
 +  sys-devices-pci0000:00-0000:00:05.0-0000:01:01.0-virtio2-host0-target0:0:0-0:0:0:0-block-sda-sda2.device loaded active plugged   QEMU_HARDDISK 2
 +  sys-devices-pci0000:00-0000:00:05.0-0000:01:01.0-virtio2-host0-target0:0:0-0:0:0:0-block-sda.device      loaded active plugged   QEMU_HARDDISK
 +  sys-devices-pci0000:00-0000:00:12.0-virtio1-net-ens18.device                                             loaded active plugged   Virtio network device
 +  sys-devices-platform-serial8250-tty-ttyS0.device                                                         loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS0
 +  sys-devices-platform-serial8250-tty-ttyS1.device                                                         loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS1
 +  sys-devices-platform-serial8250-tty-ttyS2.device                                                         loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS2
 +  sys-devices-platform-serial8250-tty-ttyS3.device                                                         loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS3
 +  sys-devices-virtual-block-dm\x2d0.device                                                                 loaded active plugged   /sys/devices/virtual/block/dm-0
 +  sys-devices-virtual-block-dm\x2d1.device                                                                 loaded active plugged   /sys/devices/virtual/block/dm-1
 +  sys-devices-virtual-misc-rfkill.device                                                                   loaded active plugged   /sys/devices/virtual/misc/rfkill
 +  sys-module-configfs.device                                                                               loaded active plugged   /sys/module/configfs
 +  sys-module-fuse.device                                                                                   loaded active plugged   /sys/module/fuse
 +  sys-subsystem-net-devices-ens18.device                                                                   loaded active plugged   Virtio network device                      >
 +  -.mount                                                                                                  loaded active mounted   Root Mount
 +  boot.mount                                                                                               loaded active mounted   /boot
 +  dev-hugepages.mount                                                                                      loaded active mounted   Huge Pages File System
 +  dev-mqueue.mount                                                                                         loaded active mounted   POSIX Message Queue File System
 +  proc-sys-fs-binfmt_misc.mount                                                                            loaded active mounted   Arbitrary Executable File Formats File Syst>
 +  run-credentials-systemd\x2dsysctl.service.mount                                                          loaded active mounted   /run/credentials/systemd-sysctl.service
 +  run-credentials-systemd\x2dtmpfiles\x2dsetup.service.mount                                               loaded active mounted   /run/credentials/systemd-tmpfiles-setup.ser>
 +  run-credentials-systemd\x2dtmpfiles\x2dsetup\x2ddev.service.mount                                        loaded active mounted   /run/credentials/systemd-tmpfiles-setup-dev>
 +  run-user-1000.mount                                                                                      loaded active mounted   /run/user/1000
 +  run-user-42.mount                                                                                        loaded active mounted   /run/user/42
 +  sys-fs-fuse-connections.mount                                                                            loaded active mounted   FUSE Control File System
 +  sys-kernel-config.mount                                                                                  loaded active mounted   Kernel Configuration File System
 +  sys-kernel-debug-tracing.mount                                                                           loaded active mounted   /sys/kernel/debug/tracing
 +  sys-kernel-debug.mount                                                                                   loaded active mounted   Kernel Debug File System
 +  sys-kernel-tracing.mount                                                                                 loaded active mounted   Kernel Trace File System                   >
 +  cups.path                                                                                                loaded active running   CUPS Scheduler
 +  systemd-ask-password-plymouth.path                                                                       loaded active waiting   Forward Password Requests to Plymouth Direc>
 +  systemd-ask-password-wall.path                                                                           loaded active waiting   Forward Password Requests to Wall Directory>
 +  init.scope                                                                                               loaded active running   System and Service Manager
 +  session-4.scope                                                                                          loaded active running   Session 4 of User trainee
 +lines 1-37...skipping...
 +  UNIT                                                                                                     LOAD   ACTIVE SUB       DESCRIPTION                                                                  
 +  proc-sys-fs-binfmt_misc.automount                                                                        loaded active running   Arbitrary Executable File Formats File System Automount Point                
 +  sys-devices-pci0000:00-0000:00:01.1-ata2-host2-target2:0:0-2:0:0:0-block-sr0.device                      loaded active plugged   QEMU_DVD-ROM
 +  sys-devices-pci0000:00-0000:00:05.0-0000:01:01.0-virtio2-host0-target0:0:0-0:0:0:0-block-sda-sda1.device loaded active plugged   QEMU_HARDDISK 1
 +  sys-devices-pci0000:00-0000:00:05.0-0000:01:01.0-virtio2-host0-target0:0:0-0:0:0:0-block-sda-sda2.device loaded active plugged   QEMU_HARDDISK 2
 +  sys-devices-pci0000:00-0000:00:05.0-0000:01:01.0-virtio2-host0-target0:0:0-0:0:0:0-block-sda.device      loaded active plugged   QEMU_HARDDISK
 +  sys-devices-pci0000:00-0000:00:12.0-virtio1-net-ens18.device                                             loaded active plugged   Virtio network device
 +  sys-devices-platform-serial8250-tty-ttyS0.device                                                         loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS0
 +  sys-devices-platform-serial8250-tty-ttyS1.device                                                         loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS1
 +  sys-devices-platform-serial8250-tty-ttyS2.device                                                         loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS2
 +  sys-devices-platform-serial8250-tty-ttyS3.device                                                         loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS3
 +  sys-devices-virtual-block-dm\x2d0.device                                                                 loaded active plugged   /sys/devices/virtual/block/dm-0
 +  sys-devices-virtual-block-dm\x2d1.device                                                                 loaded active plugged   /sys/devices/virtual/block/dm-1
 +  sys-devices-virtual-misc-rfkill.device                                                                   loaded active plugged   /sys/devices/virtual/misc/rfkill
 +  sys-module-configfs.device                                                                               loaded active plugged   /sys/module/configfs
 +  sys-module-fuse.device                                                                                   loaded active plugged   /sys/module/fuse
 +  sys-subsystem-net-devices-ens18.device                                                                   loaded active plugged   Virtio network device                                                        
 +  -.mount                                                                                                  loaded active mounted   Root Mount
 +  boot.mount                                                                                               loaded active mounted   /boot
 +  dev-hugepages.mount                                                                                      loaded active mounted   Huge Pages File System
 +  dev-mqueue.mount                                                                                         loaded active mounted   POSIX Message Queue File System
 +  proc-sys-fs-binfmt_misc.mount                                                                            loaded active mounted   Arbitrary Executable File Formats File System
 +  run-credentials-systemd\x2dsysctl.service.mount                                                          loaded active mounted   /run/credentials/systemd-sysctl.service
 +  run-credentials-systemd\x2dtmpfiles\x2dsetup.service.mount                                               loaded active mounted   /run/credentials/systemd-tmpfiles-setup.service
 +  run-credentials-systemd\x2dtmpfiles\x2dsetup\x2ddev.service.mount                                        loaded active mounted   /run/credentials/systemd-tmpfiles-setup-dev.service
 +  run-user-1000.mount                                                                                      loaded active mounted   /run/user/1000
 +  run-user-42.mount                                                                                        loaded active mounted   /run/user/42
 +  sys-fs-fuse-connections.mount                                                                            loaded active mounted   FUSE Control File System
 +  sys-kernel-config.mount                                                                                  loaded active mounted   Kernel Configuration File System
 +  sys-kernel-debug-tracing.mount                                                                           loaded active mounted   /sys/kernel/debug/tracing
 +  sys-kernel-debug.mount                                                                                   loaded active mounted   Kernel Debug File System
 +  sys-kernel-tracing.mount                                                                                 loaded active mounted   Kernel Trace File System                                                     
 +  cups.path                                                                                                loaded active running   CUPS Scheduler
 +  systemd-ask-password-plymouth.path                                                                       loaded active waiting   Forward Password Requests to Plymouth Directory Watch
 +  systemd-ask-password-wall.path                                                                           loaded active waiting   Forward Password Requests to Wall Directory Watch                            
 +  init.scope                                                                                               loaded active running   System and Service Manager
 +  session-4.scope                                                                                          loaded active running   Session 4 of User trainee
 +  session-c1.scope                                                                                         loaded active running   Session c1 of User gdm                                                       
 +  accounts-daemon.service                                                                                  loaded active running   Accounts Service
 +  atd.service                                                                                              loaded active running   Deferred execution scheduler
 +  auditd.service                                                                                           loaded active running   Security Auditing Service
 +  avahi-daemon.service                                                                                     loaded active running   Avahi mDNS/DNS-SD Stack
 +  colord.service                                                                                           loaded active running   Manage, Install and Generate Color Profiles
 +  crond.service                                                                                            loaded active running   Command Scheduler
 +  cups.service                                                                                             loaded active running   CUPS Scheduler
 +  dbus-broker.service                                                                                      loaded active running   D-Bus System Message Bus
 +  dracut-shutdown.service                                                                                  loaded active exited    Restore /run/initramfs on shutdown
 +  firewalld.service                                                                                        loaded active running   firewalld - dynamic firewall daemon
 +  gdm.service                                                                                              loaded active running   GNOME Display Manager
 +  irqbalance.service                                                                                       loaded active running   irqbalance daemon
 +  iscsi.service                                                                                            loaded active exited    Login and scanning of iSCSI devices
 +  kdump.service                                                                                            loaded active exited    Crash recovery kernel arming
 +  kmod-static-nodes.service                                                                                loaded active exited    Create List of Static Device Nodes
 +  libstoragemgmt.service                                                                                   loaded active running   libstoragemgmt plug-in server daemon
 +  lvm2-monitor.service                                                                                     loaded active exited    Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling
 +lines 1-55
 +</code>
 +
 +Pour consulter la liste des Unités inactifs, utilisez la commande suivante :
 +
 +<code>
 +[root@redhat9 ~]# systemctl list-units --all | grep inactive | more
 +● boot.automount                                                                                                 not-found inactive dead      boot.automount
 +● home.mount                                                                                                     not-found inactive dead      home.mount
 +● sysroot.mount                                                                                                  not-found inactive dead      sysroot.mount
 +  tmp.mount                                                                                                      loaded    inactive dead      Temporary Directory /tmp
 +● var.mount                                                                                                      not-found inactive dead      var.mount
 +  systemd-ask-password-console.path                                                                              loaded    inactive dead      Dispatch Password Requests to Console Directory Watch
 +  alsa-restore.service                                                                                           loaded    inactive dead      Save/Restore Sound Card State
 +  alsa-state.service                                                                                             loaded    inactive dead      Manage Sound Card State (restore and store)
 +● auto-cpufreq.service                                                                                           not-found inactive dead      auto-cpufreq.service
 +● autofs.service                                                                                                 not-found inactive dead      autofs.service
 +  blk-availability.service                                                                                       loaded    inactive dead      Availability of block devices
 +  cpupower.service                                                                                               loaded    inactive dead      Configure CPU power related settings
 +  dm-event.service                                                                                               loaded    inactive dead      Device-mapper event daemon
 +  dnf-makecache.service                                                                                          loaded    inactive dead      dnf makecache
 +  dracut-cmdline.service                                                                                         loaded    inactive dead      dracut cmdline hook
 +  dracut-initqueue.service                                                                                       loaded    inactive dead      dracut initqueue hook
 +  dracut-mount.service                                                                                           loaded    inactive dead      dracut mount hook
 +  dracut-pre-mount.service                                                                                       loaded    inactive dead      dracut pre-mount hook
 +  dracut-pre-pivot.service                                                                                       loaded    inactive dead      dracut pre-pivot and cleanup hook
 +  dracut-pre-trigger.service                                                                                     loaded    inactive dead      dracut pre-trigger hook
 +  dracut-pre-udev.service                                                                                        loaded    inactive dead      dracut pre-udev hook
 +  dracut-shutdown-onfailure.service                                                                              loaded    inactive dead      Service executing upon dracut-shutdown failure to perform cleanup
 +● ebtables.service                                                                                               not-found inactive dead      ebtables.service
 +  emergency.service                                                                                              loaded    inactive dead      Emergency Shell
 +● fcoe.service                                                                                                   not-found inactive dead      fcoe.service
 +  getty@tty1.service                                                                                             loaded    inactive dead      Getty on tty1
 +  initrd-cleanup.service                                                                                         loaded    inactive dead      Cleaning Up and Shutting Down Daemons
 +  initrd-parse-etc.service                                                                                       loaded    inactive dead      Mountpoints Configured in the Real Root
 +  initrd-switch-root.service                                                                                     loaded    inactive dead      Switch Root
 +  initrd-udevadm-cleanup-db.service                                                                              loaded    inactive dead      Cleanup udev Database
 +  insights-client-boot.service                                                                                   loaded    inactive dead      Run Insights Client at boot
 +● ip6tables.service                                                                                              not-found inactive dead      ip6tables.service
 +● ipset.service                                                                                                  not-found inactive dead      ipset.service
 +● iptables.service                                                                                               not-found inactive dead      iptables.service
 +  iscsi-init.service                                                                                             loaded    inactive dead      One time configuration for iscsi.service
 +  iscsi-onboot.service                                                                                           loaded    inactive dead      Special handling of early boot iSCSI sessions
 +  iscsi-shutdown.service                                                                                         loaded    inactive dead      Logout off all iSCSI sessions on shutdown
 +  iscsi-starter.service                                                                                          loaded    inactive dead      iscsi-starter.service
 +  iscsid.service                                                                                                 loaded    inactive dead      Open-iSCSI
 +  iscsiuio.service                                                                                               loaded    inactive dead      iSCSI UserSpace I/O driver
 +  ldconfig.service                                                                                               loaded    inactive dead      Rebuild Dynamic Linker Cache
 +  logrotate.service                                                                                              loaded    inactive dead      Rotate log files
 +  low-memory-monitor.service                                                                                     loaded    inactive dead      Low Memory Monitor
 +● lvm2-activation-early.service                                                                                  not-found inactive dead      lvm2-activation-early.service
 +  lvm2-lvmpolld.service                                                                                          loaded    inactive dead      LVM2 poll daemon
 +  mdmonitor.service                                                                                              loaded    inactive dead      Software RAID monitoring and management
 +  microcode.service                                                                                              loaded    inactive dead      Load CPU microcode update
 +  mlocate-updatedb.service                                                                                       loaded    inactive dead      Update a database for mlocate
 +  modprobe@configfs.service                                                                                      loaded    inactive dead      Load Kernel Module configfs
 +  modprobe@drm.service                                                                                           loaded    inactive dead      Load Kernel Module drm
 +  modprobe@fuse.service                                                                                          loaded    inactive dead      Load Kernel Module fuse
 +  multipathd.service                                                                                             loaded    inactive dead      Device-Mapper Multipath Device Controller
 +● network.service                                                                                                not-found inactive dead      network.service
 +  nftables.service                                                                                               loaded    inactive dead      Netfilter Tables
 +● nslcd.service                                                                                                  not-found inactive dead      nslcd.service
 +--More--
 +[q]
 +</code>
 +
 +Les points noirs au début de certaines lignes dans la sortie ci-dessus sont en réalité des points blancs à l'écran. Ces points impliquent que le service, la cible ou l'unité spécifié n'a pas été trouvé sur le système. Par exemple :
 +
 +<code>
 +[root@redhat9 ~]# systemctl status network
 +Unit network.service could not be found.
 +</code>
 +
 +Pour consulter la liste des Unités ainsi que leurs statuts, utilisez la commande suivante :
 +
 +<code>
 +[root@redhat9 ~]# systemctl list-unit-files | more
 +UNIT FILE                                  STATE           PRESET
 +proc-sys-fs-binfmt_misc.automount          static          -
 +-.mount                                    generated       -
 +boot.mount                                 generated       -
 +dev-hugepages.mount                        static          -
 +dev-mqueue.mount                           static          -
 +proc-sys-fs-binfmt_misc.mount              disabled        disabled
 +run-vmblock\x2dfuse.mount                  disabled        disabled
 +sys-fs-fuse-connections.mount              static          -
 +sys-kernel-config.mount                    static          -
 +sys-kernel-debug.mount                     static          -
 +sys-kernel-tracing.mount                   static          -
 +tmp.mount                                  disabled        disabled
 +cups.path                                  enabled         enabled
 +insights-client-results.path               disabled        disabled
 +ostree-finalize-staged.path                disabled        disabled
 +systemd-ask-password-console.path          static          -
 +systemd-ask-password-plymouth.path         static          -
 +systemd-ask-password-wall.path             static          -
 +session-4.scope                            transient       -
 +session-c1.scope                           transient       -
 +accounts-daemon.service                    enabled         enabled
 +alsa-restore.service                       static          -
 +alsa-state.service                         static          -
 +arp-ethers.service                         disabled        disabled
 +atd.service                                enabled         enabled
 +auditd.service                             enabled         enabled
 +autovt@.service                            alias           -
 +avahi-daemon.service                       enabled         enabled
 +blk-availability.service                   disabled        disabled
 +bluetooth.service                          enabled         enabled
 +bolt.service                               static          -
 +brltty.service                             disabled        disabled
 +canberra-system-bootup.service             disabled        disabled
 +canberra-system-shutdown-reboot.service    disabled        disabled
 +canberra-system-shutdown.service           disabled        disabled
 +chrony-wait.service                        disabled        disabled
 +chronyd-restricted.service                 disabled        disabled
 +chronyd.service                            disabled        enabled
 +cni-dhcp.service                           disabled        disabled
 +cockpit-motd.service                       static          -
 +cockpit-wsinstance-http.service            static          -
 +cockpit-wsinstance-https-factory@.service  static          -
 +cockpit-wsinstance-https@.service          static          -
 +cockpit.service                            static          -
 +colord.service                             static          -
 +configure-printer@.service                 static          -
 +console-getty.service                      disabled        disabled
 +container-getty@.service                   static          -
 +cpupower.service                           disabled        disabled
 +crond.service                              enabled         enabled
 +cups-browsed.service                       disabled        disabled
 +cups.service                               enabled         enabled
 +dbus-broker.service                        enabled         enabled
 +dbus-daemon.service                        disabled        disabled
 +--More--
 +[q]
 +</code>
 +
 +Pour visualiser les Unités d'un type spécifique, il convient d'utiliser l'option **-t** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl list-unit-files -t mount
 +UNIT FILE                     STATE     PRESET  
 +-.mount                       generated -       
 +boot.mount                    generated -       
 +dev-hugepages.mount           static    -       
 +dev-mqueue.mount              static    -       
 +proc-sys-fs-binfmt_misc.mount disabled  disabled
 +run-vmblock\x2dfuse.mount     disabled  disabled
 +sys-fs-fuse-connections.mount static    -       
 +sys-kernel-config.mount       static    -       
 +sys-kernel-debug.mount        static    -       
 +sys-kernel-tracing.mount      static    -       
 +tmp.mount                     disabled  disabled
 +
 +11 unit files listed.
 +</code>
 +
 +Dans la colonne STATE on voit les mots **static** et **generated**. 
 +
 +  * STATE = static
 +    * Ceci implique que l'Unité ne peut ni être démarrée, ni être arrêtée par l'administrateur. Le démarrage et l'arrêt d'une telle Unité est effectué par le système. En règle générale, les Unités dont le STATE est static sont des dépendances d'autres Unité
 +
 +  * STATE = generated
 +    * Ceci implique que le fichier a été généré automatiquement en utilisant les informations dans le fichier **/etc/fstab** lors du démarrage du système. Dans le cas d'un point de montage, l'exécutable respopnsable de la génération du fichier est **/lib/systemd/system-generators/systemd-fstab-generator** :
 +
 +<code>
 +[root@redhat9 ~]# ls -l /lib/systemd/system-generators/systemd-fstab-generator
 +-rwxr-xr-x. 1 root root 57696 Jul 18 13:01 /lib/systemd/system-generators/systemd-fstab-generator
 +</code>
 +
 +Il existe aussi d'autres exécutables responsables de la génération d'autres fichiers :
 +
 +<code>
 +[root@redhat9 ~]# ls -l /lib/systemd/system-generators
 +total 396
 +-rwxr-xr-x. 1 root root   541 Jul 24 06:08 kdump-dep-generator.sh
 +-rwxr-xr-x. 1 root root 15832 May 17 18:27 ostree-system-generator
 +lrwxrwxrwx. 1 root root    31 Aug  8 10:54 podman-system-generator -> ../../../libexec/podman/quadlet
 +-rwxr-xr-x. 1 root root  1005 Feb 19  2024 selinux-autorelabel-generator.sh
 +-rwxr-xr-x. 1 root root 15624 Jul 18 13:01 systemd-bless-boot-generator
 +-rwxr-xr-x. 1 root root 40920 Jul 18 13:01 systemd-cryptsetup-generator
 +-rwxr-xr-x. 1 root root 24312 Jul 18 13:01 systemd-debug-generator
 +-rwxr-xr-x. 1 root root 57696 Jul 18 13:01 systemd-fstab-generator
 +-rwxr-xr-x. 1 root root 24096 Jul 18 13:01 systemd-getty-generator
 +-rwxr-xr-x. 1 root root 36496 Jul 18 13:01 systemd-gpt-auto-generator
 +-rwxr-xr-x. 1 root root 16096 Jul 18 13:01 systemd-hibernate-resume-generator
 +-rwxr-xr-x. 1 root root 24240 Jul 18 13:01 systemd-integritysetup-generator
 +-rwxr-xr-x. 1 root root 15632 Jul 18 13:01 systemd-rc-local-generator
 +-rwxr-xr-x. 1 root root 24296 Jul 18 13:01 systemd-run-generator
 +-rwxr-xr-x. 1 root root 15824 Jul 18 13:01 systemd-system-update-generator
 +-rwxr-xr-x. 1 root root 36424 Jul 18 13:01 systemd-sysv-generator
 +-rwxr-xr-x. 1 root root 36872 Jul 18 13:01 systemd-veritysetup-generator
 +</code>
 +
 +Les options de la commande **systemctl** sont :
 +
 +<code>
 +[root@redhat9 ~]# systemctl --help
 +systemctl [OPTIONS...] COMMAND ...
 +
 +Query or send control commands to the system manager.
 +
 +Unit Commands:
 +  list-units [PATTERN...]             List units currently in memory
 +  list-automounts [PATTERN...]        List automount units currently in memory,
 +                                      ordered by path
 +  list-sockets [PATTERN...]           List socket units currently in memory,
 +                                      ordered by address
 +  list-timers [PATTERN...]            List timer units currently in memory,
 +                                      ordered by next elapse
 +  is-active PATTERN...                Check whether units are active
 +  is-failed PATTERN...                Check whether units are failed
 +  status [PATTERN...|PID...]          Show runtime status of one or more units
 +  show [PATTERN...|JOB...]            Show properties of one or more
 +                                      units/jobs or the manager
 +  cat PATTERN...                      Show files and drop-ins of specified units
 +  help PATTERN...|PID...              Show manual for one or more units
 +  list-dependencies [UNIT...]         Recursively show units which are required
 +                                      or wanted by the units or by which those
 +                                      units are required or wanted
 +  start UNIT...                       Start (activate) one or more units
 +  stop UNIT...                        Stop (deactivate) one or more units
 +  reload UNIT...                      Reload one or more units
 +  restart UNIT...                     Start or restart one or more units
 +  try-restart UNIT...                 Restart one or more units if active
 +  reload-or-restart UNIT...           Reload one or more units if possible,
 +                                      otherwise start or restart
 +  try-reload-or-restart UNIT...       If active, reload one or more units,
 +                                      if supported, otherwise restart
 +  isolate UNIT                        Start one unit and stop all others
 +  kill UNIT...                        Send signal to processes of a unit
 +  clean UNIT...                       Clean runtime, cache, state, logs or
 +                                      configuration of unit
 +  freeze PATTERN...                   Freeze execution of unit processes
 +  thaw PATTERN...                     Resume execution of a frozen unit
 +  set-property UNIT PROPERTY=VALUE... Sets one or more properties of a unit
 +  bind UNIT PATH [PATH]               Bind-mount a path from the host into a
 +                                      unit's namespace
 +  mount-image UNIT PATH [PATH [OPTS]] Mount an image from the host into a
 +                                      unit's namespace
 +  service-log-level SERVICE [LEVEL]   Get/set logging threshold for service
 +  service-log-target SERVICE [TARGET] Get/set logging target for service
 +  reset-failed [PATTERN...]           Reset failed state for all, one, or more
 +                                      units
 +Unit File Commands:
 +  list-unit-files [PATTERN...]        List installed unit files
 +  enable [UNIT...|PATH...]            Enable one or more unit files
 +  disable UNIT...                     Disable one or more unit files
 +  reenable UNIT...                    Reenable one or more unit files
 +  preset UNIT...                      Enable/disable one or more unit files
 +                                      based on preset configuration
 +  preset-all                          Enable/disable all unit files based on
 +                                      preset configuration
 +lines 1-55
 +</code>
 +
 +====LAB #2 - Fichiers de Configuration====
 +
 +===2.1 - Fichiers de Configuration par Défaut===
 +
 +Les fichiers de configuration des Cibles et fichiers de configuration des Unités installés par des paquets se trouvent dans le répertoire **/usr/lib/systemd/system** :
 +
 +<code>
 +[root@redhat9 ~]# pkg-config systemd --variable=systemdsystemunitdir
 +/usr/lib/systemd/system
 +</code>
 +
 +<code>
 +[root@redhat9 ~]# ls -l /usr/lib/systemd/system | more
 +total 1584
 +-rw-r--r--. 1 root root  729 Feb 24  2022 accounts-daemon.service
 +-rw-r--r--. 1 root root  480 Jan 16  2024 alsa-restore.service
 +-rw-r--r--. 1 root root  465 Jan 16  2024 alsa-state.service
 +-rw-r--r--. 1 root root  275 Aug 10  2021 arp-ethers.service
 +-rw-r--r--. 1 root root  274 Apr  4  2022 atd.service
 +-rw-r--r--. 1 root root 1771 Nov  8  2023 auditd.service
 +lrwxrwxrwx. 1 root root   14 Jul 18 13:00 autovt@.service -> getty@.service
 +-rw-r--r--. 1 root root 1044 Nov  8  2023 avahi-daemon.service
 +-rw-r--r--. 1 root root  870 Nov  8  2023 avahi-daemon.socket
 +-rw-r--r--. 1 root root  964 Jul 18 13:00 basic.target
 +drwxr-xr-x. 2 root root    6 Jul 18 13:00 basic.target.wants
 +-r--r--r--. 1 root root  384 Feb  3  2024 blk-availability.service
 +-rw-r--r--. 1 root root  449 Oct 31  2022 blockdev@.target
 +-rw-r--r--. 1 root root  707 Jun 14  2022 bluetooth.service
 +-rw-r--r--. 1 root root  435 Oct 31  2022 bluetooth.target
 +-rw-r--r--. 1 root root  642 Jan 16  2023 bolt.service
 +-rw-r--r--. 1 root root  463 Oct 31  2022 boot-complete.target
 +-rw-r--r--. 1 root root  217 Aug  9  2021 brltty.service
 +-rw-r--r--. 1 root root  491 Jul 13  2023 canberra-system-bootup.service
 +-rw-r--r--. 1 root root  509 Jul 13  2023 canberra-system-shutdown-reboot.service
 +-rw-r--r--. 1 root root  466 Jul 13  2023 canberra-system-shutdown.service
 +-rw-r--r--. 1 root root 1811 Jan 23  2024 chronyd-restricted.service
 +-rw-r--r--. 1 root root 1468 Jan 23  2024 chronyd.service
 +-rw-r--r--. 1 root root 1082 Jan 23  2024 chrony-wait.service
 +-rw-r--r--. 1 root root  277 Jul 23 09:37 cni-dhcp.service
 +-rw-r--r--. 1 root root  302 Dec  4  2023 cni-dhcp.socket
 +-rw-r--r--. 1 root root  222 Apr  2 05:45 cockpit-motd.service
 +-rw-r--r--. 1 root root  720 Apr  2 05:45 cockpit.service
 +-rw-r--r--. 1 root root  349 Apr  2 05:45 cockpit.socket
 +-rw-r--r--. 1 root root  221 Apr  2 05:45 cockpit-wsinstance-http.service
 +-rw-r--r--. 1 root root  165 Apr  2 05:45 cockpit-wsinstance-https-factory@.service
 +-rw-r--r--. 1 root root  244 Apr  2 05:45 cockpit-wsinstance-https-factory.socket
 +-rw-r--r--. 1 root root  215 Apr  2 05:45 cockpit-wsinstance-http.socket
 +-rw-r--r--. 1 root root  264 Apr  2 05:45 cockpit-wsinstance-https@.service
 +-rw-r--r--. 1 root root  478 Apr  2 05:45 cockpit-wsinstance-https@.socket
 +-rw-r--r--. 1 root root  295 Aug  9  2021 colord.service
 +-rw-r--r--. 1 root root  154 Aug 11  2021 configure-printer@.service
 +-rw-r--r--. 1 root root 1102 Jul 18 13:00 console-getty.service
 +-rw-r--r--. 1 root root 1254 Jul 18 13:00 container-getty@.service
 +-rw-r--r--. 1 root root  294 Sep 13 18:49 cpupower.service
 +-rw-r--r--. 1 root root  371 Nov 30  2023 crond.service
 +-rw-r--r--. 1 root root  473 Oct 31  2022 cryptsetup-pre.target
 +-rw-r--r--. 1 root root  420 Oct 31  2022 cryptsetup.target
 +lrwxrwxrwx. 1 root root   13 Jul 18 13:00 ctrl-alt-del.target -> reboot.target
 +-rw-r--r--. 1 root root  234 Jan  7  2021 cups-browsed.service
 +-rw-r--r--. 1 root root  142 Jun 19 11:00 cups.path
 +-rw-r--r--. 1 root root  298 Jun 19 11:00 cups.service
 +drwxr-xr-x. 2 root root   25 Sep 25 12:03 cups.service.d
 +-rw-r--r--. 1 root root  148 Jun 19 11:00 cups.socket
 +-rw-r--r--. 1 root root  529 Aug 23  2022 dbus-broker.service
 +-rw-r--r--. 1 root root  560 Jun 12  2023 dbus-daemon.service
 +lrwxrwxrwx. 1 root root   25 Jul 18 13:00 dbus-org.freedesktop.hostname1.service -> systemd-hostnamed.service
 +lrwxrwxrwx. 1 root root   23 Jul 18 13:00 dbus-org.freedesktop.locale1.service -> systemd-localed.service
 +lrwxrwxrwx. 1 root root   22 Jul 18 13:00 dbus-org.freedesktop.login1.service -> systemd-logind.service
 +--More--
 +[q]
 +</code>
 +
 +Certains fichiers de configuration sont créés à la volée dans le répertoire **/run/systemd/system** lors du runtime puis ils sont détruits quand le système n'en a plus besoin :
 +
 +<code>
 +[root@redhat9 ~]# ls -l /run/systemd/system/
 +total 0
 +</code>
 +
 +Les fichiers de configuration des Unités crées par les utilisateurs doivent être mis dans le répertoire **/usr/lib/systemd/user** :
 +
 +<code>
 +[root@redhat9 ~]# pkg-config systemd --variable=systemduserunitdir
 +/usr/lib/systemd/user
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** : De cette façon les fichiers dans **/usr/lib/systemd/user** surchargent les fichiers dans le répertoire **/run/systemd/system** qui surchargent les fichiers dans le répertoire **/usr/lib/systemd/system**.
 +</WRAP>
 +
 +Prenons le cas du service **sshd** qui est configuré par le fichier **/usr/lib/systemd/system/sshd.service** :
 +
 +<code>
 +[root@redhat9 ~]# cat /usr/lib/systemd/system/sshd.service
 +[Unit]
 +Description=OpenSSH server daemon
 +Documentation=man:sshd(8) man:sshd_config(5)
 +After=network.target sshd-keygen.target
 +Wants=sshd-keygen.target
 +
 +[Service]
 +Type=notify
 +EnvironmentFile=-/etc/sysconfig/sshd
 +ExecStart=/usr/sbin/sshd -D $OPTIONS
 +ExecReload=/bin/kill -HUP $MAINPID
 +KillMode=process
 +Restart=on-failure
 +RestartSec=42s
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +
 +Dans le fichier on peut noter la présence des lignes suivantes dans la section **[Unit]** :
 +
 +  * **Description=OpenSSH server daemon**,
 +    * Cette directive est utilisée pour donner une courte description des fonctionnalités de l'Unité,
 +  * **Documentation=man:sshd(8) man:sshd_config(5)**,
 +    * Cette directive stipule les chapitres des manuels et les URLs contenant de l'information en relation avec l'Unité,
 +  * **After=network.target sshd-keygen.target**,
 +    * Cette directive indique les cibles qui devraient être atteintes et les Unités qui devraient être démarrées avant l'Unité sshd. Par contre, cette directive ne spécifie pas une dépendance,
 +  * **Wants=sshd-keygen.target**,
 +    * Cette directive stipule une dépendance douce. Autrement dit, Systemd essayera de démarrer l'Unité **sshd-keygen.target** mais si ce démarrage est en échec, l'Unité sshd sera démarré.
 +
 +Dans le fichier on peut aussi noter la présence des lignes suivantes dans la section **[Service]** :
 +
 +  * **Type=notify**,
 +    * Cette directive indique que le service informera Systemd quand son démarrage a terminé,
 +  * **ExecStart=/usr/sbin/sshd -D $OPTIONS**,
 +     * Cette directive définit l'exécutable à lancer,
 +  * **ExecReload=/bin/kill -HUP $MAINPID**,
 +    * Cette directive indique la commande necéssaire pour redémarrer le service,
 +  * **KillMode=process**,
 +    * Cette directive indique comment les processus du service doivent être arrêtés. La valeur de **process** implique l'utilisation de SIGTERM suivi par SIGHUP,
 +  * **Restart=on-failure**,
 +    * Cette ligne indique que le service doit être re-démarré en cas d'arrêt de celui-ci.
 +  * **RestartSec=42s**,
 +    * Cette directive stipule le temps d'attente entre l'arrêt du service et le redémarrage par Systemd,
 +
 +Dernièrement on note la présence de la ligne suivante dans la section **[Install]** :
 +
 +  * **WantedBy=multi-user.target**,
 +    * Cette directive indique la Cible dans laquelle le service doit être démarré. La présence de cette directive crée un lien symbolique dans le répertoire **/etc/systemd/system/multi-user.target.wants** qui pointe vers ce fichier.
 +
 +Pour consulter **l'ensemble** des directives de configuration ainsi que leurs valeurs d'une Unité, il convient d'utiliser la commande **systemctl show**  en spécifiant l'Unité concernée :
 +
 +<code>
 +[root@redhat9 ~]# systemctl show sshd
 +Type=notify
 +ExitType=main
 +Restart=on-failure
 +NotifyAccess=main
 +RestartUSec=42s
 +TimeoutStartUSec=1min 30s
 +TimeoutStopUSec=1min 30s
 +TimeoutAbortUSec=1min 30s
 +TimeoutStartFailureMode=terminate
 +TimeoutStopFailureMode=terminate
 +RuntimeMaxUSec=infinity
 +RuntimeRandomizedExtraUSec=0
 +WatchdogUSec=0
 +WatchdogTimestampMonotonic=0
 +RootDirectoryStartOnly=no
 +RemainAfterExit=no
 +GuessMainPID=yes
 +MainPID=875
 +ControlPID=0
 +FileDescriptorStoreMax=0
 +NFileDescriptorStore=0
 +StatusErrno=0
 +Result=success
 +ReloadResult=success
 +CleanResult=success
 +UID=[not set]
 +GID=[not set]
 +NRestarts=0
 +OOMPolicy=stop
 +ReloadSignal=1
 +ExecMainStartTimestamp=Wed 2024-09-25 12:44:53 CEST
 +ExecMainStartTimestampMonotonic=18089127
 +ExecMainExitTimestampMonotonic=0
 +ExecMainPID=875
 +ExecMainCode=0
 +ExecMainStatus=0
 +ExecStart={ path=/usr/sbin/sshd ; argv[]=/usr/sbin/sshd -D $OPTIONS ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }
 +ExecStartEx={ path=/usr/sbin/sshd ; argv[]=/usr/sbin/sshd -D $OPTIONS ; flags= ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }
 +ExecReload={ path=/bin/kill ; argv[]=/bin/kill -HUP $MAINPID ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }
 +ExecReloadEx={ path=/bin/kill ; argv[]=/bin/kill -HUP $MAINPID ; flags= ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }
 +Slice=system.slice
 +ControlGroup=/system.slice/sshd.service
 +ControlGroupId=3690
 +MemoryCurrent=5275648
 +MemoryAvailable=infinity
 +CPUUsageNSec=122370000
 +TasksCurrent=1
 +IPIngressBytes=[no data]
 +IPIngressPackets=[no data]
 +IPEgressBytes=[no data]
 +IPEgressPackets=[no data]
 +IOReadBytes=18446744073709551615
 +IOReadOperations=18446744073709551615
 +IOWriteBytes=18446744073709551615
 +IOWriteOperations=18446744073709551615
 +lines 1-55
 +</code>
 +
 +Pour consulter la liste des dépendances d'une Unité, il convient d'utiliser **systemctl list-dependancies** en spécifiant l'Unité concernée :
 +
 +<code>
 +[root@redhat9 ~]# systemctl list-dependencies sshd.service
 +sshd.service
 +● ├─system.slice
 +● ├─sshd-keygen.target
 +○ │ ├─sshd-keygen@ecdsa.service
 +○ │ ├─sshd-keygen@ed25519.service
 +○ │ └─sshd-keygen@rsa.service
 +● └─sysinit.target
 +●   ├─dev-hugepages.mount
 +●   ├─dev-mqueue.mount
 +●   ├─dracut-shutdown.service
 +○   ├─iscsi-onboot.service
 +○   ├─iscsi-starter.service
 +●   ├─kmod-static-nodes.service
 +○   ├─ldconfig.service
 +●   ├─lvm2-lvmpolld.socket
 +●   ├─lvm2-monitor.service
 +○   ├─multipathd.service
 +●   ├─nis-domainname.service
 +●   ├─plymouth-read-write.service
 +●   ├─plymouth-start.service
 +●   ├─proc-sys-fs-binfmt_misc.automount
 +○   ├─selinux-autorelabel-mark.service
 +●   ├─sys-fs-fuse-connections.mount
 +●   ├─sys-kernel-config.mount
 +●   ├─sys-kernel-debug.mount
 +●   ├─sys-kernel-tracing.mount
 +○   ├─systemd-ask-password-console.path
 +○   ├─systemd-binfmt.service
 +○   ├─systemd-boot-random-seed.service
 +●   ├─systemd-boot-update.service
 +○   ├─systemd-firstboot.service
 +○   ├─systemd-hwdb-update.service
 +○   ├─systemd-journal-catalog-update.service
 +●   ├─systemd-journal-flush.service
 +●   ├─systemd-journald.service
 +○   ├─systemd-machine-id-commit.service
 +●   ├─systemd-modules-load.service
 +●   ├─systemd-network-generator.service
 +○   ├─systemd-pcrmachine.service
 +○   ├─systemd-pcrphase-sysinit.service
 +○   ├─systemd-pcrphase.service
 +●   ├─systemd-random-seed.service
 +○   ├─systemd-repart.service
 +●   ├─systemd-sysctl.service
 +○   ├─systemd-sysusers.service
 +●   ├─systemd-tmpfiles-setup-dev.service
 +●   ├─systemd-tmpfiles-setup.service
 +●   ├─systemd-udev-trigger.service
 +●   ├─systemd-udevd.service
 +○   ├─systemd-update-done.service
 +●   ├─systemd-update-utmp.service
 +●   ├─cryptsetup.target
 +●   ├─integritysetup.target
 +●   ├─local-fs.target
 +●   │ ├─-.mount
 +lines 1-55
 +</code>
 +
 +===2.2 - Surchargement des Fichiers de Configuration par Défaut===
 +
 +Les fichiers de configuration par défaut peuvent aussi être surchargés par des fichiers dans d'autres répertoires :
 +
 +<code>
 +[root@redhat9 ~]# pkg-config systemd --variable=systemdsystemunitpath
 +/etc/systemd/system:/etc/systemd/system:/run/systemd/system:/usr/local/lib/systemd/system:/usr/lib/systemd/system:/usr/lib/systemd/system:/lib/systemd/system
 +</code>
 +
 +<code>
 +[root@redhat9 ~]# ls -l /etc/systemd/system
 +total 8
 +drwxr-xr-x. 2 root root   65 Oct 19  2023  basic.target.wants
 +drwxr-xr-x. 2 root root   31 Oct 19  2023  bluetooth.target.wants
 +lrwxrwxrwx. 1 root root   37 Oct 19  2023  ctrl-alt-del.target -> /usr/lib/systemd/system/reboot.target
 +lrwxrwxrwx. 1 root root   41 Oct 19  2023  dbus-org.bluez.service -> /usr/lib/systemd/system/bluetooth.service
 +lrwxrwxrwx. 1 root root   41 Oct 19  2023  dbus-org.fedoraproject.FirewallD1.service -> /usr/lib/systemd/system/firewalld.service
 +lrwxrwxrwx. 1 root root   44 Oct 19  2023  dbus-org.freedesktop.Avahi.service -> /usr/lib/systemd/system/avahi-daemon.service
 +lrwxrwxrwx. 1 root root   44 Oct 19  2023  dbus-org.freedesktop.ModemManager1.service -> /usr/lib/systemd/system/ModemManager.service
 +lrwxrwxrwx. 1 root root   57 Oct 19  2023  dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service
 +lrwxrwxrwx. 1 root root   43 Oct 19  2023  dbus.service -> /usr/lib/systemd/system/dbus-broker.service
 +lrwxrwxrwx. 1 root root   40 Oct 19  2023  default.target -> /usr/lib/systemd/system/graphical.target
 +drwxr-xr-x. 2 root root   45 Oct 19  2023  default.target.wants
 +drwxr-xr-x. 2 root root   38 Oct 19  2023 'dev-virtio\x2dports-org.qemu.guest_agent.0.device.wants'
 +lrwxrwxrwx. 1 root root   35 Oct 19  2023  display-manager.service -> /usr/lib/systemd/system/gdm.service
 +drwxr-xr-x. 2 root root   32 Oct 19  2023  getty.target.wants
 +drwxr-xr-x. 2 root root  181 Oct 19  2023  graphical.target.wants
 +drwxr-xr-x. 2 root root   36 Oct 19  2023  local-fs.target.wants
 +drwxr-xr-x. 2 root root 4096 Oct 19  2023  multi-user.target.wants
 +drwxr-xr-x. 2 root root   48 Oct 19  2023  network-online.target.wants
 +drwxr-xr-x. 2 root root   26 Oct 19  2023  printer.target.wants
 +drwxr-xr-x. 2 root root   27 Oct 19  2023  remote-fs.target.wants
 +drwxr-xr-x. 2 root root  186 Oct 19  2023  sockets.target.wants
 +drwxr-xr-x. 2 root root 4096 Sep 25 12:08  sysinit.target.wants
 +drwxr-xr-x. 2 root root   86 Oct 19  2023  timers.target.wants
 +drwxr-xr-x. 2 root root   29 Oct 19  2023  vmtoolsd.service.requires
 +</code>
 +
 +====LAB #3 - La Commande systemd-analyze====
 +
 +Pour avoir une évaluation du temps de démarrage, il convient d'utiliser la commande suivante :
 +
 +<code>
 +[root@redhat9 ~]# systemd-analyze
 +Startup finished in 1.309s (kernel) + 4.384s (initrd) + 29.375s (userspace) = 35.069s 
 +graphical.target reached after 29.358s in userspace.
 +</code>
 +
 +L'option **blame** de la commande systemd-analyze permet de voir le temps de démarrage de chaque Unité afin de pourvoir se concentrer sur les plus lentes :
 +
 +<code>
 +[root@redhat9 ~]# systemd-analyze blame
 +15.289s plymouth-quit-wait.service
 + 8.760s dev-disk-by\x2dpartuuid-d00dfc8a\x2d02.device
 + 8.760s dev-disk-by\x2did-scsi\x2d0QEMU_QEMU_HARDDISK_drive\x2dscsi0\x2dpart2.device
 + 8.760s sys-devices-pci0000:00-0000:00:05.0-0000:01:01.0-virtio2-host0-target0:0:0-0:0:0:0-block-sda-sda2.device
 + 8.760s dev-disk-by\x2dpath-pci\x2d0000:01:01.0\x2dscsi\x2d0:0:0:0\x2dpart2.device
 + 8.760s dev-sda2.device
 + 8.662s sys-devices-pci0000:00-0000:00:05.0-0000:01:01.0-virtio2-host0-target0:0:0-0:0:0:0-block-sda-sda1.device
 + 8.662s dev-disk-by\x2did-scsi\x2d0QEMU_QEMU_HARDDISK_drive\x2dscsi0\x2dpart1.device
 + 8.662s dev-sda1.device
 + 8.662s dev-disk-by\x2dpath-pci\x2d0000:01:01.0\x2dscsi\x2d0:0:0:0\x2dpart1.device
 + 8.662s dev-disk-by\x2duuid-6f6c5bb9\x2d30be\x2d4734\x2dbc23\x2d03fed8541616.device
 + 8.662s dev-disk-by\x2dpartuuid-d00dfc8a\x2d01.device
 + 8.629s dev-sda.device
 + 8.629s dev-disk-by\x2dpath-pci\x2d0000:01:01.0\x2dscsi\x2d0:0:0:0.device
 + 8.629s dev-disk-by\x2did-scsi\x2d0QEMU_QEMU_HARDDISK_drive\x2dscsi0.device
 + 8.629s sys-devices-pci0000:00-0000:00:05.0-0000:01:01.0-virtio2-host0-target0:0:0-0:0:0:0-block-sda.device
 + 8.629s dev-disk-by\x2ddiskseq-1.device
 + 8.589s sys-module-fuse.device
 + 8.578s sys-devices-pci0000:00-0000:00:12.0-virtio1-net-ens18.device
 + 8.578s sys-subsystem-net-devices-ens18.device
 + 8.560s sys-devices-platform-serial8250-tty-ttyS0.device
 + 8.560s dev-ttyS0.device
 + 8.559s sys-devices-platform-serial8250-tty-ttyS2.device
 + 8.559s dev-ttyS2.device
 + 8.558s dev-ttyS1.device
 + 8.558s sys-devices-platform-serial8250-tty-ttyS1.device
 + 8.557s dev-ttyS3.device
 + 8.557s sys-devices-platform-serial8250-tty-ttyS3.device
 + 8.510s sys-module-configfs.device
 + 4.024s initrd-switch-root.service
 + 2.468s firewalld.service
 + 2.157s kdump.service
 + 1.944s systemd-udev-settle.service
 + 1.548s dnf-makecache.service
 + 1.454s NetworkManager-wait-online.service
 + 1.309s udisks2.service
 + 1.294s NetworkManager.service
 + 1.112s power-profiles-daemon.service
 + 1.091s polkit.service
 + 1.015s accounts-daemon.service
 +  953ms ModemManager.service
 +  900ms user@42.service
 +  888ms dracut-initqueue.service
 +  671ms dbus-broker.service
 +  661ms systemd-tmpfiles-setup-dev.service
 +  658ms systemd-udevd.service
 +  561ms lvm2-monitor.service
 +  547ms boot.mount
 +  506ms cups.service
 +  464ms sshd.service
 +  446ms logrotate.service
 +  382ms systemd-random-seed.service
 +  376ms auditd.service
 +  371ms systemd-tmpfiles-setup.service
 +  324ms systemd-sysctl.service
 +lines 1-55
 +</code>
 +
 +L'option **critical-chain** de la commande **systemd-analyze** permet de voir l'enchaînement des événements qui amènent au chargement de l'Unité qui est passée en argument :
 +
 +<code>
 +[root@redhat9 ~]# systemd-analyze critical-chain sshd.service
 +The time when unit became active or started is printed after the "@" character.
 +The time the unit took to start is printed after the "+" character.
 +
 +sshd.service +464ms
 +└─network.target @12.377s
 +  └─wpa_supplicant.service @25.556s +119ms
 +    └─basic.target @7.432s
 +      └─dbus-broker.service @6.758s +671ms
 +        └─dbus.socket @6.741s
 +          └─sysinit.target @6.737s
 +            └─systemd-update-utmp.service @6.721s +15ms
 +              └─auditd.service @6.333s +376ms
 +                └─systemd-tmpfiles-setup.service @5.951s +371ms
 +                  └─local-fs.target @5.939s
 +                    └─run-user-42.mount @14.616s
 +                      └─local-fs-pre.target @5.379s
 +                        └─systemd-tmpfiles-setup-dev.service @3.398s +661ms
 +                          └─kmod-static-nodes.service @3.243s +49ms
 +                            └─systemd-journald.socket
 +                              └─system.slice
 +                                └─-.slice
 +</code>
 +
 +Les options de la commande **systemd-analyze** sont :
 +
 +<code>
 +[root@redhat9 ~]# systemd-analyze --help
 +systemd-analyze [OPTIONS...] COMMAND ...
 +
 +Profile systemd, show unit dependencies, check unit files.
 +
 +Commands:
 +  [time]                     Print time required to boot the machine
 +  blame                      Print list of running units ordered by
 +                             time to init
 +  critical-chain [UNIT...]   Print a tree of the time critical chain
 +                             of units
 +  plot                       Output SVG graphic showing service
 +                             initialization
 +  dot [UNIT...]              Output dependency graph in dot(1) format
 +  dump [PATTERN...]          Output state serialization of service
 +                             manager
 +  cat-config                 Show configuration file and drop-ins
 +  unit-files                 List files and symlinks for units
 +  unit-paths                 List load directories for units
 +  exit-status [STATUS...]    List exit status definitions
 +  capability [CAP...]        List capability definitions
 +  syscall-filter [NAME...]   List syscalls in seccomp filters
 +  filesystems [NAME...]      List known filesystems
 +  condition CONDITION...     Evaluate conditions and asserts
 +  compare-versions VERSION1 [OP] VERSION2
 +                             Compare two version strings
 +  verify FILE...             Check unit files for correctness
 +  calendar SPEC...           Validate repetitive calendar time
 +                             events
 +  timestamp TIMESTAMP...     Validate a timestamp
 +  timespan SPAN...           Validate a time span
 +  security [UNIT...]         Analyze security of unit
 +  inspect-elf FILE...        Parse and print ELF package metadata
 +
 +Options:
 +     --recursive-errors=MODE Control which units are verified
 +     --offline=BOOL          Perform a security review on unit file(s)
 +     --threshold=N           Exit with a non-zero status when overall
 +                             exposure level is over threshold value
 +     --security-policy=PATH  Use custom JSON security policy instead
 +                             of built-in one
 +     --json=pretty|short|off Generate JSON output of the security
 +                             analysis table, or plot's raw time data
 +     --no-pager              Do not pipe output into a pager
 +     --no-legend             Disable column headers and hints in plot
 +                             with either --table or --json=
 +     --system                Operate on system systemd instance
 +     --user                  Operate on user systemd instance
 +     --global                Operate on global user configuration
 +  -H --host=[USER@]HOST      Operate on remote host
 +  -M --machine=CONTAINER     Operate on local container
 +     --order                 Show only order in the graph
 +     --require               Show only requirement in the graph
 +     --from-pattern=GLOB     Show only origins in the graph
 +     --to-pattern=GLOB       Show only destinations in the graph
 +     --fuzz=SECONDS          Also print services which finished SECONDS
 +lines 1-55
 +</code>
 +
 +====LAB #4 - Les Cibles Systemd====
 +
 +Chaque Cible est décrite par un fichier de configuration :
 +
 +<code>
 +[root@redhat9 ~]# cat /usr/lib/systemd/system/graphical.target
 +#  SPDX-License-Identifier: LGPL-2.1-or-later
 +#
 +#  This file is part of systemd.
 +#
 +#  systemd is free software; you can redistribute it and/or modify it
 +#  under the terms of the GNU Lesser General Public License as published by
 +#  the Free Software Foundation; either version 2.1 of the License, or
 +#  (at your option) any later version.
 +
 +[Unit]
 +Description=Graphical Interface
 +Documentation=man:systemd.special(7)
 +Requires=multi-user.target
 +Wants=display-manager.service
 +Conflicts=rescue.service rescue.target
 +After=multi-user.target rescue.service rescue.target display-manager.service
 +AllowIsolate=yes
 +</code>
 +
 +Dans ce fichier on peut noter la présence des lignes suivantes :
 +
 +  * **Requires=multi-user.target**,
 +     * Cette ligne indique que le **graphical.target** ne peut pas être atteint si le **multi-user.target** n'a pas été atteint au préalable,
 +  * **After=multi-user.target rescue.service rescue.target display-manager.service**,
 +    * Cette ligne indique le **multi-user.target** et **rescue.target** doivent d'abord être atteints et que les services **rescue.service** et **display-manager.service** doivent d'abord être démarrés,
 +  * **Conflicts=rescue.service rescue.target**,
 +    * Cette ligne indique la Cible et le service en conflits avec le **graphical.target**,
 +  * **Wants=display-manager.service**,
 +    * Cette ligne indique quel service doit être démarré.
 +
 +===4.1 - Contrôler les dépendances d'une Cible===
 +
 +Les dépendances d'une Cible peuvent être consultées en utilisant la commande **systemctl list-dependencies** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl list-dependencies multi-user.target
 +multi-user.target
 +● ├─atd.service
 +● ├─auditd.service
 +● ├─avahi-daemon.service
 +● ├─crond.service
 +● ├─cups.path
 +● ├─cups.service
 +● ├─firewalld.service
 +○ ├─insights-client-boot.service
 +● ├─irqbalance.service
 +● ├─kdump.service
 +● ├─libstoragemgmt.service
 +● ├─mcelog.service
 +○ ├─mdmonitor.service
 +● ├─ModemManager.service
 +● ├─NetworkManager.service
 +○ ├─ostree-readonly-sysroot-migration.service
 +● ├─plymouth-quit-wait.service
 +○ ├─plymouth-quit.service
 +● ├─rhsmcertd.service
 +● ├─rsyslog.service
 +○ ├─smartd.service
 +● ├─sshd.service
 +○ ├─sssd.service
 +● ├─systemd-ask-password-wall.path
 +● ├─systemd-logind.service
 +○ ├─systemd-update-utmp-runlevel.service
 +● ├─systemd-user-sessions.service
 +○ ├─tuned.service
 +○ ├─vmtoolsd.service
 +● ├─basic.target
 +● │ ├─-.mount
 +○ │ ├─low-memory-monitor.service
 +○ │ ├─microcode.service
 +● │ ├─paths.target
 +● │ ├─slices.target
 +● │ │ ├─-.slice
 +● │ │ └─system.slice
 +● │ ├─sockets.target
 +● │ │ ├─avahi-daemon.socket
 +● │ │ ├─cups.socket
 +● │ │ ├─dbus.socket
 +● │ │ ├─dm-event.socket
 +● │ │ ├─iscsid.socket
 +● │ │ ├─iscsiuio.socket
 +○ │ │ ├─multipathd.socket
 +● │ │ ├─sssd-kcm.socket
 +● │ │ ├─systemd-coredump.socket
 +● │ │ ├─systemd-initctl.socket
 +● │ │ ├─systemd-journald-dev-log.socket
 +● │ │ ├─systemd-journald.socket
 +● │ │ ├─systemd-udevd-control.socket
 +● │ │ └─systemd-udevd-kernel.socket
 +● │ ├─sysinit.target
 +● │ │ ├─dev-hugepages.mount
 +lines 1-55
 +</code>
 +
 +Les points noirs au début de chaque ligne dans la sortie ci-dessus peuvent être de trois couleurs différentes :
 +
 +  * **Vert** implique que le service, la cible ou l'unité est activé et démarré. 
 +  * **Blanc** implique le service, la cible ou l'unité est inactif.
 +  * **Rouge** implique que le service, la cible ou l'unité n'a pas démarré à cause d'une erreur fatale.
 +
 +Pour visualiser les Unités en état d'erreur fatale, utilisez la commande **systemctl --failed** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl --failed
 +  UNIT LOAD ACTIVE SUB DESCRIPTION
 +0 loaded units listed.
 +</code>
 +
 +Les dépendances sont créés sous la forme de liens symboliques dans les répertoires **/etc/systemd/system/multi-user.target.wants** et **/usr/lib/systemd/system/multi-user.target.wants** :
 +
 +<code>
 +[root@redhat9 ~]# ls -l /etc/systemd/system/multi-user.target.wants
 +total 0
 +lrwxrwxrwx. 1 root root 35 Oct 19  2023 atd.service -> /usr/lib/systemd/system/atd.service
 +lrwxrwxrwx. 1 root root 38 Oct 19  2023 auditd.service -> /usr/lib/systemd/system/auditd.service
 +lrwxrwxrwx. 1 root root 44 Oct 19  2023 avahi-daemon.service -> /usr/lib/systemd/system/avahi-daemon.service
 +lrwxrwxrwx. 1 root root 37 Oct 19  2023 crond.service -> /usr/lib/systemd/system/crond.service
 +lrwxrwxrwx. 1 root root 33 Oct 19  2023 cups.path -> /usr/lib/systemd/system/cups.path
 +lrwxrwxrwx. 1 root root 36 Oct 19  2023 cups.service -> /usr/lib/systemd/system/cups.service
 +lrwxrwxrwx. 1 root root 41 Oct 19  2023 firewalld.service -> /usr/lib/systemd/system/firewalld.service
 +lrwxrwxrwx. 1 root root 52 Oct 19  2023 insights-client-boot.service -> /usr/lib/systemd/system/insights-client-boot.service
 +lrwxrwxrwx. 1 root root 42 Oct 19  2023 irqbalance.service -> /usr/lib/systemd/system/irqbalance.service
 +lrwxrwxrwx. 1 root root 37 Oct 19  2023 kdump.service -> /usr/lib/systemd/system/kdump.service
 +lrwxrwxrwx. 1 root root 46 Oct 19  2023 libstoragemgmt.service -> /usr/lib/systemd/system/libstoragemgmt.service
 +lrwxrwxrwx. 1 root root 38 Oct 19  2023 mcelog.service -> /usr/lib/systemd/system/mcelog.service
 +lrwxrwxrwx. 1 root root 41 Oct 19  2023 mdmonitor.service -> /usr/lib/systemd/system/mdmonitor.service
 +lrwxrwxrwx. 1 root root 44 Oct 19  2023 ModemManager.service -> /usr/lib/systemd/system/ModemManager.service
 +lrwxrwxrwx. 1 root root 46 Oct 19  2023 NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
 +lrwxrwxrwx. 1 root root 40 Oct 19  2023 remote-fs.target -> /usr/lib/systemd/system/remote-fs.target
 +lrwxrwxrwx. 1 root root 41 Oct 19  2023 rhsmcertd.service -> /usr/lib/systemd/system/rhsmcertd.service
 +lrwxrwxrwx. 1 root root 39 Oct 19  2023 rsyslog.service -> /usr/lib/systemd/system/rsyslog.service
 +lrwxrwxrwx. 1 root root 38 Oct 19  2023 smartd.service -> /usr/lib/systemd/system/smartd.service
 +lrwxrwxrwx. 1 root root 36 Oct 19  2023 sshd.service -> /usr/lib/systemd/system/sshd.service
 +lrwxrwxrwx. 1 root root 36 Oct 19  2023 sssd.service -> /usr/lib/systemd/system/sssd.service
 +lrwxrwxrwx. 1 root root 37 Oct 19  2023 tuned.service -> /usr/lib/systemd/system/tuned.service
 +lrwxrwxrwx. 1 root root 40 Oct 19  2023 vmtoolsd.service -> /usr/lib/systemd/system/vmtoolsd.service
 +
 +[root@redhat9 ~]# ls -l /usr/lib/systemd/system/multi-user.target.wants
 +total 0
 +lrwxrwxrwx. 1 root root 15 Jul 18 13:00 getty.target -> ../getty.target
 +lrwxrwxrwx. 1 root root 44 May 17 18:27 ostree-readonly-sysroot-migration.service -> ../ostree-readonly-sysroot-migration.service
 +lrwxrwxrwx. 1 root root 24 Jul 14  2023 plymouth-quit.service -> ../plymouth-quit.service
 +lrwxrwxrwx. 1 root root 29 Jul 14  2023 plymouth-quit-wait.service -> ../plymouth-quit-wait.service
 +lrwxrwxrwx. 1 root root 33 Jul 18 13:00 systemd-ask-password-wall.path -> ../systemd-ask-password-wall.path
 +lrwxrwxrwx. 1 root root 25 Jul 18 13:00 systemd-logind.service -> ../systemd-logind.service
 +lrwxrwxrwx. 1 root root 39 Jul 18 13:00 systemd-update-utmp-runlevel.service -> ../systemd-update-utmp-runlevel.service
 +lrwxrwxrwx. 1 root root 32 Jul 18 13:00 systemd-user-sessions.service -> ../systemd-user-sessions.service
 +</code>
 +
 +===4.2 - La Cible par Défaut===
 +
 +==Consulter la Cible par Défaut==
 +
 +Pour consulter la cible par défaut, il convient d'utiliser la commande **systemctl get-default** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl get-default
 +graphical.target
 +</code>
 +
 +La Cible par défaut est représentée par le lien symbolique **/etc/systemd/system/default.target** :
 +
 +<code>
 +[root@redhat9 ~]# ls -l /etc/systemd/system/default.target
 +lrwxrwxrwx. 1 root root 40 Oct 19  2023 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target
 +</code>
 +
 +==Modifier la Cible par Défaut==
 +
 +Pour modifier la Cible par défaut avec une prise en compte lors du **prochain** démarrage, il convient d'utiliser la commande **systemctl set-default** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl set-default multi-user.target
 +Removed "/etc/systemd/system/default.target".
 +Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/multi-user.target.
 +
 +[root@redhat9 ~]# ls -l /etc/systemd/system/default.target
 +lrwxrwxrwx. 1 root root 41 Sep 26 14:50 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target
 +
 +[root@redhat9 ~]# systemctl set-default graphical.target
 +Removed "/etc/systemd/system/default.target".
 +Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
 +
 +[root@redhat9 ~]# ls -l /etc/systemd/system/default.target
 +lrwxrwxrwx. 1 root root 40 Sep 26 14:51 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target
 +</code>
 +
 +==Modifier la Cible en Cours==
 +
 +Il est possible de modifier la cible actuellement en cours en utilisant la commande **systemctl isolate** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl isolate rescue
 +
 +[root@redhat9 ~]# systemctl list-units --type target | egrep "eme|res|gra|mul" | head -1
 +  rescue.target         loaded active active Rescue Mode
 +            
 +[root@redhat9 ~]# runlevel
 +5 1
 +
 +[root@redhat9 ~]# who -r
 +         run-level 1  2024-09-26 14:52                   last=5
 +</code>
 +
 +<code>
 +[root@redhat9 ~]# systemctl isolate graphical
 +
 +[root@redhat9 ~]# systemctl list-units --type target | egrep "eme|res|gra|mul" | head -1
 +  graphical.target       loaded active active Graphical Interface
 +
 +[root@redhat9 ~]# runlevel
 +1 5
 +
 +[root@redhat9 ~]# who -r
 +         run-level 5  2024-09-26 14:55                   last=1
 +</code>
 +
 +====LAB #5 - Gestion des Services====
 +
 +===5.1 - Gestion des Instances Uniques===
 +
 +Commencez par installer le paquet **httpd** :
 +
 +<code>
 +[root@redhat9 ~]# dnf install httpd
 +Updating Subscription Management repositories.
 +Last metadata expiration check: 1:59:56 ago on Thu 26 Sep 2024 12:57:02 PM CEST.
 +Dependencies resolved.
 +==================================================================================================================================================================================================================
 + Package                                           Architecture                          Version                                            Repository                                                       Size
 +==================================================================================================================================================================================================================
 +Installing:
 + httpd                                             x86_64                                2.4.57-11.el9_4.1                                  rhel-9-for-x86_64-appstream-rpms                                 51 k
 +Installing dependencies:
 + apr                                               x86_64                                1.7.0-12.el9_3                                     rhel-9-for-x86_64-appstream-rpms                                126 k
 + apr-util                                          x86_64                                1.6.1-23.el9                                       rhel-9-for-x86_64-appstream-rpms                                 97 k
 + apr-util-bdb                                      x86_64                                1.6.1-23.el9                                       rhel-9-for-x86_64-appstream-rpms                                 14 k
 + httpd-core                                        x86_64                                2.4.57-11.el9_4.1                                  rhel-9-for-x86_64-appstream-rpms                                1.5 M
 + httpd-filesystem                                  noarch                                2.4.57-11.el9_4.1                                  rhel-9-for-x86_64-appstream-rpms                                 14 k
 + httpd-tools                                       x86_64                                2.4.57-11.el9_4.1                                  rhel-9-for-x86_64-appstream-rpms                                 86 k
 + redhat-logos-httpd                                noarch                                90.4-2.el9                                         rhel-9-for-x86_64-appstream-rpms                                 18 k
 +Installing weak dependencies:
 + apr-util-openssl                                  x86_64                                1.6.1-23.el9                                       rhel-9-for-x86_64-appstream-rpms                                 17 k
 + mod_http2                                         x86_64                                2.0.26-2.el9_4                                     rhel-9-for-x86_64-appstream-rpms                                167 k
 + mod_lua                                           x86_64                                2.4.57-11.el9_4.1                                  rhel-9-for-x86_64-appstream-rpms                                 60 k
 +
 +Transaction Summary
 +==================================================================================================================================================================================================================
 +Install  11 Packages
 +
 +Total download size: 2.2 M
 +Installed size: 6.0 M
 +Is this ok [y/N]: y
 +Downloading Packages:
 +(1/11): apr-util-bdb-1.6.1-23.el9.x86_64.rpm                                                                                                                                       28 kB/s |  14 kB     00:00    
 +(2/11): apr-util-openssl-1.6.1-23.el9.x86_64.rpm                                                                                                                                   31 kB/s |  17 kB     00:00    
 +(3/11): apr-util-1.6.1-23.el9.x86_64.rpm                                                                                                                                          165 kB/s |  97 kB     00:00    
 +(4/11): redhat-logos-httpd-90.4-2.el9.noarch.rpm                                                                                                                                   69 kB/s |  18 kB     00:00    
 +(5/11): apr-1.7.0-12.el9_3.x86_64.rpm                                                                                                                                             374 kB/s | 126 kB     00:00    
 +(6/11): mod_http2-2.0.26-2.el9_4.x86_64.rpm                                                                                                                                       435 kB/s | 167 kB     00:00    
 +(7/11): httpd-core-2.4.57-11.el9_4.1.x86_64.rpm                                                                                                                                   2.9 MB/s | 1.5 MB     00:00    
 +(8/11): httpd-filesystem-2.4.57-11.el9_4.1.noarch.rpm                                                                                                                              31 kB/s |  14 kB     00:00    
 +(9/11): httpd-2.4.57-11.el9_4.1.x86_64.rpm                                                                                                                                         63 kB/s |  51 kB     00:00    
 +(10/11): httpd-tools-2.4.57-11.el9_4.1.x86_64.rpm                                                                                                                                 297 kB/s |  86 kB     00:00    
 +(11/11): mod_lua-2.4.57-11.el9_4.1.x86_64.rpm                                                                                                                                     154 kB/s |  60 kB     00:00    
 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 +Total                                                                                                                                                                             1.2 MB/s | 2.2 MB     00:01     
 +Running transaction check
 +Transaction check succeeded.
 +Running transaction test
 +Transaction test succeeded.
 +Running transaction
 +  Preparing        :                                                                                                                                                                                          1/1 
 +  Installing       : apr-1.7.0-12.el9_3.x86_64                                                                                                                                                               1/11 
 +  Installing       : apr-util-bdb-1.6.1-23.el9.x86_64                                                                                                                                                        2/11 
 +  Installing       : apr-util-openssl-1.6.1-23.el9.x86_64                                                                                                                                                    3/11 
 +  Installing       : apr-util-1.6.1-23.el9.x86_64                                                                                                                                                            4/11 
 +  Installing       : httpd-tools-2.4.57-11.el9_4.1.x86_64                                                                                                                                                    5/11 
 +  Running scriptlet: httpd-filesystem-2.4.57-11.el9_4.1.noarch                                                                                                                                               6/11 
 +  Installing       : httpd-filesystem-2.4.57-11.el9_4.1.noarch                                                                                                                                               6/11 
 +  Installing       : httpd-core-2.4.57-11.el9_4.1.x86_64                                                                                                                                                     7/11 
 +  Installing       : mod_lua-2.4.57-11.el9_4.1.x86_64                                                                                                                                                        8/11 
 +  Installing       : redhat-logos-httpd-90.4-2.el9.noarch                                                                                                                                                    9/11 
 +  Installing       : mod_http2-2.0.26-2.el9_4.x86_64                                                                                                                                                        10/11 
 +  Installing       : httpd-2.4.57-11.el9_4.1.x86_64                                                                                                                                                         11/11 
 +  Running scriptlet: httpd-2.4.57-11.el9_4.1.x86_64                                                                                                                                                         11/11 
 +  Verifying        : apr-util-1.6.1-23.el9.x86_64                                                                                                                                                            1/11 
 +  Verifying        : apr-util-bdb-1.6.1-23.el9.x86_64                                                                                                                                                        2/11 
 +  Verifying        : apr-util-openssl-1.6.1-23.el9.x86_64                                                                                                                                                    3/11 
 +  Verifying        : redhat-logos-httpd-90.4-2.el9.noarch                                                                                                                                                    4/11 
 +  Verifying        : apr-1.7.0-12.el9_3.x86_64                                                                                                                                                               5/11 
 +  Verifying        : mod_http2-2.0.26-2.el9_4.x86_64                                                                                                                                                         6/11 
 +  Verifying        : httpd-2.4.57-11.el9_4.1.x86_64                                                                                                                                                          7/11 
 +  Verifying        : httpd-core-2.4.57-11.el9_4.1.x86_64                                                                                                                                                     8/11 
 +  Verifying        : httpd-filesystem-2.4.57-11.el9_4.1.noarch                                                                                                                                               9/11 
 +  Verifying        : httpd-tools-2.4.57-11.el9_4.1.x86_64                                                                                                                                                   10/11 
 +  Verifying        : mod_lua-2.4.57-11.el9_4.1.x86_64                                                                                                                                                       11/11 
 +Installed products updated.
 +
 +Installed:
 +  apr-1.7.0-12.el9_3.x86_64                apr-util-1.6.1-23.el9.x86_64                  apr-util-bdb-1.6.1-23.el9.x86_64         apr-util-openssl-1.6.1-23.el9.x86_64     httpd-2.4.57-11.el9_4.1.x86_64      
 +  httpd-core-2.4.57-11.el9_4.1.x86_64      httpd-filesystem-2.4.57-11.el9_4.1.noarch     httpd-tools-2.4.57-11.el9_4.1.x86_64     mod_http2-2.0.26-2.el9_4.x86_64          mod_lua-2.4.57-11.el9_4.1.x86_64    
 +  redhat-logos-httpd-90.4-2.el9.noarch    
 +
 +Complete!
 +</code>
 +
 +Pour obtenir le détail sur un service donné, il convient d'utiliser la commande **systemctl status** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl status httpd.service
 +○ httpd.service - The Apache HTTP Server
 +     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; preset: disabled)
 +     Active: inactive (dead)
 +       Docs: man:httpd.service(8)
 +</code>
 +
 +Dans le cas du service httpd ci-dessus, on peut constater que le statut est **disabled**. Le statut peut être une de 2 valeurs :
 +
 +  * **disabled** - le service ne démarrera pas lors du prochain démarrage du système.
 +  * **enabled** - le service démarrera lors du prochain démarrage du système.
 +
 +Il est possible de vérifier le statut en utilisant le commande **systemctl is-enabled** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl is-enabled httpd.service
 +disabled
 +</code>
 +
 +Pour rendre le statut **enabled**, il convient d'utiliser la commande **systemctl enable** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl enable httpd.service
 +Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
 +
 +[root@redhat9 ~]# systemctl is-enabled httpd.service
 +enabled
 +
 +[root@redhat9 ~]# systemctl status httpd.service
 +○ httpd.service - The Apache HTTP Server
 +     Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
 +     Active: inactive (dead)
 +       Docs: man:httpd.service(8)
 +</code>
 +
 +Dans le cas du service httpd ci-dessus, on peut maintenant constater que l'état est **inactive (dead)**.  L'état peut être une de 7 valeurs :
 +
 +  * **inactive (dead)** - le service est arrêté.
 +  * **active(running** - le service est démarré avec un ou plusieurs processus.
 +  * **active(exited)** - le service a terminé une configuration unique.
 +  * **active(waiting)** - le service est démarré mais en attente d'un évènement.
 +  * **activating** - le service est en cours d'activation.
 +  * **deactivating** - le service est en cours de désactivation.
 +  * **failed** - le service a rencontré une erreur fatale.
 +
 +Il est possible de vérifier l'état en utilisant le commande **systemctl is-active** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl is-active httpd.service
 +inactive
 +</code>
 +
 +Pour rendre l'état **active(running)**, utilisez la commande suivante :
 +
 +<code>
 +[root@redhat9 ~]# systemctl start httpd.service
 +</code>
 +
 +Vérifiez ensuite l'état du service :
 +
 +<code>
 +[root@redhat9 ~]# systemctl is-active httpd.service
 +active
 +
 +[root@redhat9 ~]# systemctl status httpd.service
 +● httpd.service - The Apache HTTP Server
 +     Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
 +     Active: active (running) since Thu 2024-09-26 15:01:28 CEST; 43s ago
 +       Docs: man:httpd.service(8)
 +   Main PID: 7187 (httpd)
 +     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
 +      Tasks: 177 (limit: 48800)
 +     Memory: 40.5M
 +        CPU: 128ms
 +     CGroup: /system.slice/httpd.service
 +             ├─7187 /usr/sbin/httpd -DFOREGROUND
 +             ├─7188 /usr/sbin/httpd -DFOREGROUND
 +             ├─7189 /usr/sbin/httpd -DFOREGROUND
 +             ├─7190 /usr/sbin/httpd -DFOREGROUND
 +             └─7191 /usr/sbin/httpd -DFOREGROUND
 +
 +Sep 26 15:01:28 redhat9.ittraining.loc systemd[1]: Starting The Apache HTTP Server...
 +Sep 26 15:01:28 redhat9.ittraining.loc httpd[7187]: Server configured, listening on: port 80
 +Sep 26 15:01:28 redhat9.ittraining.loc systemd[1]: Started The Apache HTTP Server.
 +</code>
 +
 +Pour arrêter une Unité de service, utilisez la commande suivante :
 +
 +<code>
 +[root@redhat9 ~]# systemctl stop httpd.service
 +
 +[root@redhat9 ~]# systemctl status httpd.service
 +○ httpd.service - The Apache HTTP Server
 +     Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
 +     Active: inactive (dead) since Thu 2024-09-26 15:02:55 CEST; 2s ago
 +   Duration: 1min 26.084s
 +       Docs: man:httpd.service(8)
 +    Process: 7187 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=0/SUCCESS)
 +   Main PID: 7187 (code=exited, status=0/SUCCESS)
 +     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
 +        CPU: 178ms
 +
 +Sep 26 15:01:28 redhat9.ittraining.loc systemd[1]: Starting The Apache HTTP Server...
 +Sep 26 15:01:28 redhat9.ittraining.loc httpd[7187]: Server configured, listening on: port 80
 +Sep 26 15:01:28 redhat9.ittraining.loc systemd[1]: Started The Apache HTTP Server.
 +Sep 26 15:02:54 redhat9.ittraining.loc systemd[1]: Stopping The Apache HTTP Server...
 +Sep 26 15:02:55 redhat9.ittraining.loc systemd[1]: httpd.service: Deactivated successfully.
 +Sep 26 15:02:55 redhat9.ittraining.loc systemd[1]: Stopped The Apache HTTP Server.
 +</code>
 +
 +Pour désactiver un service au prochain démarrage du système, utilisez l'option **disable** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl disable httpd.service
 +Removed "/etc/systemd/system/multi-user.target.wants/httpd.service".
 +
 +[root@redhat9 ~]# systemctl status httpd.service
 +○ httpd.service - The Apache HTTP Server
 +     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; preset: disabled)
 +     Active: inactive (dead)
 +       Docs: man:httpd.service(8)
 +
 +Sep 26 15:01:28 redhat9.ittraining.loc systemd[1]: Starting The Apache HTTP Server...
 +Sep 26 15:01:28 redhat9.ittraining.loc httpd[7187]: Server configured, listening on: port 80
 +Sep 26 15:01:28 redhat9.ittraining.loc systemd[1]: Started The Apache HTTP Server.
 +Sep 26 15:02:54 redhat9.ittraining.loc systemd[1]: Stopping The Apache HTTP Server...
 +Sep 26 15:02:55 redhat9.ittraining.loc systemd[1]: httpd.service: Deactivated successfully.
 +Sep 26 15:02:55 redhat9.ittraining.loc systemd[1]: Stopped The Apache HTTP Server.
 +</code>
 +
 +===5.2 - Gestion d'Instances Multiples===
 +
 +Systemd permet l'utilisation des gabarits (templates) des fichiers de configuration des Unités. De cette façon il est possible de faire coexister deux ou plusieurs instances du même service. Un gabarit est reconnaissable par le caractère **@** qui est placé juste avant le point dans le nom du fichier :
 +
 +<code>
 +[root@redhat9 ~]# cat /usr/lib/systemd/system/httpd@.service
 +# This is a template for httpd instances.
 +# See httpd@.service(8) for more information.
 +
 +[Unit]
 +Description=The Apache HTTP Server
 +After=network.target remote-fs.target nss-lookup.target
 +Documentation=man:httpd@.service(8)
 +
 +[Service]
 +Type=notify
 +Environment=LANG=C
 +Environment=HTTPD_INSTANCE=%i
 +ExecStartPre=/bin/mkdir -m 710 -p /run/httpd/instance-%i
 +ExecStartPre=/bin/chown root.apache /run/httpd/instance-%i
 +ExecStartPre=/bin/mkdir -m 700 -p /var/lib/httpd/instance-%i
 +ExecStartPre=/bin/chown apache.apache /var/lib/httpd/instance-%i
 +ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND -f conf/%i.conf
 +ExecReload=/usr/sbin/httpd $OPTIONS -k graceful -f conf/%i.conf
 +# Send SIGWINCH for graceful stop
 +KillSignal=SIGWINCH
 +KillMode=mixed
 +PrivateTmp=true
 +OOMPolicy=continue
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +
 +Une instance créée à partir de ce gabarit devrait avoir un nom sous la forme suivante :
 +
 +<code>
 +httpd@<nom_instance>.service
 +</code>
 +
 +Dans ce fichier on peut constater l'utilisation d'un **identifier** sous la forme de **%i**. Les identifiers sont de deux types - un dit **échappé** où les caractères non-ASCII alphanumérique sont remplacés par **escapes** de type langage C et l'autre non-échappé :
 +
 +  * %n : est remplacé par le nom complet échappé de l'Unité.
 +  * %N : est remplacé par le nom complet non-échappé de l'Unité.
 +  * %p : est remplacé par le préfixe échappé de l'Unité, c'est-à-dire la partie **avant** le caractère @.
 +  * %P : est remplacé par le préfixe non-échappé de l'Unité, c'est-à-dire la partie **avant** le caractère @.
 +  * %i : est remplacé par le nom de l'instance échappé de l'Unité, c'est-à-dire la partie **après** le caractère @ et **avant** le point.
 +  * %I : est remplacé par le nom de l'instance non-échappé de l'Unité, c'est-à-dire la partie **après** le caractère @ et **avant** le point.
 +  * %f : est remplacé par le préfixe non-échappé ou le nom de l'instance non-échappé préfixé par le caractère **/**.
 +  * %c : est remplacé par le CGroup de l'Unité sans le chemin /sys/fs/cgroup/systemd/.
 +  * %u : est remplacé par le nom de l'utilisateur responsable de l'exécution de l'Unité.
 +  * %U : est remplacé par l'UID de l'utilisateur responsable de l'exécution de l'Unité.
 +  * %H : est remplacé par le nom d'hôte sur lequel est exécuté l'Unité.
 +  * %% : est remplacé" par le caractère **%**.
 +
 +Créez maintenant deux copies du fichier **/usr/lib/systemd/system/httpd@.service** :
 +
 +<code>
 +[root@redhat9 ~]# cp /usr/lib/systemd/system/httpd@.service /usr/lib/systemd/system/httpd@instance01.service
 +
 +[root@redhat9 ~]# cp /usr/lib/systemd/system/httpd@.service /usr/lib/systemd/system/httpd@instance02.service
 +</code>
 +
 +Créez deux copies du fichier **/etc/httpd/conf/httpd.conf** :
 +
 +<code>
 +[root@redhat9 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/instance01.conf
 +
 +[root@redhat9 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/instance02.conf
 +</code>
 +
 +Editez la directive **Listen** du fichier **/etc/httpd/conf/instance01.conf** et ajoutez la directive **PidFile** :
 +
 +<code>
 +[root@redhat9 ~]# vi /etc/httpd/conf/instance01.conf 
 +
 +[root@redhat9 ~]# more /etc/httpd/conf/instance01.conf 
 +#
 +# This is the main Apache HTTP server configuration file.  It contains the
 +# configuration directives that give the server its instructions.
 +# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
 +# In particular, see 
 +# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
 +# for a discussion of each configuration directive.
 +#
 +# See the httpd.conf(5) man page for more information on this configuration,
 +# and httpd.service(8) on using and configuring the httpd service.
 +#
 +# Do NOT simply read the instructions in here without understanding
 +# what they do.  They're here only as hints or reminders.  If you are unsure
 +# consult the online docs. You have been warned.  
 +#
 +# Configuration and logfile names: If the filenames you specify for many
 +# of the server's control files begin with "/" (or "drive:/" for Win32), the
 +# server will use that explicit path.  If the filenames do *not* begin
 +# with "/", the value of ServerRoot is prepended -- so 'log/access_log'
 +# with ServerRoot set to '/www' will be interpreted by the
 +# server as '/www/log/access_log', where as '/log/access_log' will be
 +# interpreted as '/log/access_log'.
 +
 +#
 +# ServerRoot: The top of the directory tree under which the server's
 +# configuration, error, and log files are kept.
 +#
 +# Do not add a slash at the end of the directory path.  If you point
 +# ServerRoot at a non-local disk, be sure to specify a local disk on the
 +# Mutex directive, if file-based mutexes are used.  If you wish to share the
 +# same ServerRoot for multiple httpd daemons, you will need to change at
 +# least PidFile.
 +#
 +ServerRoot "/etc/httpd"
 +
 +#
 +# Listen: Allows you to bind Apache to specific IP addresses and/or
 +# ports, instead of the default. See also the <VirtualHost>
 +# directive.
 +#
 +# Change this to Listen on a specific IP address, but note that if
 +# httpd.service is enabled to run at boot time, the address may not be
 +# available when the service starts.  See the httpd.service(8) man
 +# page for more information.
 +#
 +#Listen 12.34.56.78:80
 +Listen 8008
 +PidFile /var/run/httpd/instance01.pid
 +#
 +# Dynamic Shared Object (DSO) Support
 +#
 +# To be able to use the functionality of a module which was built as a DSO you
 +# have to place corresponding `LoadModule' lines at this location so the
 +# directives contained in it are actually available _before_ they are used.
 +--More--(19%)
 +[q]
 +</code> 
 +
 +Editez la directive **Listen** du fichier **/etc/httpd/conf/instance02.conf**  et ajoutez la directive **PidFile** :
 +
 +<code>
 +[root@redhat9 ~]# vi /etc/httpd/conf/instance02.conf 
 +
 +[root@redhat9 ~]# more /etc/httpd/conf/instance02.conf 
 +#
 +# This is the main Apache HTTP server configuration file.  It contains the
 +# configuration directives that give the server its instructions.
 +# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
 +# In particular, see 
 +# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
 +# for a discussion of each configuration directive.
 +#
 +# See the httpd.conf(5) man page for more information on this configuration,
 +# and httpd.service(8) on using and configuring the httpd service.
 +#
 +# Do NOT simply read the instructions in here without understanding
 +# what they do.  They're here only as hints or reminders.  If you are unsure
 +# consult the online docs. You have been warned.  
 +#
 +# Configuration and logfile names: If the filenames you specify for many
 +# of the server's control files begin with "/" (or "drive:/" for Win32), the
 +# server will use that explicit path.  If the filenames do *not* begin
 +# with "/", the value of ServerRoot is prepended -- so 'log/access_log'
 +# with ServerRoot set to '/www' will be interpreted by the
 +# server as '/www/log/access_log', where as '/log/access_log' will be
 +# interpreted as '/log/access_log'.
 +
 +#
 +# ServerRoot: The top of the directory tree under which the server's
 +# configuration, error, and log files are kept.
 +#
 +# Do not add a slash at the end of the directory path.  If you point
 +# ServerRoot at a non-local disk, be sure to specify a local disk on the
 +# Mutex directive, if file-based mutexes are used.  If you wish to share the
 +# same ServerRoot for multiple httpd daemons, you will need to change at
 +# least PidFile.
 +#
 +ServerRoot "/etc/httpd"
 +
 +#
 +# Listen: Allows you to bind Apache to specific IP addresses and/or
 +# ports, instead of the default. See also the <VirtualHost>
 +# directive.
 +#
 +# Change this to Listen on a specific IP address, but note that if
 +# httpd.service is enabled to run at boot time, the address may not be
 +# available when the service starts.  See the httpd.service(8) man
 +# page for more information.
 +#
 +#Listen 12.34.56.78:80
 +Listen 8009
 +PidFile /var/run/httpd/instance02.pid
 +
 +#
 +# Dynamic Shared Object (DSO) Support
 +#
 +# To be able to use the functionality of a module which was built as a DSO you
 +# have to place corresponding `LoadModule' lines at this location so the
 +# directives contained in it are actually available _before_ they are used.
 +--More--(19%)
 +[q]
 +</code>
 +
 +Démarrez les deux services :
 +
 +<code>
 +[root@redhat9 ~]# systemctl start httpd@instance01.service
 +
 +[root@redhat9 ~]# systemctl status httpd@instance01.service
 +● httpd@instance01.service - The Apache HTTP Server
 +     Loaded: loaded (/usr/lib/systemd/system/httpd@instance01.service; disabled; preset: disabled)
 +     Active: active (running) since Thu 2024-09-26 15:14:25 CEST; 9s ago
 +       Docs: man:httpd@.service(8)
 +    Process: 7424 ExecStartPre=/bin/mkdir -m 710 -p /run/httpd/instance-instance01 (code=exited, status=0/SUCCESS)
 +    Process: 7425 ExecStartPre=/bin/chown root.apache /run/httpd/instance-instance01 (code=exited, status=0/SUCCESS)
 +    Process: 7426 ExecStartPre=/bin/mkdir -m 700 -p /var/lib/httpd/instance-instance01 (code=exited, status=0/SUCCESS)
 +    Process: 7427 ExecStartPre=/bin/chown apache.apache /var/lib/httpd/instance-instance01 (code=exited, status=0/SUCCESS)
 +   Main PID: 7429 (httpd)
 +     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
 +      Tasks: 177 (limit: 48800)
 +     Memory: 42.1M
 +        CPU: 122ms
 +     CGroup: /system.slice/system-httpd.slice/httpd@instance01.service
 +             ├─7429 /usr/sbin/httpd -DFOREGROUND -f conf/instance01.conf
 +             ├─7430 /usr/sbin/httpd -DFOREGROUND -f conf/instance01.conf
 +             ├─7431 /usr/sbin/httpd -DFOREGROUND -f conf/instance01.conf
 +             ├─7432 /usr/sbin/httpd -DFOREGROUND -f conf/instance01.conf
 +             └─7433 /usr/sbin/httpd -DFOREGROUND -f conf/instance01.conf
 +
 +Sep 26 15:14:24 redhat9.ittraining.loc systemd[1]: Starting The Apache HTTP Server...
 +Sep 26 15:14:25 redhat9.ittraining.loc httpd[7429]: Server configured, listening on: port 8008
 +Sep 26 15:14:25 redhat9.ittraining.loc systemd[1]: Started The Apache HTTP Server.
 +
 +[root@redhat9 ~]# systemctl start httpd@instance02.service
 +
 +[root@redhat9 ~]# systemctl status httpd@instance02.service
 +● httpd@instance02.service - The Apache HTTP Server
 +     Loaded: loaded (/usr/lib/systemd/system/httpd@instance02.service; disabled; preset: disabled)
 +     Active: active (running) since Thu 2024-09-26 15:14:43 CEST; 7s ago
 +       Docs: man:httpd@.service(8)
 +    Process: 7614 ExecStartPre=/bin/mkdir -m 710 -p /run/httpd/instance-instance02 (code=exited, status=0/SUCCESS)
 +    Process: 7615 ExecStartPre=/bin/chown root.apache /run/httpd/instance-instance02 (code=exited, status=0/SUCCESS)
 +    Process: 7616 ExecStartPre=/bin/mkdir -m 700 -p /var/lib/httpd/instance-instance02 (code=exited, status=0/SUCCESS)
 +    Process: 7617 ExecStartPre=/bin/chown apache.apache /var/lib/httpd/instance-instance02 (code=exited, status=0/SUCCESS)
 +   Main PID: 7618 (httpd)
 +     Status: "Started, listening on: port 8009"
 +      Tasks: 177 (limit: 48800)
 +     Memory: 42.1M
 +        CPU: 113ms
 +     CGroup: /system.slice/system-httpd.slice/httpd@instance02.service
 +             ├─7618 /usr/sbin/httpd -DFOREGROUND -f conf/instance02.conf
 +             ├─7619 /usr/sbin/httpd -DFOREGROUND -f conf/instance02.conf
 +             ├─7620 /usr/sbin/httpd -DFOREGROUND -f conf/instance02.conf
 +             ├─7621 /usr/sbin/httpd -DFOREGROUND -f conf/instance02.conf
 +             └─7622 /usr/sbin/httpd -DFOREGROUND -f conf/instance02.conf
 +
 +Sep 26 15:14:43 redhat9.ittraining.loc systemd[1]: Starting The Apache HTTP Server...
 +Sep 26 15:14:43 redhat9.ittraining.loc httpd[7618]: Server configured, listening on: port 8009
 +Sep 26 15:14:43 redhat9.ittraining.loc systemd[1]: Started The Apache HTTP Server.
 +</code>
 +
 +===5.3 - Interdire la Modification du Statut d'un Service===
 +
 +Il est possible d'interdire la modification en utilisant la commande **systemctl mask**:
 +
 +<code>
 +[root@redhat9 ~]# systemctl status httpd.service
 +○ httpd.service - The Apache HTTP Server
 +     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; preset: disabled)
 +     Active: inactive (dead)
 +       Docs: man:httpd.service(8)
 +
 +Sep 26 15:01:28 redhat9.ittraining.loc systemd[1]: Starting The Apache HTTP Server...
 +Sep 26 15:01:28 redhat9.ittraining.loc httpd[7187]: Server configured, listening on: port 80
 +Sep 26 15:01:28 redhat9.ittraining.loc systemd[1]: Started The Apache HTTP Server.
 +Sep 26 15:02:54 redhat9.ittraining.loc systemd[1]: Stopping The Apache HTTP Server...
 +Sep 26 15:02:55 redhat9.ittraining.loc systemd[1]: httpd.service: Deactivated successfully.
 +Sep 26 15:02:55 redhat9.ittraining.loc systemd[1]: Stopped The Apache HTTP Server.
 +
 +[root@redhat9 ~]# systemctl mask httpd.service
 +Created symlink /etc/systemd/system/httpd.service → /dev/null.
 +
 +[root@redhat9 ~]# systemctl enable httpd.service
 +Failed to enable unit: Unit file /etc/systemd/system/httpd.service is masked.
 +
 +[root@redhat9 ~]# systemctl start httpd.service
 +Failed to start httpd.service: Unit httpd.service is masked.
 +</code>
 +
 +Pour autoriser de nouveau les modifications, il convient d'utiliser la commande **systemctl unmask** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl unmask httpd.service
 +Removed "/etc/systemd/system/httpd.service".
 +
 +[root@redhat9 ~]# systemctl enable httpd.service
 +Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
 +
 +[root@redhat9 ~]# systemctl start httpd.service
 +
 +[root@redhat9 ~]# systemctl status httpd.service
 +● httpd.service - The Apache HTTP Server
 +     Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
 +     Active: active (running) since Thu 2024-09-26 15:17:38 CEST; 18s ago
 +       Docs: man:httpd.service(8)
 +   Main PID: 7896 (httpd)
 +     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
 +      Tasks: 177 (limit: 48800)
 +     Memory: 40.1M
 +        CPU: 99ms
 +     CGroup: /system.slice/httpd.service
 +             ├─7896 /usr/sbin/httpd -DFOREGROUND
 +             ├─7897 /usr/sbin/httpd -DFOREGROUND
 +             ├─7898 /usr/sbin/httpd -DFOREGROUND
 +             ├─7899 /usr/sbin/httpd -DFOREGROUND
 +             └─7900 /usr/sbin/httpd -DFOREGROUND
 +
 +Sep 26 15:17:38 redhat9.ittraining.loc systemd[1]: Starting The Apache HTTP Server...
 +Sep 26 15:17:38 redhat9.ittraining.loc httpd[7896]: Server configured, listening on: port 80
 +Sep 26 15:17:38 redhat9.ittraining.loc systemd[1]: Started The Apache HTTP Server.
 +</code>
 +
 +-----
 +Copyright © 2024 Hugh Norris.
Menu