Vous êtes sur la page 1sur 52

SYSTÈME

D’EXPLOITATION
GNU/LINUX
Base du système GNU/Linux et
commandes Unix
1. histoire de Linux
Qu'est-ce qu'UNIX ?

UNIX est un système d'exploitation. Ce système est né,


en 1969, de la volonté de Ken Thompson et Dennis
Ritchie de faire un système d'exploitation à la fois
multitâches et multi-utilisateurs. Il était aussi question
de concevoir de petits programmes, ne faisant qu'un
nombre limité de tâches, mais pouvant interagir entre
eux. Depuis cette période, une grande quantité de
systèmes d'exploitations dérivés d'UNIX a vu le jour,
certains payants, d'autres gratuits.
Pourquoi UNIX ?
C'est avec l'idée de créer un système d'exploitation
répondant à de nouvelles attentes qu'UNIX a vu le
jour : être
disponible 24h/24 7j/7 était un défi à relever au niveau
de la gestion de la mémoire, des accès aux disques,
etc.
Mais là où les créateurs d'UNIX innoveront réellement,
c'est dans la réalisation du premier système
d'exploitation entièrement multi-tâches et multi-
utilisateurs, ouvrant la marche vers l'informatique
telle qu'on la
connait aujourd'hui.
Philosophie UNIX
Un ensemble de règles assurent le fonctionnement et le succès
d'UNIX, à commencer par le fameux paradigme « tout est fichier
».
Toutes, ou presque toutes, les fonctionnalités du système
d'exploitation sont accessibles via de simples fichiers :
périphériques, processus, répertoires, les pipes, la mémoire, etc... .
Ainsi, pour qu'une application puisse communiquer avec le
système, il suffit qu'elle soit capable de lire et écrire dans un
fichier.
Mais c'est surtout au niveau des méthodes de programmation
qu'UNIX révolutionnera le mode de pensée de l'époque. Fini le
développement isolé d'une seule équipe de programmeurs, au
contraire les échanges de code source et la collaboration de
plusieurs équipes devient sont très courant . Ce monde de
fonctionnement évoluera peu à peu vers la notion de logiciel libre.
Venons-en maintenant à Linux.
Naissance de GNU/Linux
En 1991, un étudiant finlandais nommé Linus
Torvalds décide de créer un nouveau noyau
basé sur Minix (un dérivé d’UNIX) afin de
contourner ses limitations et celles de MS-
DOS. Ce nouveau noyau est distribué
gratuitement sur Internet en août 1991 sous le
nom : Linux. Le rôle du noyau dans un
système d'exploitation est de s'interfacer entre
les programmes utilisateurs et le matériel Il
fait donc partie du système d'exploitation mais
ne représente pas l'OS à lui tout seul. Linux,
pris de façon indépendante, ne sert donc à rien.
Richard Stallman, fondateur du projet GNU,
persuade Linus Torvalds de passer Linux sous
licence GPL, ce qui permet d’utiliser ce noyau
pour le projet GNU. Un système d'exploitation
complet est alors formé : il est composé du
noyau Linux et des outils GNU. Le nom
complet de ce système est GNU/Linux
Les distributions GNU/Linux
De part son esprit communautaire, Linux se décline en
plus d'une centaine de distributions. Toutes ces
distributions
possèdent un noyau Linux, mais différent dans la
composition des programmes qui l'entourent.
Chaque distribution possède :
-Un noyau Linux
-Des programmes, de préférence Libres
-Un système de packages
-Des programmes d'installation
Les distributions les plus connues sont Debian,
Gentoo, RedHat, Slackware, Mandriva et
SUSE. Il existe aussi un nombre considérable
de « sur-distributions » comme par exemple
Ubuntu ou Fedora qui se basent sur
respectivement sur Debian et RedHat.
2. Les Licences
Logiciels open-sources et
propriétaires
Un logiciel peut être disponible sous différentes formes, la
première est la version source c'est à dire la version écrite
dans un langage de programmation et compréhensible
par l'homme. L'autre est la version compilée, c'est la
traduction de la version source en version
compréhensible par la machine, on parle aussi de
version binaire.
Ainsi on distinguera un logiciel open-source d'un logiciel
propriétaire : le logiciel open-source met à disposition
les sources du programme tandis que le logiciel
propriétaire se cantonne à distribuer la version compilée
Logiciel Libre et licences
En 1983, Richard Stallman est alors chercheur en intelligence
artificielle En tant que chercheur, il est habitué à échanger du
code source avec ses collègues. Rencontrant quelques
problèmes avec le pilote propriétaire de son imprimante, il
essaye d'en obtenir le code source afin de le modifier et de
l'améliorer mais reçoit un refus de la part de la société
distribuant le pilote. À la suite de cette mésaventure, il décide
donc de réécrire un pilote correspondant à ses attentes et
définit ainsi les bases de la philosophie du logiciel libre. Pour
cela il énonce les quatre libertés suivantes :
• liberté d'exécution
• liberté de modification
• liberté de redistribution
• liberté d'amélioration
3.Le système d’exploitation
Architecture UNIX

