Remonter Suivant

Un travail = exécution d'une commande + facturation

Un travail à exécuter est identifié par les paramètres suivants :
COMMAND
le nom d'une commande Unix devant être exécuter, avec ses options et paramètres ;
DIRECTORY
le répertoire absolu dans lequel l'exécution de la commande doit avoir lieu ;
OUTPUT
le nom d'un ficher dans lequel les affichages de l'exécution de la commande sont redirigés ;
USERNAME
le nom de connexion (login) de l'utilisateur pour le compte duquel la commande sera exécutée ;
FORMULA
le nom de la formule de calcul du coût qui sera imputé à l'exécution de la commande en fonction des ressources utilisées.
La facturation de l'exécution d'un travail consiste

Identification des ressources

La commande time (en fait la commande /usr/bin/time) exécute une commande donnée en paramètre et évalue les ressources employées par son exécution. L'option -f de time précise le format dans lequel le résultat doit être affiché. Les conversions suivantes seront utilisées :
%U
désigne le nombre de secondes CPU passées par le processus en mode utilisateur ;
%S
désigne le nombre de secondes CPU passées par le processus en mode noyau ;
%I
désigne le nombre de lectures depuis un fichier ;
%O
désigne le nombre d'écritures dans un fichier.
comme dans l'exemple de session Bourne-shell
% format=" user: %U \n system: %S \n input: %I \n output: %O"
% /usr/bin/time -f "$format" cp -R /boot /root/boot
 user: 0.00
 system: 0.08
 input: 125
 output: 125
%

Application d'une formule de calcul

L'application d'une formule de calcul consiste à exécuter la commande du répertoire $FORMULA_DIR (variable d'environnement définie, à défaut /var/lib/fact/formula/) correspondant au nom de la formule en lui passant en paramètre les quatre valeurs Cette commande va afficher le coût correspondant à l'utilisation de ces ressources. Par exemple :
% $FORMULA_DIR/h_creuses 0.00 0.08 125 125
0.0023
% 

Liste de travaux à exécuter

Notre commande de facturation fact est paramétrée par un fichier de configuration. Un fichier de configuration est constitué d'une suite de sections.

Il existe une section générale et une section par travail à exécuter et facturer. La section générale est placée en début du fichier de configuration. Le début de la section relative à un travail de nom test est marquée par une ligne
[test]
Une section est formée de lignes de la forme
parameter = value
Les lignes vides (i.e. ne comportant que des espaces) et les lignes dont le premier caractère significatif est un dièse # sont ignorées.

Un fichier de configuration produit deux informations :
  1. Une liste de travaux pouvant être exécutés et facturés.
  2. Pour chacun des travaux, la valeur des paramètres l'identifiant. Pour un travail, la valeur d'un paramètre donné est définie dans la section relative au travail ; à défaut dans la section principale.
Ainsi l'exemple de fichier de configuration fact.cfg
# fact.cfg
# Fichier de configuration pour un premier test de ma commande fact

# le répertoire d'exécution par défaut 
DIRECTORY = /tmp
# l'utilisateur par défaut 
USERNAME = nobody
# la sortie par defaut 
OUTPUT = /dev/null

# un travail pour le compte d'un utilisateur
[calcul]
COMMAND = /home/duchmol/bin/compute_pi 1000000
USERNAME = duchmol
DIRECTORY = /home/duchmol
OUTPUT = /home/duchmol/pi.txt
FORMULA = h_creuses

# un travail utilisant des paramètres par défaut
[sauvegarde]
COMMAND = /usr/local/scripts/save_users 
FORMULA = root_admin

identifie deux travaux calcul et sauvegarde. Le travail sauvegarde sera exécuté dans le répertoire /tmp et facturé à nobody.

Architecture de nos développements... donc de l'examen

Nous allons développer une commande fact en Bourne-shell. Les commandes d'évaluation des formules du répertoire $FORMULA_DIR seront développées en C.


Remonter Suivant