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:rh134:l101 [2024/10/21 10:42] – created adminelearning:workbooks:redhat:rh134:l101 [2024/10/21 15:02] (Version actuelle) admin
Ligne 5: Ligne 5:
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
  
-======LCF505 - Gestion des Tâches======+======RH13402 - Gestion des Tâches======
  
 =====Contenu du Module===== =====Contenu du Module=====
  
-  * **LCF505 - Gestion des Tâches**+  * **RH13402 - Gestion des Tâches**
     * Contenu du Module     * Contenu du Module
     * LAB #1 - cron     * LAB #1 - cron
Ligne 21: Ligne 21:
     * LAB #3 - at     * LAB #3 - at
       * 3.1 - Le Répertoire /var/spool/at/       * 3.1 - Le Répertoire /var/spool/at/
 +    * LAB #4 - Timers systemd
 +      * 4.1 - systemd-tmpfiles-clean.timer
 +      * 4.2 - Configurer le systemd-tmpfiles-clean.service
  
 =====cron===== =====cron=====
Ligne 36: Ligne 39:
 L'utilisation de crond est réservé à root. Cependant, vous pouvez établir une liste d'utilisateurs qui ont la permission d'utiliser crond en créant un fichier nommé **cron.allow** dans **/etc**. A l'inverse, un fichier **cron.deny** peut contenir une liste d'utilisateurs qui n'ont pas la permission d'utiliser crond. L'utilisation de crond est réservé à root. Cependant, vous pouvez établir une liste d'utilisateurs qui ont la permission d'utiliser crond en créant un fichier nommé **cron.allow** dans **/etc**. A l'inverse, un fichier **cron.deny** peut contenir une liste d'utilisateurs qui n'ont pas la permission d'utiliser crond.
  
-Sous RHEL/CentOS, les crontabs des utilisateurs ont comme nom, le nom de l'utilisateur qui les crée et se trouvent dans le répertoire **/var/spool/cron/**. Par exemple, le crontab propre à l'utilisateur trainee est le fichier **/var/spool/cron/trainee**. Le service crond exécute des tâches en rajoutant une ligne dans son fichier de journalisation **/var/log/cron**.+Sous Red Hat 9, les crontabs des utilisateurs ont comme nom, le nom de l'utilisateur qui les crée et se trouvent dans le répertoire **/var/spool/cron/**. Par exemple, le crontab propre à l'utilisateur trainee est le fichier **/var/spool/cron/trainee**. Le service crond exécute des tâches en rajoutant une ligne dans son fichier de journalisation **/var/log/cron**.
  
 ====1.1 - Le Fichier /etc/crontab==== ====1.1 - Le Fichier /etc/crontab====
  
-Sous RHEL/CentOS le fichier /etc/crontab prend la forme suivante :+Sous Red Hat 9 le fichier /etc/crontab prend la forme suivante :
  
 <code> <code>
-[root@centos8 ~]cat /etc/crontab+[trainee@redhat9 training]cat /etc/crontab
 SHELL=/bin/bash SHELL=/bin/bash
 PATH=/sbin:/bin:/usr/sbin:/usr/bin PATH=/sbin:/bin:/usr/sbin:/usr/bin
Ligne 61: Ligne 64:
  
 <WRAP center round important 60%> <WRAP center round important 60%>
-**Important** - Dans le fichier /etc/crontab, on peut constater la définition de variables dont SHELL, MAILTO et PATH. Ces variables sont différentes des variables système. Notez que sous RHEL/CentOS, le fichier **/etc/crontab** ne contient aucune tâche à exécuter.+**Important** - Dans le fichier /etc/crontab, on peut constater la définition de variables dont SHELL, MAILTO et PATH. Ces variables sont différentes des variables système. Notez que sous Red Hat 9, le fichier **/etc/crontab** ne contient aucune tâche à exécuter.
 </WRAP> </WRAP>
  
Ligne 87: Ligne 90:
  
 <code> <code>
-[root@centos8 ~]cat /etc/cron.d/0hourly +[trainee@redhat9 training]cat /etc/cron.d/0hourly 
 # Run the hourly jobs # Run the hourly jobs
 SHELL=/bin/bash SHELL=/bin/bash
Ligne 100: Ligne 103:
  
 <code> <code>
-[root@centos8 ~]# exit +[trainee@redhat9 training]$ crontab -l
-logout +
-[trainee@centos8 ~]$ crontab -l+
 no crontab for trainee no crontab for trainee
 </code> </code>
Ligne 123: Ligne 124:
  
 <code> <code>
-[trainee@centos8 ~]$ crontab -e+[trainee@redhat9 training]$ crontab -e
 no crontab for trainee - using an empty one no crontab for trainee - using an empty one
 crontab: installing new crontab crontab: installing new crontab
