renommer le script

ajouter l'option -l
This commit is contained in:
Jephte CLAIN 2013-09-29 16:58:08 +04:00
parent 83db4f1009
commit fec398a851
1 changed files with 46 additions and 14 deletions

View File

@ -6,19 +6,22 @@ function display_help() {
USAGE
$scriptname [options] /path/to/crontab
$scriptname -l [/path/to/crontab]
Ce script doit normalement être lancé toutes les minutes par une tâche cron. A
chaque lancement, il examine quels scripts doivent être exécutés dans le fichier
crontab spécifié. Ce fichier est composé de lignes d'une des formes suivantes,
qui sont analysées et traitées dans l'ordre:
La première forme du script doit normalement être lancé toutes les minutes par
une tâche cron. Utiliser l'option --install pour ajouter automatique la ligne
dans la crontab de l'utilisateur.
A chaque lancement du script, il examine quels scripts doivent être exécutés
dans le fichier crontab spécifié. Ce fichier est composé de lignes d'une des
formes suivantes, qui sont analysées et traitées dans l'ordre:
# commentaire ignoré
var=\"initialiser une variable\"
minutes hours days months dows command [args]
Quelles que soient les lignes qui sont sélectionnées pour le lancement, elles
sont garanties de s'exécuter sériellement dans l'ordre du fichier, d'où le nom
de ce script.
sont garanties de s'exécuter dans l'ordre du fichier, l'une après l'autre.
Certaines extensions par rapport à la syntaxe de crontab sont autorisées. Il est
en particulier possible de spécifier plusieurs planifications pour une seule
@ -39,12 +42,22 @@ enlèvent /opt/rogue au PATH:
OPTIONS
--install
-A, --install
Installer une planification toutes les minutes de ce script dans la
crontab de l'utilisateur.
--uninstall
crontab de l'utilisateur. L'argument /path/to/crontab est requis.
-R, --uninstall
Désinstaller la planification toutes les minutes de ce script du crontab
de l'utilisateur.
de l'utilisateur. L'argument /path/to/crontab est requis, et seule cette
instance est désinstallée le cas échéant.
-l, --list
Lister les contenus des fichiers crontab dont l'exécution a été
planifiée avec --install
Si /path/to/crontab est spécifié, ne lister le contenu de ce fichier que
si et seulement si son exécution a été planifiée.
-n, --fake
Afficher au lieu de les exécuter les commandes qui doivent être lancées
OPTIONS AVANCEES
--lock LOCKFILE
Inscrire dans le fichier spécifié des informations permettant d'éviter
les invocations simultanées de ce script. Si selon ce fichier, le script
@ -58,8 +71,6 @@ OPTIONS
--lockdelay LOCKDELAY[=$LOCKDELAY]
Changer le nombre d'heures pendant lesquelles on autorise le script a
verrouiller l'exécution avant d'afficher un avertissement.
-n, --fake
Afficher au lieu de les exécuter les commandes qui doivent être lancées
-c, --continuous
Par défaut, ce script s'arrête à la première commande qui retourne avec
une code d'erreur. Avec cette option, ce script ne s'arrête jamais, bien
@ -88,15 +99,36 @@ continuous=
stopec=101
parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
--add,--install action=install \
--remove,--uninstall action=uninstall \
-A,--add,--install action=install \
-R,--remove,--uninstall action=uninstall \
--lock: lockfile= \
--lockdelay: lockdelay= \
-n,--fake fake=1 \
-c,--continuous continuous=1 \
-k:,--stop: stopec=1 \
-l,--list action=list \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
if [ "$action" == "list" ]; then
crontab="$1"; shift
[ -n "$crontab" ] && crontab="$(abspath "$crontab")"
array_from_lines ctfiles "$(crontab -l 2>/dev/null | awkrun script="$script" '$6 == script { print $7 }')"
found=
for ctfile in "${ctfiles[@]}"; do
if [ -z "$crontab" -o "$ctfile" == "$crontab" ]; then
found=1
etitle "$(ppath "$ctfile")"
cat "$ctfile"
eend
fi
done
if [ -n "$crontab" -a -z "$found" ]; then
ewarn "$(ppath "$crontab"): non planifié"
fi
exit 0
fi
crontab="$1"; shift
[ -n "$crontab" ] || die_with "Vous devez spécifier le fichier crontab" display_help
[ -f "$crontab" ] || die "$crontab: fichier introuvable"