Aller au contenu

Rappels des fondamentaux#


Exécution d'un script#

Soit avec l'interpréteur et le script en paramètre

sh nom_fichier

Soit rendre le fichier exécutable puis taper le nom du fichier

Pour que le système comprenne qu'il faut exécuter le script avec un shell, le fichier doit commencer par #!/bin/sh (ou #!/usr/bin/env xxx, avec xxx le nom de votre shell)

chmod u+x nom_fichier
./nom_fichier

Modes d'execution spéciaux#

Interprèter les commandes sans les exécuter

 sh -n nom_fichier

Mode verbeux. Affiche ce qui est lu en entrée

 sh -v nom_fichier

Trace d'exécution. Affiche les lignes telles qu'elles sont interprétées

 sh -x nom_fichier

Fonctionnement des processus#

Fork & Wait#

  • fork : créer un processus enfant à partir d'un processus parent. Ce processus enfant est une copie exacte de son parent à l'instant où il a été créé.
  • wait : indiquer au processus parent d'attendre la fin de l'exécution du processus enfant.

Exec & Exit#

  • exec : exécuter un programme en remplaçant le processus parent.
  • exit : terminer le processus courant.

Fonctionnement des processus#

Propriétés#

  • processus : un programme en cours d'exécution:
    • pid : identifiant de processus
    • ppid : identifiant du processus parent
    • pgid : identifiant du groupe de processus
    • environement

Code de retour#

Un processus qui s'arrète fournit une valeur (code de retour) qui indique comment l'exécution s'est déroulée.

  • 0 : le processus s'est déroulé correctement,
  • autre valeur : il y a eu un problème (ou un cas spécial).

Accès aux fichiers#

Rappels sur le VFS et les fichiers ouverts (vus par le kernel)#

Les descripteurs (fichiers vus par les processus)#

  • descripteurs : numéro des fichiers ouverts attachés aux processus:
    • stdin : descripteur d'entrée standard
    • stdout : descripteur de sortie standard
    • stderr : descripteur d'erreur standard

Traitement des commandes avant l'exécution#

  • Les commandes sont lues et évaluées par le shell avant d'être exécutées
  • Le shell évalue le globbing
  • Le shell substitue les variables
  • Le shell gère les flux (pipes, descripteurs, etc.)

... avant de lancer les commandes !


Globing (rappels)#

* n'importe quelle chaîne de caractères
? n'importe quel caractère
[ ... ] n'importe quel caractère décrit entre les crochets

Le globbing est évalué par le shell AVANT l'exécution des commandes.