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.