source: trunk/at-cron/at-cron.tex @ 225

Last change on this file since 225 was 225, checked in by nanardon, 15 years ago
  • start queue batch
File size: 7.7 KB
Line 
1% $Id: perlexercises.tex 187 2008-09-05 02:43:56Z nanardon $
2\documentclass[a4paper,12pt]{article}
3\usepackage[frenchb]{babel}
4\usepackage[T1]{fontenc}
5\usepackage{moreverb}
6\usepackage{graphicx}
7
8\title{At \& Cron}
9\author{Olivier Thauvin}
10\date{\today}
11
12\begin{document}
13
14\maketitle
15
16\tableofcontents{}
17
18\section{Cron}
19
20Cron permet est un démon qui va s'occuper de lancer des tâches à intervalle
21régulier.
22
23\subsection{La crontab}
24
25
26Cron utilise plusieurs fichiers de configuration, le principal est
27\verb+/etc/crontab+, mais celui nous interesse peu car son utilisation
28est réservé au super utilisateur (\verb+root+).
29
30\subsubsection{Format}
31
32Les \verb+crontab+ sont des fichiers textes où chaque ligne est
33soit une variables d'environement à définir, sous la forme
34\begin{verbatim}
35MAILTO=moi
36\end{verbatim}
37soit une tâche à executer:
38\begin{verbatim}
390 * * * * dosomething
40\end{verbatim}
41soit un commentaire, ces dernières commençant par un \verb+#+.
42
43\paragraph{format des tâches}
44Chaque tâche à executer est spécifiée par une série de 5 valeurs qui
45définissent
46le moment de leur lancement et de la commande à executer.
47
48Les 5 valeurs sont (par ordre)
49\begin{itemize}
50\item les minutes (0 à 59),
51\item les heures (0 à 23),
52\item les jours du mois (1 à 31),
53\item les mois (1 à 12),
54\item les jours de la semaine (0 à 7),
55\end{itemize}
56
57Un observateur attentif me fera remarquer qu'il y a 8 valeurs pour les 7 jours
58de la semaine, effectivement, le dimanche peut être spécifié soit par un 0, soit
59par un 7.
60
61Pour chaque paramètre, différentes valeur peuvent spécifié séparé par des
62virgule, un interval est précisé en séparant deux valeur par un tiret,
63de plus une \verb+*+ remplacer n'importe quelle valeur.
64
65Ainsi:
66\begin{verbatim}
670 * * * * dosomething
68\end{verbatim}
69lancera l'application 'dosomething' lorsque les minutes seront 0, pour n'importe
70quels heures, jour, moi, soit toutes les heures.
71
72\begin{verbatim}
7330 12 * * 1-5 echo 'va manger'
74\end{verbatim}
75vous rappelera par mail d'aller manger les jours ouvrés.
76
77\paragraph{Nota Bene}
78Il existe enfin un dernière forme de notation pour préciser un interval sous
79la forme \verb+/x+, qui indique que la tâche doit lancer avec un interval de
80\verb+x+:
81\begin{verbatim}
82*/5 * * * * dosomething
83\end{verbatim}
84lancera 'dosomething' toutes les 5 minutes. Malheureusement cette notation
85n'est pas valable avec tout les démons cron (elle fonctionne en général
86sous linux). Si vous tenez à être portable préférer la notation
87\begin{verbatim}
880,5,10,15,20,25,30,35,40,45,50,55 * * * * dosomething
89\end{verbatim}
90certe moins commode.
91
92\subsubsection{Edition de la crontab}
93
94Le simple utilisateur ne peut editer directement les fichiers de configuration,
95mais les outils fournis par cron permettent à chacun d'avoir sa propre
96\verb+crontab+.
97
98\paragraph{injection du fichier}
99
100Pour se faire vous devez éditer votre future \verb+crontab+, pour se faire
101il suffit d'editer un fichier avec votre editeur favoris. Une fois votre
102\verb+crontab+ terminée, il faut l'injecter avec le programme \verb+crontab+:
103
104\begin{verbatim}
105crontab ./macrontab
106\end{verbatim}
107
108\verb+./macrontab+ est le fichier contenant vos future tâches à lancer.
109
110Evidement celle-ci va remplacer l'éventuelle liste des tâches que vous pouviez
111avoir. Aussi vous prendez soin avant de d'abord récupérer votre précédente
112configuration:
113
114\begin{verbatim}
115crontab -l > ./macrontab
116\end{verbatim}
117
118\verb+crontab -l+ sort votre \verb+cron+ existante, celle est redirigée vers
119le fichier \verb+./macrontab+.
120
121\paragraph{edition directe}
122
123La première méthode d'edition de sa \verb+crontab+ est assez peu conviviale.
124L'outils \verb+crontab+ dispose de l'option \verb+-e+ qui permet d'éditer votre
125\verb+crontab+ et de la reacharger dans la foulée. Par défaut l'éditeur est
126\verb+vi+, mais comme de nombreux outils, vous pourrez spécifier votre editeur
127favori dans la variable d'envirronement \verb+EDITOR+.
128
129\section{At}
130
131Le démon at permet de programmer l'éxecutation d'une tâche sous deux formes:
132l'éxecution programmée à un moment donné et la mise en attente (queue batch).
133
134\subsection{Definition de la tâche}
135Quelque soit le mode, les commandes at prendons comme listes des choses à
136executer ce qui arrive sur l'entrée standard, et sans autre précision, les
137executerons avec soit le contenu de la variable d'environnement \verb+SHELL+
138si celle-ci est définie, soit votre shell, soit en dernier recours
139\verb+/bin/sh+.
140
141\subsection{Tâche programmée}
142
143L'utilisation la plus courante de at est de programmée une action
144pour un heure et éventuellement un date donnée. Cette tâche ne sera
145executée qu'une seule fois.
146
147La programmation d'une tâche se fait avec le programme \verb+at+ avec pour
148argument l'heure et éventuellement la date si elle ne doit pas être lancée
149dans les prochaines 24 heures.
150
151\verb+at+ accepte plusieurs format de dates et heure, je ne parlerais ici
152que de ceux qui me paraissent les moins ambigus, rappelez-vous que les
153anglophones ont la sale habitude d'exprimer les dates sous la forme
154\verb+MOIS/JOURS/ANNEE+\ldots, du coup, vos voeux de bonne année envoyés
155le 7/1 risquent d'arriver au début des vacances scolaires d'été.
156
157\subsubsection{heure et date absolues}
158
159\paragraph{L'heure}
160Le premier argument passé à \verb+at+ sera donc l'heure, sous la forme
161\verb+HH:MM+. Rien de bien sorcier ici jusque là.
162
163Si vous préférez un format sur 12 heures au lieu de 24, at accept les
164suffixent \verb+am+ et \verb+pm+, comme par exemple \verb+8H30pm+.
165
166\paragraph{La date}
167Elle passé en second argument et est optionnelle, si celle-ci n'est pas
168précisée, at considéra que la tâche doit être lancée dans les prochaines 24
169heures.
170
171Le seul format qui respecte nos habitudes de formulation d'une date utilise
172le point comme séparateur: \verb+JJ.MM.AA+, attention, en utilisant le slash
173(\verb+/+) comme séparateur, \verb+at+ considéra que la date est au format
174anglo-saxon (le mois en premier).
175
176Plus concrètement, Noël prochain sera noté \verb+25.12.2008+.
177
178\subsubsection{les date et heures relatives}
179
180Il est également possible de préciser le moment de l'execution de manière
181plus humaine, en indiquant soit une durée à partir du moment où vous taper
182la commande (dans une heure), soit à l'aide de mot clef tel que 'demain'.
183
184Une durée relative est indiquée par la formule clef \verb$now +$, suivi
185du la période sous la forme \verb+NB unité+. Les unités acceptées sont:
186\begin{itemize}
187\item minutes,
188\item hours,
189\item days,
190\item weeks.
191\end{itemize}
192
193Prenons par exemple une tache à lancer dans une demi heure:
194\begin{verbatim}
195at now + 30 minutes
196\end{verbatim}
197
198Enfin \verb+at+ supporte le mot clef tel "tomorrow" qui veut dire "demain".
199
200\subsection{queue batch}
201
202En dehors de la programmation à heure donnée, at permet également de gérer
203une file d'attente rudimentaire de tâche à executer.
204
205Chaque tâche sera lancé dès lors que la charge (le load) de la machine descend
206en dessous d'un certain seuil, en attendant 60 secondes entre chaque.
207
208Cette méthode est très éfficace et pratique pour donner du travail à
209l'ordianteur sans pour autant rester devant le clavier ni le surcharger.
210
211\paragraph{Le seuil de charge}
212La valeur de charge d'un machine représente le nombre de processeur
213qui serait idéalement necessaire pour accomplir les tâches actuellement
214en cours. La valeur par défaut que \verb+at+ utilise est de 0.8. Ceci pose
215deux problèmes.
216
217D'abord nombre de machine arrivent désormais avec au moins deux unités de
218calculs (coeur), bientôt et certains fabricants ont pour projet d'arriver
219à 64, un indice de charge supérieur à 1 ne veut donc pas forcément dire
220que la machine est surchargée.
221
222Ensuite dans certain cas le système doit gérer beaucoup d'entrée sortie
223sans pour autant que les processeurs ne soient réellement solicités, hors
224ce genre d'activité est pris en compte par l'indice de charge.
225
226\end{document}
Note: See TracBrowser for help on using the repository browser.