| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| elearning:workbooks:redhat:rh134:l101 [2024/10/21 10:42] – created admin | elearning:workbooks:redhat:rh134:l101 [2024/10/21 15:02] (Version actuelle) – admin |
|---|
| 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 |
| * 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===== |
| 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 |
| |
| <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> |
| |
| |
| <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 |
| |
| <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> |
| |
| <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 |
| |
| <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> |
| 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==== |
| |
| <code> | <code> |
| [root@centos8 ~]# cat /etc/anacrontab | [root@redhat9 ~]# cat /etc/anacrontab |
| # /etc/anacrontab: configuration file for anacron | # /etc/anacrontab: configuration file for anacron |
| |
| |
| #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 | 1 5 cron.daily nice run-parts /etc/cron.daily |
| 7 25 cron.weekly nice run-parts /etc/cron.weekly | 7 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> |
| |
| |
| <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 |
| # 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/type" 2>/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 |
| |
| <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 |
| ====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> |
| |
| |
| <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\; |