support d'une même planification pour plusieurs commandes

This commit is contained in:
Jephté Clain 2013-10-02 14:11:47 +04:00
parent b0f00b2f34
commit d931ee2f8b
2 changed files with 34 additions and 7 deletions

View File

@ -130,6 +130,7 @@ function ctmatch(ctval, ref, parts, part, i, j, start, end, step, o
end = start end = start
} }
# tester si ça matche # tester si ça matche
#print "start=" start ", end=" end ", step=" step", ref=" ref #DEBUG
for (j = start; j <= end; j += step) { for (j = start; j <= end; j += step) {
if (j == ref) { if (j == ref) {
ok = 1 ok = 1
@ -146,11 +147,12 @@ BEGIN {
ctref = refM " " refH " " refdom " " refmon " " refdow ctref = refM " " refH " " refdom " " refmon " " refdow
print "##now: " ctref print "##now: " ctref
matches = 0 match_ctline = 0
match_indented = 0
} }
/^(export[ \t]+)?[a-zA-Z_][a-zA-Z0-9_]*[-+%#]=/ { /^(export[ \t]+)?[a-zA-Z_][a-zA-Z0-9_]*[-+%#]=/ {
# manipulation de variables PATH # manipulation de variables de type PATH
match($0, /^(export[ \t]+)?([a-zA-Z_][a-zA-Z0-9_]*)([-+%#])=(.*)$/, parts) match($0, /^(export[ \t]+)?([a-zA-Z_][a-zA-Z0-9_]*)([-+%#])=(.*)$/, parts)
name = parts[2] name = parts[2]
type = parts[3] type = parts[3]
@ -182,6 +184,7 @@ BEGIN {
M = $1; H = $2; dom = $3; mon = $4; dow = $5 M = $1; H = $2; dom = $3; mon = $4; dow = $5
sub(/^[ ]*[^ ]+[ ]+[^ ]+[ ]+[^ ]+[ ]+[^ ]+[ ]+[^ ]+[ ]*/, "", $0) sub(/^[ ]*[^ ]+[ ]+[^ ]+[ ]+[^ ]+[ ]+[^ ]+[ ]+[^ ]+[ ]*/, "", $0)
if (!match_ctline) match_indented = 0
ctline = M " " H " " dom " " mon " " dow ctline = M " " H " " dom " " mon " " dow
gsub(/\*/, "0-59", M) gsub(/\*/, "0-59", M)
@ -201,12 +204,21 @@ BEGIN {
if (Mok && Hok && monok && (domok || dowok)) { if (Mok && Hok && monok && (domok || dowok)) {
print "##matches: " ctline print "##matches: " ctline
matches = 1 match_ctline = 1
match_indented = 1
} }
if (matches && $0 != "") { if (match_ctline && $0 != "") {
print "__ctexec " quote_value($0)
match_ctline = 0
}
next
}
/^[ \t]+/ {
if (match_indented) {
# il faut matcher les commandes indentees
sub(/^[ \t]+/, "", $0)
print "__ctexec " quote_value($0) print "__ctexec " quote_value($0)
matches = 0
} }
next next
} }

View File

@ -75,12 +75,27 @@ Les lignes commençant par # sont des commentaires et sont ignorées
Certaines extensions par rapport à la syntaxe de crontab sont autorisées. Il Certaines extensions par rapport à la syntaxe de crontab sont autorisées. Il
est en particulier possible de spécifier plusieurs planifications pour une est en particulier possible de spécifier plusieurs planifications pour une
seule commande. Par exemple, la ligne suivante permet d'exécuter 'command' seule commande. Par exemple, les lignes suivantes permettent d'exécuter
toutes les heures ET à 1h05: 'command' toutes les heures ET à 1h05:
0 * * * * 0 * * * *
5 1 * * * command 5 1 * * * command
Il est aussi possible d'utiliser la même planification pour plusieurs
commandes sans devoir répéter la définition de la planification. Les lignes
suivantes planifient command1 et command2 toutes les heures:
0 * * * * command1
command2
Pour être prise en compte, la ligne command2 doit commencer par au moins un
espace ou une tabulation. Pour la lisibilité, la syntaxe suivante est
supportée aussi:
0 * * * *
command1
command2
== Fonctions disponibles == == Fonctions disponibles ==
La fonction check_pidfile() est disponible, et permet de vérifier qu'une La fonction check_pidfile() est disponible, et permet de vérifier qu'une