====== Planification de Tâches dans Linux ======
TRADUCTION en cours --- //[[wiki:user:cedric|Cedric M.]] 2015/09/11 01:52//
=====Introduction=====
Cet article traite de certains outils utilisés dans un système Linux pour planifier des tâches à exécuter automatiquement à des intervalles de temps spécifiques ou à un moment donné. Cet article ne détaillera pas les commandes en profondeur; il est juste une brève introduction à l'utilisation de ces commandes. Lisez les HOWTOS individuels de chaques commandes pour plus de précisions sur leurs options.
Quelques daemons Linux/UNIX de planification de tâches :
NdT: Les liens suivants font référence aux versions originales.
* ''[[howtos:software:at|at]]'' -- planification de tâches unique
* ''[[howtos:software:cron|cron]]'' -- le planificateur périodique le plus utilisé
* ''[[howtos:software:anacron|anacron]]'' -- anachronistic cron; a periodic scheduler that doesn't rely on the system being left on 24x7
===== Utiliser at=====
La commande **//at//** permet à un utilisateur d'exécuter des commandes ou des scripts à une date (obligatoire) et heure (facultatif) spécifiques. La commande peut être passé sur l'entrée standard, en redirection ou dans un fichier.
darkstar:~% at
===== at en mode Interractif =====
Utiliser la commande **//at//** avec l'entrée standard (avec le clavier) est un petit peu plus compliqué que de taper une ligne de commande au prompt. La commande utilise un "sub-shell" pour rassembler les information demandées. Une fois que l'entrée de la commande d'information est complète, Ctrl-D (EOT) signifiera la fin de l'entrée. L'argument **//-m//** spécifie qu'un message mèl sera envoyé à l'utilisateur lorsque le job sera terminé, à moins qu'une sortie ait été créée.
darkstar:~% at 12:01 -m
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> ./my_script.sh
at>
job 4 at 2015-06-22 12:01
darkstar:~%
=====File-driven at=====
Commands can also be contained within a file and run by **//at//**:
darkstar:~% at 12:32 -m -f /usr/local/bin/my_script.sh
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
job 8 at 2015-06-22 12:10
The **-m** flag will email the user after completion of the command; the **-f** flag specifies the command will read the job from a file, not from standard input. After the command is typed in (and the appropriate warning is displayed), the **//at//** job number((As distinct from a process ID (PID) known to the operating system)) is displayed.
=====at Internal Scheduling=====
The job numbers provided after a command is typed in, or when a file is read, allow the user to know which internal job will be run in sequential order. If a user wants to delete a specific task, all that needs to be known is this internal job number. To remove the job, the command **//atrm//** (**__at__ __r__e__m__ove**) is used:
darkstar:~% at -l
7 2015-06-22 12:10 p tux
8 2015-06-22 12:15 p root
The command **//atq//** (**__at__ __q__ueue**) is the same as **//at -l//**:
darkstar:~% atq
7 2015-06-22 12:10 p tux
8 2015-06-22 12:15 p root
To remove the user job, use **//atrm//** with the job number:
darkstar:~% atrm 7
=====Using cron=====
**//cron//** is a daemon that runs tasks in the background at specific times. For example, if you want to automate downloads of patches on a specific day (Monday), date (2 July), or time (1300), **//cron//** will allow you to set this up in a variety of ways. The flexibility inherent in **//cron//** can allow administrators and power users to automate repetitive tasks, such as creating backups and system maintenance.
**//cron//** is usually configured using a //crontab// file. The following command will open your user account //crontab// file:
darkstar:~% crontab -e
To edit the system-level //crontab//, first log into the root account:
darkstar:~# crontab -e
If your system has **//sudo//** installed, type in:
darkstar:~% sudo crontab -e
The //crontab// file syntax is:
# * * * * * command to execute
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── day of week (0 - 6) (Sun(0) /Mon (1)/Tue (2)/Wed (3)/Thu (4)/Fri (5)/Sat (6))
# │ │ │ └────────── month (1 - 12)
# │ │ └─────────────── day of month (1 - 31)
# │ └──────────────────── hour (0 - 23)
# └───────────────────────── min (0 - 59)
Using an asterisk in any placeholder location, will match any value. For example, the following will run //example_script.sh// at noon (1200) everyday during the first three months of the year:
#For more information see the manual pages of crontab(5) and cron(8)
#
# min hr day month weekday command
#
#
0 11 * 1-3 * /home/user/example_script.sh
=====Using anacron=====
**//anacron//** is not installed in Slackware by default.((See [[http://slackbuilds.org/repository/13.37/system/anacron/|Slackbuilds.org]] for more information on **//anacron//** on Slackware))
**//anacron//** is unique from **//cron//** in the respect that it does not expect the operating system to be running continuously like a 24x7 server. If the time of execution passes while the system is turned off, **//anacron//** executes the command automatically when the machine is turned back on. The reverse is **not** true for **//cron//** - if the computer is turned off during the time of scheduled execution, **//cron//** will not execute the job. Another key difference between **//anacron//** and **//cron//** is the minimum chronological "granularity" - **//anacron//** can only execute jobs by //day//, versus the ability of **//cron//** to execute by the //minute//. Finally, **//anacron//** can __only__ be used by root, while **//cron//** can be used by root and normal users.
====== Sources ======
* Initialement écrit par [[wiki:user:vharishankar | vharishankar]]
* Contributions de [[wiki:user:mfillpot |mfillpot]], [[wiki:user:tdrssb |tdrssb]]
* crontab d'exemple modifiée de [[en.wikipedia.org/wiki/cron]]
{{tag>translation_in_progress fr:howtos task_scheduling needs_attention author_vharishankar author_mfillpot translator_cedric}}