Linux est architecturé autour d'un noyau (kernel) chargé de prendre en charge le matériel
Le noyau Linux est un ensemble de petits
programmes qui permettent de gérer
l'exécution des autres applications qui tournent
sur la station.

Ces primitives gèrent l’accession à la mémoire


et, plus généralement , aux différentes
ressources de la machine .
Le noyau gère les taches de base du système :

 La gestion des processus système

 La gestion des processus utilisateurs

 La gestion du processeur et de la RAM

 La gestion des systèmes de fichiers


 L'interpréteur de commandes «shell». est
l'interface entre l'utilisateur et le système
d'exploitation.
 Le shell est ainsi chargé de faire
l'intermédiaire entre le système d'exploitation
et l'utilisateur grâce aux lignes de commandes
saisies par ce dernier. Son rôle consiste ainsi à
lire la ligne de commande, interpréter sa
signification, exécuter la commande, puis
retourner le résultat sur les sorties.
 Le système de fichiers (file system) Un
système de fichiers est une façon d'organiser
et de stocker une arborescence sur un support
(disque, disquette, cd ...). Chaque OS a
développé sa propre organisation.
 Linux possède son système appelé ext2 mais
peut en gérer d'autres.
Caractéristiques de linux
Système d’exploitation multitâches. Les
systèmes Unix gèrent l’exécution de plusieurs
dizaines de programmes simultanément en
utilisant la technique du temps partagé.
 Système multiutilisateurs.
Plusieurs utilisateurs pourront travailler sur le même
système central.
 Système multiprocesseurs.

Les OS Unix peuvent gérer des systèmes électroniques


ayants plusieurs processeurs. Plusieurs processus
peuvent alors s’exécuter dans le même instant .
 Système multiplateformes.

Les systèmes Unix sont programmés (écris) en grande


partie en langage C. Le code source peut, avec peu de
modifications, être compilé pour des systèmes
équipés de processeurs de différentes architectures.
Le rôle de l’administrateur
 Créer, modifier, supprimer un utilisateur.
L’administrateur doit gérer les comptes des
utilisateurs. Outre la création et la suppression
des comptes qui s’effectuent avec des
commandes standard, il doit être capable de
modifier l’environnement de travail des
utilisateurs. Cette dernière opération recouvre
un large éventail d’actions : changement du
mot de passe, appropriation de fichiers,…
 Gérer les fichiers et les disques
La gestion des fichiers et des disques comprend
principalement les actions suivantes :
· Contrôler à l’intégrité des systèmes de fichiers.
· Organiser l’arborescence.
· Protéger l’arborescence en contrôlant les droits sur
les fichiers.
· Gérer les disques (initialisation,
partitionnement,...).
 Ajouter un périphérique
L’ajout d’un périphérique amène à savoir créer un
fichier spécial pour ce périphérique ,ajouter
éventuellement un pilote de périphérique au noyau

 Améliorer les performances du système


Le rôle de l’administrateur est aussi de surveiller et
d’améliorer les performances du système en sachant
paramétrer les ressources utilisées par le noyau pour
son propre fonctionnement ou les services offerts aux
processus.
 Veiller à la sécurité du système