Ligne 139: Ligne 140:
  
 <code> <code>
-[trainee@centos8 ~]$ su -+[trainee@redhat9 training]$ su -
 Password: fenestros Password: fenestros
-[root@centos8 ~]# cat /var/spool/cron/trainee+[root@redhat9 ~]# cat /var/spool/cron/trainee
 * * * * * /bin/pwd > pwd.txt * * * * * /bin/pwd > pwd.txt
 </code> </code>
Ligne 156: Ligne 157:
 L'inconvénient avec crond est qu'afin que celui-ci puisse exécuter des tâches automatiquement, la machine doit rester allumée en permanence. L'inconvénient avec crond est qu'afin que celui-ci puisse exécuter des tâches automatiquement, la machine doit rester allumée en permanence.
  
-Il existe un alternatif très efficace pour des machines qui ne sont pas constamment allumée. Cette solution est le logiciel Anacron. Sous RHEL/CentOS, l'utilisation d'anacron **remplace** l'utilisation de cron pour les tâches système.+Il existe un alternatif très efficace pour des machines qui ne sont pas constamment allumée. Cette solution est le logiciel Anacron. Sous Red Hat 9, l'utilisation d'anacron **remplace** l'utilisation de cron pour les tâches système.
  
 ====2.1 - Le Fichier /etc/anacrontab==== ====2.1 - Le Fichier /etc/anacrontab====
Ligne 163: Ligne 164:
  
 <code> <code>
-[root@centos8 ~]# cat /etc/anacrontab+[root@redhat9 ~]# cat /etc/anacrontab
 # /etc/anacrontab: configuration file for anacron # /etc/anacrontab: configuration file for anacron
  
Ligne 177: Ligne 178:
  
 #period in days   delay in minutes   job-identifier   command #period in days   delay in minutes   job-identifier   command
-1 5 cron.daily nice run-parts /etc/cron.daily +            cron.daily              nice run-parts /etc/cron.daily 
-7 25 cron.weekly nice run-parts /etc/cron.weekly +      25      cron.weekly             nice run-parts /etc/cron.weekly 
-@monthly 45 cron.monthly nice run-parts /etc/cron.monthly+@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly
 </code> </code>
  
Ligne 194: Ligne 195:
  
 <code> <code>
-[root@centos8 ~]# ls /var/spool/anacron/+[root@redhat9 ~]# ls /var/spool/anacron/
 cron.daily  cron.monthly  cron.weekly cron.daily  cron.monthly  cron.weekly
-[root@centos8 ~]# cat /var/spool/anacron/cron.daily  +[root@redhat9 ~]# cat /var/spool/anacron/cron.daily 
-20210602 +20241021 
-[root@centos8 ~]# cat /var/spool/anacron/cron.weekly +[root@redhat9 ~]# cat /var/spool/anacron/cron.weekly 
-20210602 +20241021 
-[root@centos8 ~]# cat /var/spool/anacron/cron.monthly +[root@redhat9 ~]# cat /var/spool/anacron/cron.monthly 
-20210526+20240925
 </code> </code>
  
 ====2.3 - Le Fichier /var/spool/anacron/cron.daily==== ====2.3 - Le Fichier /var/spool/anacron/cron.daily====
  
-Sous RHEL/CentOS, anacron consulte le fichier **/var/spool/anacron/cron.daily** chaque heure grâce à l'exécution du script **/etc/cron.hourly/0anacron** et, en fonction de la date inscrite dans le fichier et la date du jour, décide si oui ou non s'il doit exécuter la ligne de commande.+Sous Red Hat 9, anacron consulte le fichier **/var/spool/anacron/cron.daily** chaque heure grâce à l'exécution du script **/etc/cron.hourly/0anacron** et, en fonction de la date inscrite dans le fichier et la date du jour, décide si oui ou non s'il doit exécuter la ligne de commande.
  
 Voici le script **/etc/cron.hourly/0anacron** : Voici le script **/etc/cron.hourly/0anacron** :
  
 <code> <code>
-[root@centos8 ~]# cat /etc/cron.hourly/0anacron +[root@redhat9 ~]# cat /etc/cron.hourly/0anacron 
-#!/bin/sh+#!/usr/bin/sh
 # Check whether 0anacron was run today already # Check whether 0anacron was run today already
 if test -r /var/spool/anacron/cron.daily; then if test -r /var/spool/anacron/cron.daily; then
Ligne 223: Ligne 224:
 # Do not run jobs when on battery power # Do not run jobs when on battery power
 online=1 online=1
