-
Notifications
You must be signed in to change notification settings - Fork 16
/
cron_crontab.txt
193 lines (185 loc) · 12.4 KB
/
cron_crontab.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
CRON_CRONTAB
crontab FICHIER #Fait de FICHIER le crontab de USER (par défaut l'user
#courant). Ecrase le précédent crontab s'il y en a un.
#FICHIER peut être - pour faire référence à l'entrée
#standard
-u STRING #USER devient STRING plutôt que l'user courant. A
#utiliser même pour faire -u root, même si déjà root,
#car sudo est parfois mal reconnu
-l #Imprime le contenu du crontab de USER plutôt que le
#comportement par défaut. FICHIER devient syntaxiquement
#interdit.
-r #Supprime le crontab de USER
-i #Avec -r, demande confirmation avant la suppression
-e #Edite le crontab de USER dans un éditeur de fichier
cron #Lance le daemon cron. Fait automatiquement au démarrage
#par /etc/init.d/
-f #Ne lance pas un daemon en arrière-plan, mais lance cron
#en premier-plan (le shell exécute cron de manière
#ininterrompu jusqu'à extinction du shell ou de cron)
-l #Permet aux noms des crontabs présents dans /etc/cron.d/
#d'inclure un ., à condition :
# - qu'un tiret le suive
# - que ce tiret ne soit pas le dernier caractère
# - qu'un ou plusieurs [:lower:] ou [:digit:] (et
# seulement cela) le suive
-L NOMBRE #Définit le loglevel de cron (1 par défaut). Les
#différentes valeurs sont :
# - 0 : pas de logs
# - 1 : log les démarrage des cron jobs
# - 2 : log également leur extinction
CRONTABS DES USERS ==> #Les crontabs des users sont stockés dans /var/spool/
#cron/crontabs/ Il est recommandé de ne pas les
#modifier directement, contrairement aux crontabs
#système
#Leur nom de fichier correspond au nom de USER.
#L'USER doit bien sûr avoir les droits d'exécuter les
#commandes spécifiées
#Le crontab n'est pas lié au shell qui le crée, et est
#exécuté dans un shell non-interactif (des commandes
#comme un echo ver stdout n'ont donc pas sens)
#
SYNTAXE D'UN CRONTAB #Un crontab est composé de deux parties. Dans la
VARIABLES #première, il est possible de déclarer des variables
D'ENVIRONMENT ==> #d'environnement, pour les modifier le temps de
#l'exécution du crontab.
#VAR=VAL ou VAR = VAL au choix
#Les seuls variables (environment ou autres) définies
#sont par défaut :
# - HOME (de l'user, ou de root pour les crontabs
# système)
# - PWD (même que $HOME)
# - LOGNAME (nom de l'user)
# - PATH = /usr/bin:/bin
# - SHELL = /bin/sh
#Bien considérer que le shell par défaut est sh, et le
#PATH est limité par défaut à /bin et /usr/bin
#Par ailleurs, les variables d'environment ne sont
#pas susbsituées ($HOME reste '$HOME')
#Il faut rajouter la variable DISPLAY=":0" si le script
#exécute une commande telle que zenity
#Dans la deuxième, il y a des commandes crontab.
#
SYNTAXE D'UN CRONTAB #Elles ont six ou sept fields, séparés par whitespace.
COMMANDES, GENERALE ==> #Dans l'ordre :
# - Minute (0 à 59)
# - Heure (0 à 23)
# - Jour du mois (1 à 31)
# - Mois (1 à 12)
# - Jour de la semaine (0 à 7, 0 et 7 étant dimanche)
# - L'USER exécutant la commande (uniquement pour les
# crontabs système)
# - La commmande à exécuter
#
TIMEFIELDS D'UN #Les cinq premiers fields sont des tests effectués
CRONTAB ==> #par cron chaque minute pour déterminer si la
#commande est à exécuter. Les différentes valeurs
#sont :
# - NOMBRE : vrai si le field correspond à NOMBRE
# - STRING : vrai si le field correspond à STRING
# Ne marche que pour les jours de la
# semaine (Sun, Mon, ...) et les mois
# (Jan, Feb, ...). Ne peut pas être
# inclus dans un range (voir ci-dessous)
# ou avoir un /NOMBRE après lui
# - NOMBRE1-NOMBRE2 : vrai si le field est compris
# entre NOMBRE1 et NOMBRE2
# - * : toujours vrai
#De plus :
# - Ajouter /NOMBRE à l'un de ces fields signifie que
# le test sera faux si le field n'est pas un
# multiple de NOMBRE (0 étant un multiple de NOMBRE).
# - On peut rajouter une nouvelle valeur potentielle à
# un field, en l'ajoutant à la suite, séparée d'une
# virgule, par exemple NOMBRE3 NOMBRE1-NOMBRE2,NMBRE4
#Exemple :
# - */3 * * * 0,4 COMMANDES
# exécutera COMMANDES toutes les trois minutes, le
# jeudi et le dimanche
#Exceptions :
# - si les fields jours du mois et jours de la semaine
# ne sont ni l'un, ni l'autre remplis par *, la
# commande s'exécute si l'un OU l'autre des deux
# champs est vrai (et si les trois autres le sont
# aussi bien-sûr)
# - Les cinq premiers champs peuvent être remplacés par
# un seul :
# - @hourly : toutes les heures (comme 0 * * * *)
# - @daily : tous les jours (comme 0 0 * * *)
# - @midnight : même chose
# - @weekly : toutes les semaines (comme 0 0 * * 0)
# - @monthly : toutes les minutes (comme 0 0 1 * *)
# - @yearly : tous les ans (comme 0 0 1 1 *)
# - @annualy : même chose
# - @reboot : à chaque démarrage
#Attention, le crontab met parfois plusieurs secondes,
#voire une minute, à s'activer. De plus, le crontab
#doit être actif au moins 30 secondes avant son
#exécution pour qu'il s'exécute. Ainsi, modifier la date
#pour qu'elle soit juste 5 secondes avant une action
#crontab n'exécutera pas cette action, mais remonter le
#temps 40 secondes avant si.
SYNTAXE D'UN CRONTAB, #COMMANDES a des restrictions, faire attention :
LES COMMANDES ==> # - les séquences d'échappement backslashs, doublement
# échappées (\\\\n ou "\n"), sont possibles. $' ' ne
# fonctionne pas, mais les simples guillements
# permettent d'inclure des séquences d'échappement
# backslash
# - les builtins ne reconnaissent pas les options
# - toutes les expansions sont faites de la même
# manière
# - une seule ligne de commande est possible, et % ou
# \n l'interrompt (faire \% pour un % littéral). Les
# trailings newlines ne fonctionnent pas
CRONTABS, #Il est possible d'inclure des commentaires en faisant
COMMENTAIRES ==> #commençant la ligne par #
CRON ==> #Cron est un daemon lancé au démarrage par /etc/init.d/
#Il s'exécute toutes les minutes et exécutent les
#crontabs :
# - de chaque user, présents dans /var/spool/cron/
# crontabs/, avec un crontab au nom de l'user (tel
# que défini dans /etc/passwd), s'il est actuellement
# connecté
# - du système :
# - avec /etc/crontab.
# - puis ceux présents dans /etc/cron.d/ Les noms
# de ces derniers doivent être composés seulement
# de [:lower:], [:digit:], _ et -
#Modifier de préférence /etc/crontab plutôt que
#/etc/cron.d/
#De plus, il existe quatre répertoires :
# - /etc/cron.hourly/
# - /etc/cron.daily/
# - /etc/cron.weekly/
# - /etc/cron.monthly/
#Ceux-ci ne sont pas des crontabs mais des exécutables
#traditionnels, exécutés par run-parts (voir doc)
#Le premier est exécuté toutes les heures par
#/etc/crontab
#Pour les trois autres :
# - Si anacron n'est pas installé, ils sont exécutés
# tous les jours, semaines et mois par /etc/crontab
# - Si anacron est installé, ils sont exécutés par
# /etc/anacrontab, lui-même exécuté par
# /etc/cron.d/anacron
#Si cron n'est pas lancé (par exemple si le PC est
#éteint), il n'effectue rien de spécial au relancement
#pour vérifier si une exécution n'a pas été loupé
#lorsqu'il était absent (contrairement à anacron)
#Changer un crontab directement avec un éditeur de texte
#modifie le comportement de cron immédiatement (mais
#pour les crontabs des users, préférer la commande
#crontab)
CRON.ALLOW ET CRON. #Si le fichier /etc/cron.allow existe, seuls les
DENY ==> #utilisateurs listés, ligne par ligne, dans ce fichier
#pourront exécuter crontab
#Si le fichier /etc/cron.deny existe, les utilisateurs
#listés dans ce fichier, et absent de /etc/cron.allow,
#ne pourront pas exécuter crontab.
#Deux remarques :
# - Cela concerne l'utilisation de la commande crontab,
# non l'exécution par cron des crontabs eux-mêmes
# - Un utilisateur utilisant sudo sera considéré comme
# cet utilisateur et non comme root