L’administrateur doit veiller à la sécurité en utilisant les
moyens standard que lui fournit le système UNIX.
 Paramétrer le démarrage et l’arrêt du système

L’administrateur doit être capable de paramétrer l’arrêt


et le démarrage du système pour automatiser le
démarrage des nouveaux services et produits.
Terminaux et interpréteur de
commande
Cette ligne de commande est accessible via les
terminaux qui jouent le rôle d'interface entre
l’utilisateur et la machine. Dans ce terminal,
l’utilisateur interagit avec le système en
utilisant un interpréteur de commandes : le
shell.
4.Définition et rôle du shell bash
Qu’appelle t’on un shell ?
Un shell est la liaison la plus élémentaire entre
l’utilisateur et le système d’exploitation, c’est à dire
le programme de gestion de la ligne de commande.
Les commandes saisies sont interprétées par le shell
et transmises au système d’exploitation.
De nombreuses commandes du shell ressemblent aux
commandes MS−DOS : en utilisant la
terminologie Linux, nous pouvons considérer que le
programme command.com correspond au shell de
MS−DOS.
Shell est à rapprocher du mot kernel : le kernel,
signifiant noyau, est souvent entouré d’une
coquille dure (pensez à un noyau d’abricot ou
de pêche). shell signifiant coquille, c’est donc
ce qui « entoure » le noyau Linux : le moyen
de l’utiliser à l’aide de commandes. C’est donc
une interface fonctionnant en mode texte entre
le noyau Linux et les utilisateurs (avancés),
voire les applications.
 l existe plusieurs shells, chacun disposant de spécificités
propres. Le Bourne Shell (sh) est le shell le plus connu et le
plus courant sur les Unix. Le C-Shell (csh) reprend la
structure du langage C. Le Korn Shell (ksh) est une évolution
du Bourne Shell. Le Z-Shell (zsh) est lui-même une évolution
du Korn Shell. Le shell de référence sous Linux se nomme
le Boume Again Shell (bash). Voici une liste non exhaustive
d’interpréteurs de commandes que vous pouvez rencontrer
sous Linux :
 sh : Thompson Shell (n’existe plus) ;
 sh : Bourne Shell (a remplacé le précédent) ;
 bash : Bourne Again Shell ;
 ksh : Korn Shell ;
 csh : C Shell ;
 zsh : Z Shell ;
 tcsh : Tenex C Shell ;
 ash : A Shell ;
 dash : Debian Almquist Shell.
 La liste des shells actuellement présents sur
votre installation Linux est présente dans le
fichier /etc/shells
vous pouvez consulter cette liste en tapant la
commande suivante : more /etc/shells comme
l’illustre l’image ci-dessous:
zineb@ubuntu:~$ more /etc/shells
# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
Bash : le shell par défaut

Le bash n’est pas présent que sous Linux. Étant un


logiciel libre, il peut être compilé et exécuté sur de
nombreuses plates-formes. C’est le shell de référence
sur les systèmes MacOS et il existe aussi pour
Windows.
Le shell fonctionne au sein d’un terminal. Un
terminal est originellement une véritable machine ne
disposant que du nécessaire pour saisir des
instructions (le clavier) et visualiser les résultats (un
écran, voire il y a très longtemps une simple
imprimante à papier listing)
 Le shell fonctionne au sein d’un terminal. Il attend
des saisies au clavier dans la console ou la fenêtre, et
affiche ses résultats au même endroit. Tout utilisateur
avancé de Linux et d’Unix en général a au moins un
terminal ouvert en quasi-permanence. L’ouverture
d’un terminal (ou console, dans ce cas ces mots sont
synonymes) lance automatiquement le shell par
défaut.

L’invite de commande

Le shell attend des entrées au clavier sur une ligne


