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\; |