Station MinuitPortail personnel de révision

IFT-2001 — Systèmes d’exploitationAutomne 2026

Semaine 3 — Processus et appels système

15. Laboratoire 02 — scripts et contrôle de processus

LECTURE 18 / 236 repèresSynthèse avec omissions acceptées

15. Laboratoire 02 — scripts et contrôle de processus

15.1 Syntaxe Bash

  • $0 est le nom du script; $1, $2, etc. sont les arguments; $@ représente l'ensemble;
  • une affectation ne met pas d'espaces autour de =;
  • les guillemets doubles permettent l'expansion, les guillemets simples la désactivent;
  • $(commande) substitue la sortie d'une commande;
  • [ condition ], if, for, while, tableaux et fonctions structurent le script.

15.2 Exercice 15 — test d'un serveur

Le script :

  1. se place dans ~/server;
  2. lance python3 -m uvicorn main:app &;
  3. sauvegarde le PID dans server_pid=$!;
  4. définit une fonction exécutant kill $server_pid;
  5. enregistre cette fonction avec trap ... EXIT;
  6. attend brièvement;
  7. exécute curl localhost:8000;
  8. retourne 0 si le serveur répond, 1 sinon.

trap garantit le nettoyage même lors d'une sortie anticipée. $! n'est pas le PID du shell : c'est le PID du dernier processus lancé en arrière-plan.

15.3 Configuration du shell

.bashrc est lu lors du démarrage d'un shell interactif et peut définir des alias, des fonctions, des variables d'environnement et l'invite PS1. Un alias raccourcit une commande, par exemple alias ll='ls -alF'; il peut aussi masquer la commande réellement exécutée et doit donc rester compréhensible.

PATH est une liste ordonnée de répertoires séparés par :. Le shell retient le premier exécutable correspondant au nom demandé. Pour ajouter un dossier sans écraser la configuration existante :

Code (bash) · sélectionner pour copier

export PATH="$PATH:$HOME/.bin"

Des alias Git peuvent être placés dans .gitconfig pour abréger status, add, commit, push, checkout ou des formats de journal. Ils ne changent pas la sémantique Git et ne doivent pas remplacer la compréhension des commandes développées.

15.4 Exercice 16 — retour Git automatisé

Le script exécute test.sh, mémorise son statut, puis répète tant que celui-ci est non nul. Après un échec, il appelle une fonction effectuant git reset HEAD~1 --hard; après un succès, il termine avec exit 0.

Cette boucle met en œuvre un contrôle par rétroaction : tester, observer, modifier, retester. git reset --hard détruit les modifications locales et déplace l'état du dépôt; il doit rester limité au dépôt artificiel de l'atelier.

15.5 Ce que vérifient les scripts de correction

Les corrections contrôlent les chemins et contenus exacts, les permissions d'exécution, la présence ou l'absence de fichiers, le nombre de .out, les pipelines, les résultats TSV et les codes de retour du test serveur. L'exercice 16 vérifie surtout que le serveur final répond; il ne prouve pas à lui seul que toute la boucle Git est élégante ou robuste.

Retour au sommaire de l’unitéHaut de page
Récupérer manuellement les données locales

Copier séparément les données ci-dessous dans des fichiers texte avant de fermer la page ou de modifier le stockage. Une valeur illisible ou incompatible reste en place. Aucun effacement ni rétablissement écrasant n’est effectué automatiquement. L’export/import JSON est disponible sur la page Progression du cours. Cette récupération séparée reste utile pour une valeur brute ou un conflit.

Clé de ce cours : . Format v1 porté par cette clé; dates UTC et identifiants durables.

Si l’accès est refusé, la valeur persistée peut rester inaccessible. Réautoriser le stockage dans le navigateur puis rouvrir ce cours permet de la relire. Une réinitialisation exige une décision explicite après récupération; aucune commande de suppression n’est proposée ici. Les données restent sur cette origine et cet appareil, sans transfert automatique.