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 USAGE
$scriptname [options] /path/to/crontab $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 La première forme du script doit normalement être lancé toutes les minutes par
chaque lancement, il examine quels scripts doivent être exécutés dans le fichier une tâche cron. Utiliser l'option --install pour ajouter automatique la ligne
crontab spécifié. Ce fichier est composé de lignes d'une des formes suivantes, dans la crontab de l'utilisateur.
qui sont analysées et traitées dans l'ordre:
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é # commentaire ignoré
var=\"initialiser une variable\" var=\"initialiser une variable\"
minutes hours days months dows command [args] minutes hours days months dows command [args]
Quelles que soient les lignes qui sont sélectionnées pour le lancement, elles 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 sont garanties de s'exécuter dans l'ordre du fichier, l'une après l'autre.
de ce script.
Certaines extensions par rapport à la syntaxe de crontab sont autorisées. Il est Certaines extensions par rapport à la syntaxe de crontab sont autorisées. Il est
en particulier possible de spécifier plusieurs planifications pour une seule en particulier possible de spécifier plusieurs planifications pour une seule
@ -39,12 +42,22 @@ enlèvent /opt/rogue au PATH:
OPTIONS OPTIONS
--install -A, --install
Installer une planification toutes les minutes de ce script dans la Installer une planification toutes les minutes de ce script dans la
crontab de l'utilisateur. crontab de l'utilisateur. L'argument /path/to/crontab est requis.
--uninstall -R, --uninstall
Désinstaller la planification toutes les minutes de ce script du crontab 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 --lock LOCKFILE
Inscrire dans le fichier spécifié des informations permettant d'éviter Inscrire dans le fichier spécifié des informations permettant d'éviter
les invocations simultanées de ce script. Si selon ce fichier, le script les invocations simultanées de ce script. Si selon ce fichier, le script
@ -58,8 +71,6 @@ OPTIONS
--lockdelay LOCKDELAY[=$LOCKDELAY] --lockdelay LOCKDELAY[=$LOCKDELAY]
Changer le nombre d'heures pendant lesquelles on autorise le script a Changer le nombre d'heures pendant lesquelles on autorise le script a
verrouiller l'exécution avant d'afficher un avertissement. 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 -c, --continuous
Par défaut, ce script s'arrête à la première commande qui retourne avec 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 une code d'erreur. Avec cette option, ce script ne s'arrête jamais, bien
@ -88,15 +99,36 @@ continuous=
stopec=101 stopec=101
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
--add,--install action=install \ -A,--add,--install action=install \
--remove,--uninstall action=uninstall \ -R,--remove,--uninstall action=uninstall \
--lock: lockfile= \ --lock: lockfile= \
--lockdelay: lockdelay= \ --lockdelay: lockdelay= \
-n,--fake fake=1 \ -n,--fake fake=1 \
-c,--continuous continuous=1 \ -c,--continuous continuous=1 \
-k:,--stop: stopec=1 \ -k:,--stop: stopec=1 \
-l,--list action=list \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ 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 crontab="$1"; shift
[ -n "$crontab" ] || die_with "Vous devez spécifier le fichier crontab" display_help [ -n "$crontab" ] || die_with "Vous devez spécifier le fichier crontab" display_help
[ -f "$crontab" ] || die "$crontab: fichier introuvable" [ -f "$crontab" ] || die "$crontab: fichier introuvable"