Académique Documents
Professionnel Documents
Culture Documents
Présenté par :
Dr MEZAOUR billel
Ingénieur R&D | Développeur d’application Chez Caplogy
b.mezaour@caplogy.com
www.caplogy.com
Objectifs de cours
Introduction au système Linux
Plan
• Introduction générale
Système d’exploitation ?
Un système d’exploitation (OS pour Operating System) est l’intermédiaire entre les applications
et le matériel
Applications
OS
Matériel physique
Systèmes d’exploitation
❑ Un système d'exploitation est un logiciel qui est dans un appareil électronique, pilote
les dispositifs matériels et reçoit des instructions de l'utilisateur ou d'autres logiciels
ou applications.
Quelques exemples:
Unix, DOS, Windows, Mac OS, Linux, OS/2, BSD, ...
• Attention ! OS ≠ distribution
Distribution : OS + applications et logiciels (éditeurs de texte, explorateur web, jeux …)
🡪 Cette écran peut changer en fonction des versions de Windows ou un autre système
d’exploitation (exemple: MAC)
Une fois que le système est chargé, vous pouvez utiliser vos programmes :
jeux, Internet, logiciels de dessin, de mail, de musique…
Introduction Générale UNIX/Linux 28
UNIX/Linux : Caractéristiques
Système multi-utilisateurs : les ressources du système sont également
partagées entre plusieurs utilisateurs
• Connexions à distance
• Tâches système
UNIX/Linux : Caractéristiques
Système multi-tâches : plusieurs programmes ou commandes exécutées
simultanément
Plan
• Introduction générale
• Il assure
• La manipulation des fichiers : création / destruction, ouverture / fermeture, enregistrement,
déplacement etc.
• L’allocation en mémoire (fichiers de tailles différentes et dynamiques)
• La localisation des fichiers au sein de l’arborescence
• La sécurité et le contrôle des fichiers : partage par différentes programmes, accès
autorisés / non-autorisés 🡪 les droits !
• A chaque fichier sont associés des métadonnées, comme, les droits d’accès
en lecture/écriture, sa taille, qui est le propriétaire …
Introduction Générale Notions de partitions et de systèmes de fichiers 19
proc Système de fichiers virtuel contenant les informations sur le noyau et les processus
Caractères à éviter
Lorsque vous nommez un fichier, il faut éviter certains caractères:
• Les traits d'union en début de nom.
• Les espaces
• Tous les autres caractères spéciaux: !@##%^&*():;"'}{|\<>?~`
Effectuer la gestion de base des fichiers
▪ Les utilisateurs sont identifiés par des UIDs, un entier sur l’intervalle 0 .. 4 294 967 295 (FFFFFFFF).
Les utilisateurs avec un UID=0 sont super-utilisateurs
▪ Les utilisateurs appartiennent à des groupes identifiés par des GIDs, un entier sur l’intervalle 0 .. 4 294
967 295
1. Nom utilisateur
2.Mot de passe encrypté sur 13 caractères, une entrée vide
signifie qu’il n'est pas nécessaire de fournir un mot de passe (dangereux!), le !devant le mot de
passe encrypté signifie que le compte est
bloqué. Le * signifie qu’aucun mot de passe n'a encore été défini
3. Nombre de jours (depuis le 1er Janvier 1970) depuis que le mot de passe a été changé
4.Nombrede jours avant lequel le mot de passe peut être changé (0 signifie que le mot de passe peut être changé
à tout moment)
5. Nombre de jours après lequel le mot de passe doit être changé (entrer
99999 pour signifier que l'utilisateur peut garder son mot de passe indéfiniment)
6. Nombre de jours pendant lesquels avertir l'utilisateur d'un mot de passe sur el point d'expirer (entrer 7 pour une semaine complète)
7. Le nombre de jours après expiration, pendant lesquels le compte est encore actif
8. Le nombre de jours ( depuis le 1er Janvier 1970) que le compte a été désactivé
9. Champ réservé pour utilisation ultérieure
Informations sur les groupes
•Dans le fichier /etc/group, il y a une ligne pour chaque groupe d'utilisateurs. Les mots de
passe encryptés sont dans /etc/gshadow.
•Le format du fichier /etc/group est le suivant:
Les mots de passe des groupes ne sont généralement pas activés tant que tous les membres du
groupe n'ont pas reçu le mot de passe de l'administrateur.
10
Plan
• Introduction générale
▪ 3 types d’utilisateurs:
propriétaire (user)
personnes du mm groupe (group)
les autres (others)
▪ 3 Types de permissions:
Fichier Répertoire
Lecture (r) Afficher le contenu Affichier le contenu
Ecriture (w) modifier Créer/supp fichiers
Exécution (x) Exécuter Traverser
Permissions d'accès
Les permissions par défaut sont:
• 0666 pour la création d'un fichier
• 0777 pour la création d'un dossier
Exemple :
chown -R stage4 /home/stage1
Ceci doit être effectué par root ou le propriétaire, à condition que celui-ci soit membre du
nouveau groupe.
Exemple :
chgrp -R stage4 /home/stage1
Permissions par défaut
Commandes et fichiers
• Les fichiers sont des objets permanents sur des supports permanents,
qui restent sur le support magnétique lors de l’arrêt du système
• Sous UNIX, les répertoires, les programmes, les périphériques sont vus
comme des fichiers
Arborescence de fichiers
Répertoire courant
Répertoire parent
Arborescence de fichiers
Répertoire parent
Exploration de l’arborescence
Commandes et chemins
• cd : changer de répertoire courant (Change Directory)
• pwd : donner le chemin du répertoire courant (Print Work Directory)
Exploration de l’arborescence
Exemples avec $ cd /home/licence/CDA
les commandes cd et pwd $ pwd
/home/licence/CDA
Répertoire courant
Fichiers, processus et flux au travers de l’interprète
de commande
Des commandes pour agir sur les fichiers 48
Exploration de l’arborescence
$ cd ..
Exemples avec $ pwd
les commandes cd et pwd /home/licence
Fichiers, processus et flux au travers de l’interprète
de commande
Des commandes pour agir sur les fichiers 49
Exploration de l’arborescence
$ cd ../cnam
Exemples avec
$ pwd
les commandes cd et pwd /home/cnam
Fichiers, processus et flux au travers de l’interprète
de commande
Des commandes pour agir sur les fichiers 50
Exploration de l’arborescence
• cd : changer de répertoire (Change Directory)
Arborescence de fichiers
• Dans tous les systèmes, il existe 2 types de fichiers
• Les fichiers caractères (fichiers textes) qui dépendent de l’encodage utilisé par la système de fichiers
• Les fichiers binaires : images, applications…
• L’extension (caractères après le point) informe sur l’application qui a créé le fichier (.c, .ps, .tar,
.txt …)
Plan
• Introduction générale
Installation
• Pour les utilisateurs de Windows 10
• Possibilité d’installer comme un terminal avec l’application Ubuntu dans l'OS Windows
Solutions de VM
○ Partage de ressources entre plusieurs processus, avec une possible exclusion mutuelle.
● Les communications entre processus (échanger des données qui ne sont pas partagées)
● La synchronisation entre processus (ne pas lire des données qui ne sont pas complètement écrite)
● Il est parfois utile de comprendre ce que l'on génère avec un IDE (pour voir ce qui ne va pas).
● vi : date de ... 1976. Installé par défaut sur l'immense majorité des linux.
● nano : date de 2000. Inclus la coloration syntaxique par exemple.
● pico : éditeur de texte par défaut pour le logiciel CLI pine (email). Sous licence. nano
est basée sur l'interface pico.
La compilation est constituée de plusieurs étapes, qui sont regroupées sous le terme 'compilation' .
Le résultat de cette première étape est un nouveau fichier appelé fichier objet qui contient les instructions.
Cette étape ne suffit pas à construire le programme exécutable complet puisqu'il manque encore plusieurs
choses.
Les étapes de compilation d’un fichier .c
Ces fonctions et les instructions processeurs qui les réalisent sont fournies avec le compilateur C.
Il y a une librairie pour les fonctions mathématiques, les entrées / sorties, la gestion de la mémoire,
etc.
GCC a de très nombreuses options (une quarantaine). Les plus utilisées sont :
● -I : include
● -L : link
● -l : librairies à linker
● -O : optimisation du code
● -Werror : Warning traités com
On utilisera GCC pour compiler. Mais comme tout compilateur, il a ses inconvénients:
● GCC est un outil très puissant
● Utilisable "à la main" quand on travaille sur des micro-projets,
● Il est vital d'utiliser des outils de build dès que l'on passe à des projets de taille même
moyenne
L'option -Wall demande au compilateur d'afficher tous les messages de prévention (lorsque
quelque chose est ambigu ).
Si tout se passe bien, gcc a créé le fichier objet .
Attention :
Avant de taper cette commande, il faut placer l'interpréteur de commandes dans le répertoire qui
contient vos fichiers sources avec la commande cd.
Edition de liens avec GCC (produire l'exécutable)
Pour construire le programme exécutable, le fichier objet généré par la compilation et
éventuellement une librairie .
L'option -o permet d'indiquer le nom du programme exécutable à construire et l'option -l le nom d'une
librairie.
Exemple : vous voulez compiler tp.c qui se trouve dans le répertoire TP1 de votre compte.
1. ouvrez un terminal / interpréteur de commandes
2. placez l'interpréteur de commandes dans le répertoire qui contient tp.c, c'est à dire TP1 : "cd TP1"
3. compilez tp.c et créez tp.o, le fichier objet : "gcc -o tp.o -c tp.c"
4. Exécutez votre programme : "tp" ou "./tp"
Si votre programme utilise une fonction de la librairie mathématique, par exemple, il faut le dire à
l'éditeur de liens avec l'option -l.
La librairie mathématique s'appelle tout simplement m.
Il faut donc ajouter l'option -lm à l'étape 3 ci-dessus : "gcc -lm -o tp -c tp.c "
Principales options du compilateur gcc
Exemple :
• La somme i+2 est réalisée par une fonction f, qui est écrite dans le fichier f1.c
• La fonction g, écrite dans le fichier f2.c, se contente de la fonction racine carrée (sqrt) de la
librairie mathématique du C.
• Le programme principal main, qui calcule f(i)*g(j), se trouve dans le fichier p1.c
On veut construire le programme binaire exécutable qui regroupe tout celà.
Compilation de chacun des fichiers source .c puis édition des liens.
Déboguer le code sous Linux - Debug
Un Debug signifie la recherche d'erreurs dans le code, de fuite mémoire, etc.
Plan
• Introduction générale
L’interprète de commande
Le choix entre plusieurs shells
Tous les noms de shell se terminent par sh
Quelques exemples
• sh : un des plus anciens, écrit par Steve Bourne en 1977
• csh : avec une syntaxe proche du C (C-shell)
• tcsh : une version plus élaborée avec la syntaxe de csh
• bash : Bourne Again Shell, version GNU enrichie de sh
• Pour une liste plus exhaustive des shells disponibles sur la machine, voir le fichier
/etc/shells
Lorsqu’on se connecte, on se retrouve sous un shell par défaut, prédéfini, souvent bash.
Pour savoir dans quel shell on est : echo $0
Fichiers, processus et flux au travers de l’interprète
de commande
L'interprète de commande 40
$ ls -l /tmp
…
$ echo $0
…
$ ps --help
…
$ man cat
…
Le shell : l’interface en ligne de commande
Le shell = la couche logicielle qui constitue l’interface utilisateur d’un système
d’exploitation
Très souvent le mot « shell » fait référence à une interface en ligne de commande.
- Documentation difficile d'accès pour le débutant (la page de manuel “man bash” est très
longue et technique) ;
sh : Bourne Shell
Les langages de scripts shell sont beaucoup mieux adaptés aux tâches de
gestion d’un système.
Les scripts bienfaits sont donc plus clairs et plus faciles à maintenir.
Script bash
• Un script bash est un fichier de type texte contenant une suite de
commandes shell, exécutable par l'interpréteur (ici le programme /bin/bash)
▪ Un script peut être lancé en ligne de commande, comme dans un autre script
▪ Modifiable par un éditeur de texte
▪ Un programme bash doit être rendu exécutable avec
▪ Par convention, les noms de script sont suffixés par l’extension « .sh »
• Invocation du script nommé mon_script.sh avec
./mon_script.sh
commande1
commande2
#!/bin/bash
echo “Hello World”
Afficher Hello World
Pour lancer :
► sauvegarder dans script.sh
► donner les droits à l’exécution : chmod +x script.sh
► lancer : ./script.sh
Variables
#!/bin/bash
message="Hello World"
echo $message
Variables
#!/bin/bash
message="Hello World"
echo $message
s='Bonjour, monde!!!'
echo $s
Bonjour,monde!!!
x=”hello”
Les retours à la ligne sont
if [ $x == “hello” ]; then importants.
Exemple :
if [ -r $2 ] ;then
...
...
else
echo "vous n’avez pas le droit de lire le fichier $2"
fi
Test de fichiers : d’autres options
-f :est un fichier ordinaire
-d :est un répertoire
-p :est une représentation interne d’un dispositif de communication
-c :est un pseudo-fichier du type acc`es caract`ere par caract`ere
-b :est un pseudo-fichier du type acc`es par bloc
-L :est un lien symbolique
-u : son Set UID=1
-g :son Set GID=1
-k :son Sticky Bit=1
-S :est non-vide
case : vérifier plusieurs alternatives
x=3
case $x in 3 )
echo Three
;;
4 )
echo Four
;;
* )
echo Something else
esac
16/35
case : vérifier plusieurs alternatives
if : connecteurs logiques : syntaxe plus claire
x=4
y=5
if test $x -gt 4
for : traverser une liste
Traiter chaque ligne de la sortie d’une commande :
for i in $(ls)
do
echo "J'ai vu $i !"
done
while : boucle while
i=0
while [[ $i -lt 10 ]]
do
echo "et $i"
i=$(($i + 1))
done
echo ${tableau[1]}
echo ${#tableau[@]}
ou bien
echo ${#tableau[*]}
for i in ${tableau[@]}
ou bien
for i in ${tableau[*]}
Variables bash
#!/bin/bash
. param
Fonctions : syntaxe de base
helloWorld
Fonctions bash
maFonction()
{
instructions
}
# appel de ma fonction
maFonction "Hello" "World!"
function func {
echo "hello"
}
x=$(func)
echo $x
On peut aussi communiquer via les variables globales.
Fonctions : codes de retour
Une fonction peut renvoyer un code de retour.
function plusgrand {
if [[ $1 -gt $2 ]]; then
return 1 # code de retour
else
return 0
} fi
La variable spéciale $ ? contient le code de retour du dernier appel.
Un code de retour est toujours une valeur numérique.
Arguments d’une commande
• mon_script.sh arg1 arg2 arg3 arg4 …
▪ chaque mot est stocké dans une variable numérotée
#! /bin/bash $./mon_echo.sh
for i in "$@"; do $./mon_echo.sh toto titi
echo $i toto
done titi
$
Imbrication de commandes
• Pour récupérer le texte écrit sur le terminal par une commande dans
une chaîne de caractères
▪ $(cmd)
▪ Attention à ne pas confondre avec $cmd qui permet l’accès à la valeur de la variable
cmd
$ date
lundi 27 juillet 2015, 12:47:06 (UTC+0200)