diff --git a/lib/uinst/rootconf b/lib/uinst/rootconf index c83f89f..b3f117c 100644 --- a/lib/uinst/rootconf +++ b/lib/uinst/rootconf @@ -71,3 +71,13 @@ etitle "Installation de /etc/init.d/kvm-stop-all" \ [ -n "$openvz_service" ] && etitle "Installation de /etc/init.d/openvz-fix-etchosts" \ "$scriptdir/../init.d/install-openvz-fix-etchosts" + +etitle "Installation des répertoires pour uscrontab" +if mkdir -p /var/uscrontab/crontabs; then + chmod 1777 /var/uscrontab/crontabs +else + eerror "Impossible de créer le répertoire /var/uscrontab/crontabs" +fi +eend + +exit 0 diff --git a/uscrontab b/uscrontab index 782f1b8..fe2e831 100755 --- a/uscrontab +++ b/uscrontab @@ -6,13 +6,22 @@ function display_help() { uecho "$scriptname: lancer une suite de commande en respectant une planification de type cron USAGE - $scriptname [options] /path/to/crontab - $scriptname -l [/path/to/crontab] + $scriptname [options] [/path/to/crontab] + $scriptname -e [/path/to/crontab] + $scriptname -l 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. +Si aucun fichier n'est spécifié, fusionner s'il existe le fichier + $USCRONTAB_DEFAULT_FILE +avec chacun des fichiers du répertoire + $USCRONTAB_DEFAULT_DIR +puis exécuter le fichier résultat avec le nom virtuel + $USCRONTAB_DEFAULT +note: le nom virtuel est utilisé pour le verrouillage avec --lock + 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 dans un format particulier, qui sont analysées et traitées dans l'ordre. @@ -157,17 +166,25 @@ Les lignes commençant par # sont des commentaires et sont ignorées OPTIONS -A, --install - Installer une planification toutes les minutes de ce script dans la - crontab de l'utilisateur. L'argument /path/to/crontab est requis. + Installer une planification toutes les minutes du script dans la crontab + de l'utilisateur. Si l'argument /path/to/crontab n'est pas spécifié, + c'est une planification générique qui exécute les fichiers par défaut. -R, --uninstall - Désinstaller la planification toutes les minutes de ce script du crontab - de l'utilisateur. L'argument /path/to/crontab est requis, et seule cette - instance est désinstallée le cas échéant. + Désinstaller la planification toutes les minutes du script du crontab de + l'utilisateur. Si l'argument /path/to/crontab est spécifié, cette + instance est désinstallée. Sinon, ne désinstaller que la planification + générique. + -e, --edit + Lancer un editeur pour modifier la crontab spécifiée. Si aucun fichier + n'est spécifié, éditer $USCRONTAB_DEFAULT_FILE -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 son exécution a été planifiée. + Si l'argument /path/to/crontab est spécifié, afficher le contenu de ce + fichier. Sinon, lister les contenus des fichiers crontab qui sont + exécutés avec la planification actuelle. Si une planification générique + est installée, afficher le contenu du fichier + $USCRONTAB_DEFAULT_FILE + et chacun des fichiers du répertoire + $USCRONTAB_DEFAULT_DIR -n, --fake Afficher au lieu de les exécuter les commandes qui doivent être lancées @@ -201,6 +218,10 @@ OPTIONS AVANCEES USCRONTAB_CTLINE="* * * * * $script" USCRONTAB_LOCKDELAY=8 USCRONTAB_STOPEC=101 +USCRONTAB_BASEDIR=/var/uscrontab +USCRONTAB_DEFAULT_FILE="$USCRONTAB_BASEDIR/crontabs/$USER" +USCRONTAB_DEFAULT_DIR="$USCRONTAB_BASEDIR/$USER.d" +USCRONTAB_DEFAULT="$USCRONTAB_BASEDIR/$USER" action=run lockfile=auto