cron

image

Description

1 March 2026
📌 cron job like project in c, works in the background and runs complex commands that can be added / removed in realtime

Makefile

C

Projet de L3 Informatique – UE Système

PrĂŠsentation

erraid est un système de planification et d’exécution de tâches, inspiré des mécanismes de type cron, permettant : • la création de tâches simples • la combinaison de tâches (séquence, pipeline, conditionnelle) • l’exécution planifiée selon un calendrier • la consultation des sorties standard, erreurs et codes de retour

Le projet repose sur une architecture client / dĂŠmon / scheduler, communiquant via des tubes nommĂŠs (FIFO).

Architecture gĂŠnĂŠrale

Le projet est composĂŠ de trois grandes parties :

1️⃣ Client (tadmor) • Interface en ligne de commande • Envoie des requêtes au démon via des pipes • Permet : • créer une tâche • lister les tâches • supprimer une tâche • afficher stdout / stderr / historique d’exécution

2️⃣ Démon (erraid) • Processus principal • Gère : • les requêtes entrantes • le stockage des tâches • la communication avec le scheduler • Fonctionne en mode démon (optionnel)

3️⃣ Scheduler • Processus fils du démon • Vérifie périodiquement le calendrier • Lance les tâches au moment approprié • Enregistre : • stdout • stderr • dates et codes de retour

. ├── ARCHITECTURE.md ├── AUTHORS.md ├── include │   ├── erraid.h │   ├── exec.h │   ├── logger.h │   ├── protocol.h │   ├── scheduler.h │   ├── serialisation.h │   ├── tadmor.h │   ├── types.h │   └── utils.h ├── Makefile ├── README.md └── src ├── erraid.c ├── exec.c ├── logger.c ├── main.c ├── scheduler.c ├── serialisation.c ├── tadmor.c ├── types.c └── utils.c

Modèle de donnÊes

task

Une tâche est composée de : • un identifiant unique • un calendrier (timing) • une commande (command)

typedef struct task { uint16_t id; timing timing; command *cmd; } task;

command

Les commandes sont représentées sous forme d’arbre, permettant la composition.

Types possibles : • SI : commande simple • SQ : séquence • PL : pipeline • IF : conditionnelle

typedef struct command { uint16_t type; union { simple_command simple; sequence_command sequence; pipeline_command pipeline; if_command if_cmd; }; } command;

Commande conditionnelle (IF)

Une commande conditionnelle représente l’équivalent de :

if CMD_1 ; then CMD_2 ; else CMD_3 ; fi

Structure associĂŠe :

typedef struct { uint32_t cond_count; command **cond;

uint32_t then_count; command **then_cmd;

uint32_t else_count; command **else_cmd; } if_command;

Communication

La communication client ↔ démon se fait via : • erraid-request-pipe • erraid-reply-pipe

Les messages sont sĂŠrialisĂŠs en big-endian.

Exemples d’utilisation

CrÊer une tâche simple

tadmor -c -m 10 echo "Hello"

CrĂŠer une sĂŠquence

tadmor -s 1 2 3

CrĂŠer une commande conditionnelle

tadmor -i 1 2 3

Compilation

make

Auteurs

•	BELKACEMI Abderrahim
•	GRITAR Georgel
•	THIAM Adama