-for psupply in AC ADP0 ; do +for psupply in /sys/class/power_supply/* ; do 
-    sysfile="/sys/class/power_supply/$psupply/online" +    if [ `cat "$psupply/type2>/dev/null`x = Mainsx ] && [ -f "$psupply/online" ]; then 
- +        if [ `cat "$psupply/online" 2>/dev/null`x = 1x ]; then
-    if [ -f $sysfile ] ; then +
-        if [ `cat $sysfile 2>/dev/null`x = 1x ]; then+
             online=1             online=1
             break             break
Ligne 255: Ligne 254:
  
 <code> <code>
-[root@centos8 ~]# at 13:00 12/31/2042+[root@redhat9 ~]# at 13:00 12/31/2042
 warning: commands will be executed using /bin/sh warning: commands will be executed using /bin/sh
 at> pwd > /tmp/test13.atd at> pwd > /tmp/test13.atd
 +at> [^D]
 at> <EOT> at> <EOT>
 job 1 at Wed Dec 31 13:00:00 2042 job 1 at Wed Dec 31 13:00:00 2042
  
-[root@centos8 ~]# at 14:00 12/31/2042+[root@redhat9 ~]# at 14:00 12/31/2042
 warning: commands will be executed using /bin/sh warning: commands will be executed using /bin/sh
 at> free > /tmp/test14.atd at> free > /tmp/test14.atd
 +at> [^D]
 at> <EOT> at> <EOT>
 job 2 at Wed Dec 31 14:00:00 2042 job 2 at Wed Dec 31 14:00:00 2042
Ligne 270: Ligne 271:
 ====3.1 - Le Répertoire /var/spool/at/==== ====3.1 - Le Répertoire /var/spool/at/====
  
-Sous RHEL/CentOS, les fichiers concernant ces deux tâches sont stockés dans le répertoire **/var/spool/at/** :+Sous Red Hat 9, les fichiers concernant ces deux tâches sont stockés dans le répertoire **/var/spool/at/** :
  
 <code> <code>
-[root@centos8 ~]# ls /var/spool/at +[root@redhat9 ~]# ls /var/spool/at 
-a000010249d9f8  a000020249da34  spool+a000010249d890  a000020249d8cc  spool
 </code> </code>
  
Ligne 280: Ligne 281:
  
 <code> <code>
-[root@centos8 ~]# at -c 2+[root@redhat9 ~]# at -c 2
 #!/bin/sh #!/bin/sh
 # atrun uid=0 gid=0 # atrun uid=0 gid=0
 # mail trainee 0 # mail trainee 0
 umask 22 umask 22
-LS_COLORS=rs=0:di=38\;5\;33:ln=38\;5\;51:mh=00:pi=40\;38\;5\;11:so=38\;5\;13:do=38\;5\;5:bd=48\;5\;232\;38\;5\;11:cd=48\;5\;232\;38\;5\;3:or=48\;5\;232\;38\;5\;9:mi=01\;05\;37\;41:su=48\;5\;196\;38\;5\;15:sg=48\;5\;11\;38\;5\;16:ca=48\;5\;196\;38\;5\;226:tw=48\;5\;10\;38\;5\;16:ow=48\;5\;10\;38\;5\;21:st=48\;5\;21\;38\;5\;15:ex=38\;5\;40:\*.tar=38\;5\;9:\*.tgz=38\;5\;9:\*.arc=38\;5\;9:\*.arj=38\;5\;9:\*.taz=38\;5\;9:\*.lha=38\;5\;9:\*.lz4=38\;5\;9:\*.lzh=38\;5\;9:\*.lzma=38\;5\;9:\*.tlz=38\;5\;9:\*.txz=38\;5\;9:\*.tzo=38\;5\;9:\*.t7z=38\;5\;9:\*.zip=38\;5\;9:\*.z=38\;5\;9:\*.dz=38\;5\;9:\*.gz=38\;5\;9:\*.lrz=38\;5\;9:\*.lz=38\;5\;9:\*.lzo=38\;5\;9:\*.xz=38\;5\;9:\*.zst=38\;5\;9:\*.tzst=38\;5\;9:\*.bz2=38\;5\;9:\*.bz=38\;5\;9:\*.tbz=38\;5\;9:\*.tbz2=38\;5\;9:\*.tz=38\;5\;9:\*.deb=38\;5\;9:\*.rpm=38\;5\;9:\*.jar=38\;5\;9:\*.war=38\;5\;9:\*.ear=38\;5\;9:\*.sar=38\;5\;9:\*.rar=38\;5\;9:\*.alz=38\;5\;9:\*.ace=38\;5\;9:\*.zoo=38\;5\;9:\*.cpio=38\;5\;9:\*.7z=38\;5\;9:\*.rz=38\;5\;9:\*.cab=38\;5\;9:\*.wim=38\;5\;9:\*.swm=38\;5\;9:\*.dwm=38\;5\;9:\*.esd=38\;5\;9:\*.jpg=38\;5\;13:\*.jpeg=38\;5\;13:\*.mjpg=38\;5\;13:\*.mjpeg=38\;5\;13:\*.gif=38\;5\;13:\*.bmp=38\;5\;13:\*.pbm=38\;5\;13:\*.pgm=38\;5\;13:\*.ppm=38\;5\;13:\*.tga=38\;5\;13:\*.xbm=38\;5\;13:\*.xpm=38\;5\;13:\*.tif=38\;5\;13:\*.tiff=38\;5\;13:\*.png=38\;5\;13:\*.svg=38\;5\;13:\*.svgz=38\;5\;13:\*.mng=38\;5\;13:\*.pcx=38\;5\;13:\*.mov=38\;5\;13:\*.mpg=38\;5\;13:\*.mpeg=38\;5\;13:\*.m2v=38\;5\;13:\*.mkv=38\;5\;13:\*.webm=38\;5\;13:\*.ogm=38\;5\;13:\*.mp4=38\;5\;13:\*.m4v=38\;5\;13:\*.mp4v=38\;5\;13:\*.vob=38\;5\;13:\*.qt=38\;5\;13:\*.nuv=38\;5\;13:\*.wmv=38\;5\;13:\*.asf=38\;5\;13:\*.rm=38\;5\;13:\*.rmvb=38\;5\;13:\*.flc=38\;5\;13:\*.avi=38\;5\;13:\*.fli=38\;5\;13:\*.flv=38\;5\;13:\*.gl=38\;5\;13:\*.dl=38\;5\;13:\*.xcf=38\;5\;13:\*.xwd=38\;5\;13:\*.yuv=38\;5\;13:\*.cgm=38\;5\;13:\*.emf=38\;5\;13:\*.ogv=38\;5\;13:\*.ogx=38\;5\;13:\*.aac=38\;5\;45:\*.au=38\;5\;45:\*.flac=38\;5\;45:\*.m4a=38\;5\;45:\*.mid=38\;5\;45:\*.midi=38\;5\;45:\*.mka=38\;5\;45:\*.mp3=38\;5\;45:\*.mpc=38\;5\;45:\*.ogg=38\;5\;45:\*.ra=38\;5\;45:\*.wav=38\;5\;45:\*.oga=38\;5\;45:\*.opus=38\;5\;45:\*.spx=38\;5\;45:\*.xspf=38\;5\;45:; export LS_COLORS +SHELL=/bin/bash; export SHELL
-LANG=en_US.UTF-8; export LANG+
 HISTCONTROL=ignoredups; export HISTCONTROL HISTCONTROL=ignoredups; export HISTCONTROL
-GUESTFISH_RESTORE=\\e[0m; export GUESTFISH_RESTORE +HISTSIZE=1000; export HISTSIZE 
-HOSTNAME=centos8.ittraining.loc; export HOSTNAME +HOSTNAME=redhat9.ittraining.loc; export HOSTNAME
-GUESTFISH_INIT=\\e[1\;34m; export GUESTFISH_INIT +
-USER=root; export USER +
-GUESTFISH_PS1=\\[\\e[1\;32m\\]\>\<fs\>\\[\\e[0\;31m\\]\ ; export GUESTFISH_PS1+
 PWD=/root; export PWD PWD=/root; export PWD
-HOME=/root; export HOME 
-MAIL=/var/spool/mail/root; export MAIL 
-SHELL=/bin/bash; export SHELL 
-SHLVL=1; export SHLVL 
 LOGNAME=root; export LOGNAME LOGNAME=root; export LOGNAME
-PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport PATH +HOME=/root; export HOME 
-GUESTFISH_OUTPUT=\\e[0mexport GUESTFISH_OUTPUT +LANG=en_US.UTF-8; export LANG 
-HISTSIZE=1000; export HISTSIZE+LS_COLORS=rs=0:di=01\;34:ln=01\;36:mh=00:pi=40\;33:so=01\;35:do=01\;35:bd=40\;33\;01:cd=40\;33\;01:or=40\;31\;01:mi=01\;37\;41:su=37\;41:sg=30\;43:ca=30\;41:tw=30\;42:ow=34\;42:st=37\;44:ex=01\;32:\*.tar=01\;31:\*.tgz=01\;31:\*.arc=01\;31:\*.arj=01\;31:\*.taz=01\;31:\*.lha=01\;31:\*.lz4=01\;31:\*.lzh=01\;31:\*.lzma=01\;31:\*.tlz=01\;31:\*.txz=01\;31:\*.tzo=01\;31:\*.t7z=01\;31:\*.zip=01\;31:\*.z=01\;31:\*.dz=01\;31:\*.gz=01\;31:\*.lrz=01\;31:\*.lz=01\;31:\*.lzo=01\;31:\*.xz=01\;31:\*.zst=01\;31:\*.tzst=01\;31:\*.bz2=01\;31:\*.bz=01\;31:\*.tbz=01\;31:\*.tbz2=01\;31:\*.tz=01\;31:\*.deb=01\;31:\*.rpm=01\;31:\*.jar=01\;31:\*.war=01\;31:\*.ear=01\;31:\*.sar=01\;31:\*.rar=01\;31:\*.alz=01\;31:\*.ace=01\;31:\*.zoo=01\;31:\*.cpio=01\;31:\*.7z=01\;31:\*.rz=01\;31:\*.cab=01\;31:\*.wim=01\;31:\*.swm=01\;31:\*.dwm=01\;31:\*.esd=01\;31:\*.jpg=01\;35:\*.jpeg=01\;35:\*.mjpg=01\;35:\*.mjpeg=01\;35:\*.gif=01\;35:\*.bmp=01\;35:\*.pbm=01\;35:\*.pgm=01\;35:\*.ppm=01\;35:\*.tga=01\;35:\*.xbm=01\;35:\*.xpm=01\;35:\*.tif=01\;35:\*.tiff=01\;35:\*.png=01\;35:\*.svg=01\;35:\*.svgz=01\;35:\*.mng=01\;35:\*.pcx=01\;35:\*.mov=01\;35:\*.mpg=01\;35:\*.mpeg=01\;35:\*.m2v=01\;35:\*.mkv=01\;35:\*.webm=01\;35:\*.webp=01\;35:\*.ogm=01\;35:\*.mp4=01\;35:\*.m4v=01\;35:\*.mp4v=01\;35:\*.vob=01\;35:\*.qt=01\;35:\*.nuv=01\;35:\*.wmv=01\;35:\*.asf=01\;35:\*.rm=01\;35:\*.rmvb=01\;35:\*.flc=01\;35:\*.avi=01\;35:\*.fli=01\;35:\*.flv=01\;35:\*.gl=01\;35:\*.dl=01\;35:\*.xcf=01\;35:\*.xwd=01\;35:\*.yuv=01\;35:\*.cgm=01\;35:\*.emf=01\;35:\*.ogv=01\;35:\*.ogx=01\;35:\*.aac=01\;36:\*.au=01\;36:\*.flac=01\;36:\*.m4a=01\;36:\*.mid=01\;36:\*.midi=01\;36:\*.mka=01\;36:\*.mp3=01\;36:\*.mpc=01\;36:\*.ogg=01\;36:\*.ra=01\;36:\*.wav=01\;36:\*.oga=01\;36:\*.opus=01\;36:\*.spx=01\;36:\*.xspf=01\;36:; export LS_COLORS
 LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
 +USER=root; export USER
 +SHLVL=1; export SHLVL
 +which_declare=declare\ -f; export which_declare
 +XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share; export XDG_DATA_DIRS
 +PATH=/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin; export PATH
 +MAIL=/var/spool/mail/root; export MAIL
 cd /root || { cd /root || {
-  echo 'Execution directory inaccessible' >&+         echo 'Execution directory inaccessible' >&
-  exit 1+         exit 1
 } }
-${SHELL:-/bin/sh} << 'marcinDELIMITER4c5fdfe0'+${SHELL:-/bin/sh} << 'marcinDELIMITER7db8d310'
 free > /tmp/test14.atd free > /tmp/test14.atd
-marcinDELIMITER4c5fdfe0+ 
 +marcinDELIMITER7db8d310
 </code> </code>
  
Ligne 315: Ligne 315:
  
 <code> <code>
-[root@centos8 ~]# at -l +[root@redhat9 ~]# at -l 
-1 Wed Dec 31 13:00:00 2042 a root +      Wed Dec 31 13:00:00 2042 a root 
-2 Wed Dec 31 14:00:00 2042 a root +      Wed Dec 31 14:00:00 2042 a root 
-[root@centos8 ~]# atq + 
-1 Wed Dec 31 13:00:00 2042 a root +[root@redhat9 ~]# atq 
-2 Wed Dec 31 14:00:00 2042 a root +      Wed Dec 31 13:00:00 2042 a root 
-[root@centos8 ~]# at -d 2 +      Wed Dec 31 14:00:00 2042 a root 
-[root@centos8 ~]# atq + 
-1 Wed Dec 31 13:00:00 2042 a root+[root@redhat9 ~]# at -d 2 
 + 
 +[root@redhat9 ~]# atq 
 +      Wed Dec 31 13:00:00 2042 a root
 </code> </code>
  
Ligne 329: Ligne 332:
  
 <code> <code>
-[root@centos8 ~]# touch todo.list +[root@redhat9 ~]# touch todo.list 
-[root@centos8 ~]# echo pwd > todo.list + 
-[root@centos8 ~]# echo free >> todo.list +[root@redhat9 ~]# echo pwd > todo.list 
-[root@centos8 ~]# echo who >> todo.list + 
-[root@centos8 ~]# cat todo.list+[root@redhat9 ~]# echo free >> todo.list 
 + 
 +[root@redhat9 ~]# echo who >> todo.list 
 + 
 +[root@redhat9 ~]# cat todo.list
 pwd pwd
 free free
 who who
  
-[root@centos8 ~]# at 14:30 12/31/2042 < todo.list+[root@redhat9 ~]# at 14:30 12/31/2042 < todo.list
 warning: commands will be executed using /bin/sh warning: commands will be executed using /bin/sh
 job 3 at Wed Dec 31 14:30:00 2042 job 3 at Wed Dec 31 14:30:00 2042
Ligne 346: Ligne 353:
 **Important** - La commande **batch** ou son alias **at -b** est utilisée pour exécuter des commandes au moment où la charge sur le système est en dessous un certain niveau. Par défaut la valeur est fixée à **1.5**. Cette valeur peut être modifiée par l'option **-l** da la commande **atd**. **Important** - La commande **batch** ou son alias **at -b** est utilisée pour exécuter des commandes au moment où la charge sur le système est en dessous un certain niveau. Par défaut la valeur est fixée à **1.5**. Cette valeur peut être modifiée par l'option **-l** da la commande **atd**.
 </WRAP> </WRAP>
 +
 +=====LAB #4 - Timers systemd=====
 +
 +Depuis l'introduction de systemd, certaines tâches sont gérées directement par ce dernier au lieu de par les outils traditionnels comme cron, anacron et at.
 +
 +====4.1 - systemd-tmpfiles-clean.timer====
 +
 +Par exemple, afin d'éviter à ce que le disque se remplit inutilement avec des fichiers temporaires, systemd lance le timer **systemd-tmpfiles-clean.timer**. Celui-ci déclenche le service **systemd-tmpfiles-clean.service** selon une fréquence régulière qui, à son tour, lance la commande **systemd-tmpfiles --clean** :
 +
 +<code>
 +[root@redhat9 ~]# systemctl cat systemd-tmpfiles-clean.timer
 +# /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
 +#  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=Daily Cleanup of Temporary Directories
 +Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
 +ConditionPathExists=!/etc/initrd-release
 +
 +[Timer]
 +OnBootSec=15min
 +OnUnitActiveSec=1d
 +</code>
 +
 +Dans ce fichier on peut constater la section **[Timer]** qui continet deux directives :
 +
 +  * **OnBootSec=15min** - indique que le **systemd-tmpfiles-clean.service** est déclenché 15 minutes après le démarrage du système,
 +  * **OnUnitActiveSec=1d** - indique que par la suite, le service est déclenché 24 heures après son dernier déclenchement.
 +
 +Constatez donc que le **systemd-tmpfiles-clean.timer** soit bien activé et démarré :
 +
 +<code>
 +[root@redhat9 ~]# systemctl status systemd-tmpfiles-clean.timer
 +● systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories
 +     Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.timer; static)
 +     Active: active (waiting) since Mon 2024-10-21 11:56:07 CEST; 4h 1min ago
 +      Until: Mon 2024-10-21 11:56:07 CEST; 4h 1min ago
 +    Trigger: Tue 2024-10-22 12:11:34 CEST; 20h left
 +   Triggers: ● systemd-tmpfiles-clean.service
 +       Docs: man:tmpfiles.d(5)
 +             man:systemd-tmpfiles(8)
 +
 +Oct 21 11:56:07 redhat9.ittraining.loc systemd[1]: Started Daily Cleanup of Temporary>
 +</code>
 +
 +Par contre le **status systemd-tmpfiles-clean.service** n'est ni activé, ni démarré :
 +
 +<code>
 +[root@redhat9 ~]# systemctl status systemd-tmpfiles-clean.service
 +○ systemd-tmpfiles-clean.service - Cleanup of Temporary Directories
 +     Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.service; static)
 +     Active: inactive (dead) since Mon 2024-10-21 12:11:34 CEST; 3h 53min ago
 +TriggeredBy: ● systemd-tmpfiles-clean.timer
 +       Docs: man:tmpfiles.d(5)
 +             man:systemd-tmpfiles(8)
 +    Process: 2174 ExecStart=systemd-tmpfiles --clean (code=exited, status=0/SUCCESS)
 +   Main PID: 2174 (code=exited, status=0/SUCCESS)
 +        CPU: 30ms
 +
 +Oct 21 12:11:34 redhat9.ittraining.loc systemd[1]: Starting Cleanup of Temporary Dire>
 +Oct 21 12:11:34 redhat9.ittraining.loc systemd[1]: systemd-tmpfiles-clean.service: De>
 +Oct 21 12:11:34 redhat9.ittraining.loc systemd[1]: Finished Cleanup of Temporary Dire>
 +<code>
 +
 +Ceci s'explique par la valeur du STATE du service qui est **static** : 
 +
 +<code>
 +[root@redhat9 ~]# systemctl list-unit-files | grep systemd-tmpfiles-clean.service
 +systemd-tmpfiles-clean.service             static          -
 +</code>
 +
 +La valeur **static** 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. Ceci est visible par la valeur **TriggeredBy** dans la sortie suivante : 
 +
 +<code>
 +[root@redhat9 ~]# systemctl start systemd-tmpfiles-clean.service
 +
 +[root@redhat9 ~]# systemctl status systemd-tmpfiles-clean.service
 +○ systemd-tmpfiles-clean.service - Cleanup of Temporary Directories
 +     Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.service; static)
 +     Active: inactive (dead) since Mon 2024-10-21 16:19:45 CEST; 6s ago
 +TriggeredBy: ● systemd-tmpfiles-clean.timer
 +       Docs: man:tmpfiles.d(5)
 +             man:systemd-tmpfiles(8)
 +    Process: 5713 ExecStart=systemd-tmpfiles --clean (code=exited, status=0/SUCCESS)
 +   Main PID: 5713 (code=exited, status=0/SUCCESS)
 +        CPU: 25ms
 +
 +Oct 21 16:19:45 redhat9.ittraining.loc systemd[1]: Starting Cleanup of Temporary Dire>
 +Oct 21 16:19:45 redhat9.ittraining.loc systemd[1]: systemd-tmpfiles-clean.service: De>
 +Oct 21 16:19:45 redhat9.ittraining.loc systemd[1]: Finished Cleanup of Temporary Dire>
 +</code>
 +
 +Modifiez la valuer de **OnUnitActiveSec** en utilisant la commande suivante :
 +
 +<code>
 +[root@redhat9 ~]# EDITOR=vim
 +
 +[root@redhat9 ~]# export EDITOR
 +
 +[root@redhat9 ~]# systemctl edit systemd-tmpfiles-clean.timer
 +### Editing /etc/systemd/system/systemd-tmpfiles-clean.timer.d/override.conf
 +### Anything between here and the comment below will become the new contents of the file
 +
 +[Unit]
 +Description=Daily Cleanup of Temporary Directories
 +Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
 +ConditionPathExists=!/etc/initrd-release
 +
 +[Timer]
 +OnBootSec=15min
 +OnUnitActiveSec=30min
 +
 +
 +### Lines below this comment will be discarded
 +
 +### /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
 +# #  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=Daily Cleanup of Temporary Directories
 +# Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
 +# ConditionPathExists=!/etc/initrd-release
 +
 +# [Timer]
 +# OnBootSec=15min
 +# OnUnitActiveSec=1d
 +</code>
 +
 +Utilisez la commande **systemctl daemon-reload** afin que systemd recharge la configuration :
 +
 +<code>
 +[root@redhat9 ~]# systemctl daemon-reload
 +</code>
 +
 +Visualisez le contenu du fichier 
 +
 +<code>
 +[root@redhat9 ~]# cat /etc/systemd/system/systemd-tmpfiles-clean.timer.d/override.conf
 +[Unit]
 +Description=Daily Cleanup of Temporary Directories
 +Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
 +ConditionPathExists=!/etc/initrd-release
 +
 +[Timer]
 +OnBootSec=15min
 +OnUnitActiveSec=30min
 +</code>
 +
 +Constatez l'utilisation du fichier .override par le timer :
 +
 +<code>
 +[root@redhat9 ~]# systemctl status systemd-tmpfiles-clean.timer
 +● systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories
 +     Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.timer; static)
 +    Drop-In: /etc/systemd/system/systemd-tmpfiles-clean.timer.d
 +             └─override.conf
 +     Active: active (waiting) since Mon 2024-10-21 11:56:07 CEST; 4h 42min ago
 +      Until: Mon 2024-10-21 11:56:07 CEST; 4h 42min ago
 +    Trigger: Mon 2024-10-21 16:49:45 CEST; 10min left
 +   Triggers: ● systemd-tmpfiles-clean.service
 +       Docs: man:tmpfiles.d(5)
 +             man:systemd-tmpfiles(8)
 +             man:tmpfiles.d(5)
 +             man:systemd-tmpfiles(8)
 +
 +Oct 21 11:56:07 redhat9.ittraining.loc systemd[1]: Started Daily Cleanup of Temporary Directories.
 +</code>
 +
 +====4.2 - Configurer le systemd-tmpfiles-clean.service====
 +
 +Les fichiers de configuration du service sont lus de trois emplacements différents et dans l'ordre suivant :
 +
 +  * **/etc/tmpfiles.d/*.conf**,
 +    * les fichiers dans ce répertoire configurent le service,
 +  * **/run/tmpfiles.d/*.conf**,
 +    * les fichiers dans ce répertoire sont volatiles et sont utilisés par des daemons afin de gérer peurs propres fichiers temporaires, 
 +  * **/usr/lib/tmpfiles.d/*.conf**,
 +    ** les fichiers dans ce répertoire sont fournis par des paquets RPM. Il est **déconseillé** de les modifier.
 +
 +<code>
 +[root@redhat9 ~]# ls -l /etc/tmpfiles.d/
 +total 4
 +-rw-r--r--. 1 root root 117 Aug 21 13:54 sos.conf
 +
 +[root@redhat9 ~]# cat /etc/tmpfiles.d/sos.conf 
 +# Ignore the contents of extracted sosreport directories.
 +#
 +# Type Path Mode User Group Age Argument
 +x /var/tmp/sos*
 +</code>
 +
 +La signification de la letter **x** peut être consultée avec la commande suivante :
 +
 +<code>
 +[root@redhat9 ~]# man tmpfiles.d
 +...
 +SYNOPSIS
 +       /etc/tmpfiles.d/*.conf
 +       /run/tmpfiles.d/*.conf
 +       /usr/lib/tmpfiles.d/*.conf
 +
 +       ~/.config/user-tmpfiles.d/*.conf
 +       $XDG_RUNTIME_DIR/user-tmpfiles.d/*.conf
 +       ~/.local/share/user-tmpfiles.d/*.conf
 +       ...
 +       /usr/share/user-tmpfiles.d/*.conf
 +
 +       #Type Path                                     Mode User Group Age         Argument
 +           /file/to/create                          mode user group -           content
 +       f+    /file/to/create-or-truncate              mode user group -           content
 +           /file/to/write-to                        -    -    -               content
 +       w+    /file/to/append-to                          -    -               content
 +           /directory/to/create-and-cleanup         mode user group cleanup-age -
 +           /directory/to/create-and-remove          mode user group cleanup-age -
 +           /directory/to/cleanup                    mode user group cleanup-age -
 +           /subvolume-or-directory/to/create        mode user group cleanup-age -
 +           /subvolume-or-directory/to/create        mode user group cleanup-age -
 +           /subvolume-or-directory/to/create        mode user group cleanup-age -
 +           /fifo/to/create                          mode user group -           -
 +       p+    /fifo/to/[re]create                      mode user group -           -
 +           /symlink/to/create                          -    -               symlink/target/path
 +       L+    /symlink/to/[re]create                      -    -               symlink/target/path
 +           /dev/char-device-to-create               mode user group -           major:minor
 +       c+    /dev/char-device-to-[re]create           mode user group -           major:minor
 +           /dev/block-device-to-create              mode user group -           major:minor
 +       b+    /dev/block-device-to-[re]create          mode user group -           major:minor
 +           /target/to/create                        -    -    -     cleanup-age /source/to/copy
 +           /path-or-glob/to/ignore/recursively      -    -    -     cleanup-age -
 +           /path-or-glob/to/ignore                  -    -    -     cleanup-age -
 +           /empty/dir/to/remove                        -    -               -
 +           /dir/to/remove/recursively                  -    -               -
 +           /path-or-glob/to/adjust/mode             mode user group -           -
 +           /path-or-glob/to/adjust/mode/recursively mode user group -           -
 +           /path-or-glob/to/set/xattrs              -    -    -               xattrs
 +           /path-or-glob/to/set/xattrs/recursively  -    -    -               xattrs
 +           /path-or-glob/to/set/attrs                  -    -               file attrs
 +           /path-or-glob/to/set/attrs/recursively      -    -               file attrs
 +           /path-or-glob/to/set/acls                -    -    -               POSIX ACLs
 +       a+    /path-or-glob/to/append/acls                -    -               POSIX ACLs
 +           /path-or-glob/to/set/acls/recursively    -    -    -               POSIX ACLs
 +       A+    /path-or-glob/to/append/acls/recursively -    -    -               POSIX ACLs
 +...
 +</code>
  
 ----- -----
 Copyright © 2024 Hugh Norris. Copyright © 2024 Hugh Norris.
Menu