appelée l’invite de commande ou prompt. Un curseur,
qui peut être représenté par un rectangle fixe,
clignotant ou un caractère souligné, indique la
position actuelle de votre saisie.
L’invite (prompt) fournit des informations sur le
terminal et votre position dans le système de fichiers.
zineb@ubuntu:~$
Dans cette invite tout à fait classique, vous trouvez quatre
informations :
zineb : c’est le nom de connexion, ou login de l’utilisateur,
actuellement connecté au terminal ;
ubuntu : c’est le nom d’hôte (hostname), le nom logique de la
machine raccordée au terminal ;
~ :/home/public : c’est la position actuelle du shell dans le
système de fichiers ;
$ : c’est la terminaison standard du bash pour un utilisateur sans
pouvoirs.
Cette invite vous informe que c’est l’utilisateur sans pouvoirs
d’administration zineb qui utilise le terminal (est connecté)
sur la machine ubuntu et qu’il est actuellement positionné
dans /home/public.
 Le caractère de terminaison peut avoir d’autres
significations :
 un $ indique que l’utilisateur n’a pas de
pouvoirs particuliers.
 un # indique que l’utilisateur est
l’administrateur root qui a tous les pouvoirs.
Le chemin peut varier :
zineb@ubuntu:~ $ le caractère tilde ~ indique
que vous êtes dans votre répertoire personnel.
zineb@ubuntu:~/test $ : le ~ se rapportant à
votre répertoire personnel, vous êtes dans le
répertoire test au sein de celui-ci.
Dans la suite, l’invite de commande sera
généralement remplacé par un simple dollar, $,
ceci afin de gagner de la place sur la ligne de
commande.
Utiliser le shell

a. La saisie
Dans le terminal, le clavier s’utilise comme
d’habitude. Vous pouvez vous déplacer sur la
ligne avec les flèches de droite et de gauche du
clavier et effacer des caractères avec les
touches [Retour arrière] et [Suppr]. Vous
lancez l’exécution de la commande que vous
avez saisi en appuyant sur la touche [Entrée].
Il est temps de tester quelques commandes. La
commande date indique la date et l’heure
actuelles. Vous
n’obtiendrez évidemment pas le même
résultat, et pas toujours dans la même langue,
selon votre installation Linux.
Une commande pratique, pwd, permet de savoir
à quel endroit vous vous situez dans les
répertoires.

Le shell indique qu’il est actuellement positionné


dans le répertoire /home/zineb/Music/.
Syntaxe générale des commandes

Les commandes ou instructions (les deux mots


sont synonymes dans ce cas) GNU ont très
souvent une syntaxe reprenant la même
structure :
Commande [paramètres] [arguments]
Une commande peut avoir ni paramètres, ni
arguments. Dans ce cas elle exécute l’action
par défaut pour laquelle elle est programmée,
ou affiche un message d’erreur si ceux-ci sont
nécessaires.
Un paramètre est une option de la commande. Les deux
mots sont ici synonymes. C’est souvent une simple
lettre ou un simple chiffre précédé d’un tiret : -1, -p, -
s, etc. Si la commande accepte plusieurs paramètres,
vous les saisissez les uns après les autres en les
séparant par des espaces : -1 -r -t, ou en écrivant
qu’un seul tiret puis tous les paramètres : -lrt. Les
deux syntaxes sont acceptées et produisent le même
résultat. La seconde est seulement plus courte.
Dans certains cas un paramètre nécessite un
argument, par exemple un nom de fichier.
Dans ce cas il est préférable de séparer ce
paramètre des autres : -lrt -f monfichier.
Les arguments sont les entités sur lesquelles la
commande doit exécuter son action. Leur type
dépend de la commande. Ce peut être un
fichier, du texte, des nombres, etc.
Premier exemple concret avec cal
Prenez l’exemple de la commande cal. Celle-ci
admet plusieurs paramètres et arguments.
Appelée seule, elle affiche le calendrier du
mois en cours et surligne le jour actuel.
La commande cal admet deux arguments optionnels. Si un seul
est précisé, il s’agit de l’année, et l’intégralité du calendrier de
cette année est affichée. Si deux arguments sont précisés, le
premier est le mois (par exemple 10), le second l’année (par
exemple 1958).

 Un second paramètre -3 permet d’afficher les mois précédant


et suivant le mois précisé (faites l’exemple).
Chaîner les commandes
Vous pouvez exécuter plusieurs commandes sur
une seule ligne, les unes après les autres. Pour
cela il suffit de les séparer avec un point-
virgule.
$ cal;date;ls -l;pwd

Vous aimerez peut-être aussi