Vous êtes sur la page 1sur 24

Présentation du système Linux

Par Julien Plu

Date de publication : 21 janvier 2011

Durée : 5 heures

Cette série d'articles parlera de tous les aspects que l'on pourra rencontrer lorsque l'on
fait de la programmation système sous Linux en langage C. On y verra aussi l'utilisation
des principales commandes ainsi qu'un petit cours sur le langage C. Ce cours est autant
pour ceux qui ne connaissent pas Linux que pour ceux qui le connaissent et ont besoin
d'un pense-bête. Le système d'exploitation utilisé sera Ubuntu 10.10 ce qui sous-entend
l'utilisation de l'environnement de bureau GNOME. Commentez cet article : Commentez

Ce premier article consistera juste à présenter le système d'exploitation Linux.

Je tiens à dire que je ne ferai nullement


ici l'apologie d'un quelconque système
d'exploitation, Linux y compris. Tous les
systèmes d'exploitation ont leurs qualités et
leurs défauts il faut seulement savoir lequel
utiliser en fonction de ce que l'on souhaite
faire.
Présentation du système Linux par Julien Plu

I - Qu'est-ce que Linux ?............................................................................................................................................. 4


I-A - L'histoire de Linux.......................................................................................................................................... 4
I-B - Vue d'ensemble de Linux.............................................................................................................................. 5
I-C - Quelques caractéristiques de Linux.............................................................................................................. 5
I-C-1 - Linux est fiable...................................................................................................................................... 5
I-C-2 - Linux fonctionne partout........................................................................................................................6
I-C-3 - Linux est gratuit.....................................................................................................................................6
I-C-4 - Le support de Linux.............................................................................................................................. 6
I-C-5 - Linux n'a pas de registre...................................................................................................................... 7
I-C-6 - Redémarrage du système.....................................................................................................................7
I-C-7 - L'interface graphique............................................................................................................................. 7
I-C-8 - La défragmentation............................................................................................................................... 8
I-D - Comment se connecter..................................................................................................................................8
I-D-1 - Mode graphique.................................................................................................................................... 8
I-D-2 - Mode console........................................................................................................................................ 9
I-E - A quoi ressemblent les commandes Linux ?.................................................................................................9
I-F - Exemples de commandes..............................................................................................................................9
I-F-1 - La commande passwd...........................................................................................................................9
I-F-2 - La commande echo............................................................................................................................. 10
I-F-3 - La commande date..............................................................................................................................10
I-F-4 - La commande who.............................................................................................................................. 10
I-F-5 - La commande tty................................................................................................................................. 10
I-F-6 - La commande stty............................................................................................................................... 10
I-F-7 - Les commandes incorrectes................................................................................................................11
I-G - Comment se déconnecter........................................................................................................................... 11
I-G-1 - Mode graphique.................................................................................................................................. 11
I-G-2 - Mode console......................................................................................................................................12
II - Le système de fichiers.........................................................................................................................................12
II-A - Qu'est-ce donc ?......................................................................................................................................... 12
II-B - Les fichiers et le répertoire de travail......................................................................................................... 13
II-C - Les différentes sortes de fichiers existants................................................................................................ 14
II-C-1 - Ordinaires........................................................................................................................................... 14
II-C-2 - Spéciaux............................................................................................................................................. 14
II-C-3 - Répertoires......................................................................................................................................... 14
II-D - Les disques logiques.................................................................................................................................. 15
II-E - La protection des fichiers............................................................................................................................15
II-F - Comment manipuler des fichiers ?............................................................................................................. 15
II-F-1 - Connaître le répertoire de travail : pwd..............................................................................................15
II-F-2 - Changer de répertoire de travail : cd................................................................................................. 16
II-F-3 - Lister le contenu d'un répertoire : ls...................................................................................................16
II-F-4 - Afficher le contenu d'un fichier ordinaire : cat.................................................................................... 17
II-F-5 - Copier un fichier : cp.......................................................................................................................... 17
II-F-6 - Créer un lien sur un fichier : ln.......................................................................................................... 17
II-F-7 - Couper ou renommer un fichier : mv................................................................................................. 18
II-F-8 - Supprimer un fichier : rm.................................................................................................................... 18
II-F-9 - Créer un répertoire : mkdir................................................................................................................. 18
II-F-10 - Supprimer un répertoire : rmdir........................................................................................................ 18
II-F-11 - Changer les droits, le groupe et le propriétaire d'un fichier et d'un répertoire : chmod, chown,
chgrp................................................................................................................................................................18
III - La gestion des processus sous LINUX.............................................................................................................. 19
III-A - Qu'est-ce qu'un processus ?......................................................................................................................19
III-B - Lister les processus actif : ps.................................................................................................................... 20
III-C - Interrompre un processus..........................................................................................................................21
III-D - La redirection des fichiers standards.........................................................................................................21
III-E - Processus parallèles et communication.....................................................................................................22
III-F - Lancer un processus en arrière-plan......................................................................................................... 22
III-G - Lancer un processus en mode détaché....................................................................................................23
III-H - Interruption de processus, le retour...........................................................................................................23

-2-
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

IV - Remerciements................................................................................................................................................... 24

-3-
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

I - Qu'est-ce que Linux ?

I-A - L'histoire de Linux

L'histoire de Linux a commencé en 1991 avec le début du projet personnel d'un étudiant finlandais, Linus Torvalds,
qui crée le noyau d'un nouveau système exploitation.

Avant de parler de Linux il serait bon de parler un peu de l'histoire du noyau Unix qui a été conçu et mis en oeuvre dans
les années 1960 aux Bell Laboratories sous l'impulsion de Ken Thomson et d'un petit groupe de chercheurs de ces
laboratoires pour ensuite être publié en 1969 pour un usage interne à ces laboratoires. Le développement du langage
C par Dennis Ritchie a permis l'écriture d'une version d'Unix dans ce langage de haut niveau et par conséquent
portable a priori sur tout type de machine disposant d'un compilateur de ce langage. Certaines universités américaines
comme Berkeley notamment s'y intéressent énormément. Les laboratoires Bell/ATT voyant Unix devenir de plus
en plus populaire et utilisé décident d'en assurer eux-mêmes le développement.

A côté des versions "orthodoxes" développées à partir du noyau fourni par les laboratoires Bell (V7, System III, Xenix,
Spix...), un certain nombre de systèmes Unix-oïdes ont été développés par différentes sociétés. Notamment les deux
plus importantes :

• Les versions que l'on peut rattacher à la souche Berkeley (version 4.2) ;
• Les versions se voulant du standard System V défini par les laboratoires Bell.

Il est d'ailleurs très important de noter les efforts importants faits pour normaliser le système, que ce soit par la
publication de cette norme System V ou par les grands constructeurs européens regroupés dans le "Unix-Open-
Group" qui a publié un document de normalisation assez proche de celui des Laboratoires Bell. Par ailleurs, un
certain nombre de travaux sont réalisés un peu partout dans le monde (Berkeley, Ultrix de Digital ou Spix de Bull)
pour fournir des versions du système possédant à la fois les fonctionnalités de la version System V et celles de la
version de Berkeley en intégrant en particulier à la première le mécanisme de socket de la seconde. Par ailleurs, il
faut signaler les efforts réalisés en France dans le cadre du GIPSI (groupement d'intérêt public regroupant Bull, le
CENT et l'INRIA) pour développer une version multiprocesseur du système.

Maintenant que nous connaissons en gros l'histoire du système Unix, il devient important de parler du projet
GNU. C'est en 1983 que Richard Stallman a commencé le projet GNU dans le but de pouvoir créer des systèmes
d'exploitation UNIX-oide libres. Dans le cadre de ce travail il écrit aussi la GNU General Public License (GPL).
Petite anecdote intéressante sur GNU, depuis le début des années 1990 il existe un noyau GNU nommé Hurd qui
n'a malheureusement pas réussi à attirer suffisamment d'attention de la part des développeurs.

Cette fabuleuse histoire se poursuivra par un autre projet de système d'exploitation libre dans les années 1980 qui est
la Berkeley Software Distribution (BSD). Cela a été développé par Berkeley à partir de la 6e édition d'Unix d'ATT.

Vient ensuite en 1987 le système d'exploitation toujours Unix-oide, Minix, créé par Andrew S. Tanenbaum pour un
usage scolaire. Le principal défaut de ce système d'exploitation était qu'une partie du code ne pouvait être modifié
et redistribué. En outre Minix16bits n'est pas très bien adapté aux machines 32bits qui sont très populaires pour les
ordinateurs personnels à l'époque. C'est principalement à cause des petits défauts de Minix que Linus Torvalds
a décidé de commencer son projet qui deviendra l'un des noyaux les plus utilisés au monde de nos jours. Petite
anecdote amusante d'ailleurs Linux a été compilé avec GCC (GNU C Compiler) sur Minix. Il faut savoir qu'au départ
Linux n'était qu'un simple émulateur de terminal qu'il utilisait pour accéder au serveur Unix de son université : il
voulait utiliser, indépendamment d'un quelconque système d'exploitation, des fonctions de son ordinateur que Minix
ne prenait pas en compte. La toute première version de Linux (0.01) était sous la licence personnelle de Linus
Torvalds, plus tard pour la version 0.99 elle fut mise sous GPL, pour devenir le noyau que l'on connaît actuellement.

-4-
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

I-B - Vue d'ensemble de Linux

A partir de maintenant le terme Linux et Unix seront utilisés non plus pour désigner un noyau mais le système
d'exploitation tournant autour de celui-ci.

Le système Linux est un système multi-utilisateurs et multi-tâches. En tant que système d'exploitation, son
rôle principal est donc d'assurer aux différentes tâches et aux différents utilisateurs une bonne répartition des
ressources de l'ordinateur (mémoire, processeur(s), espace disque, imprimante(s), programmes utilitaires...) et cela
sans intervention des utilisateurs; il prend totalement en charge ces utilisateurs et lorsque les demandes sont trop
importantes pour être satisfaites rapidement, l'utilisateur le ressent par un certain ralentissement (qui peut être
effectivement important, voire insupportable...), mais le système (en principe) ne se bloque pas.

Linux est par ailleurs un système de développement et les utilisateurs y ont à leur disposition un très grand nombre
d'outils, pour la plupart assez simples à utiliser, leur permettant d'écrire, de mettre au point et de documenter leurs
programmes (éditeurs, compilateurs, débogueurs, système de traitement de textes...). Les utilisateurs ont ainsi à leur
disposition une boîte à outils bien garnie, le principal problème qui se pose à eux étant de savoir ce qu'elle contient
exactement et à quoi sert chacun de ces outils !

En résumé, on peut dire que le système est composé de :

• un noyau assurant la gestion de la mémoire et des entrées-sorties de bas niveau et l'enchaînement des
différentes tâches ;
• un (ou plusieurs) interpréteur(s) de langage de commandes; il existe en effet différents langages de
commandes nommés Shell, le plus connu étant le Bourne Shell (du nom de son auteur), un autre étant le C-
Shell développé à l'université de Berkeley et le plus répandu actuellement étant le Bash. Nous verrons dans
ce tutoriel un cours de Bourne Shell et de Bash. Il est important de noter que, quelle que soit la version du
langage de commandes utilisée, il s'agit d'un véritable langage de programmation possédant des instructions
et surtout des structures de contrôle de très grande puissance ;
• un système de messagerie assez complet (courrier, conversation en temps réel, journal de bord) ;
• un grand nombre de programmes utilitaires dont évidemment un compilateur de langage C, des éditeurs, des
outils de traitement de textes, des logiciels de communication avec d'autres systèmes Linux (ou autres), des
générateurs d'analyseurs lexicaux et syntaxiques...

I-C - Quelques caractéristiques de Linux

I-C-1 - Linux est fiable

L'écran bleu de Windows n'existe pas sous Linux. Les systèmes Linux et Unix peuvent fonctionner pendant des
années sans échec (Windows aussi mais tout dépend aussi l'utilisation que vous en faites). L'équivalent des écrans
bleu sur Linux se nomme Kernel Panic et est extrêmement rare et est à 99% du temps dus à une fausse manipulation
de l'utilisateur (ce qui est très fréquent lorsque l'on ne maîtrise pas son fonctionnement par exemple avec une
mauvaise manipulation d'une commande dangereuse comme rm). De nombreux utilisateurs de Linux n'ont jamais
vu cette erreur. Et d'autres en voient fréquemment parfois même sans qu'ils y soient pour quelque chose.

Cette fiabilité est due à son noyau qui, d'après plusieurs études, contient bien moins de bogues que ses concurrents
propriétaires. Ceci montre que les projets open sources sont généralement moins sources de bogues que les logiciels
propriétaires. Mais attention extrêmement fiable ne veut pas dire 100%, des bogues existent toujours et vous ne
serez jamais à l'abri, un jour peut-être, d'une mauvaise surprise.

Petit conseil par expérience, avant de toucher un quelconque fichier de configuration sous Linux il est IMPERATIF
de sauvegarder quelque part le fichier d'origine et surtout avant de procéder à n'importe quel changement, soyez sûr
et certain de ce que vous modifiez, sinon de graves conséquences sur le système seront inévitables et c'est donc
ainsi que le système devient non fiable car vous avez créé une faille de sécurité, un bogue qui ne vous permettra
plus de faire certaines choses, un plantage complet de la machine, un arrêt brutal de l'affichage, etc.

-5-
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

Il faut aussi savoir que les virus sont vraiment très rares sous Linux contrairement à Windows. Mais attention il existe
malgré tout beaucoup de menaces sous Linux. Ceci est due au fait que les exécutables tel que vous les connaissez
sous Windows n'existent pas sous Linux.

I-C-2 - Linux fonctionne partout

L'efficacité de Linux et de tous les Unix-oïdes peut être utilisée sur pratiquement tous les ordinateurs même les plus
vieux. Il en va de même pour beaucoup d'applications. Par contre, certaines applications peuvent recommander un
certain taux de performance. Si jamais vous avez un vieux P.C. qui traîne, au lieu de le laisser à la poussière dans
un coin, mettez-y Linux et vous pourrez recommencer à vous en servir.

Il faut savoir aussi qu'il existe maintenant ce que l'on appelle les live-CD qui sont intégrés à toutes (ou du moins
quasiment toutes) les distributions Linux. Ceci vous permet d'avoir sur un CD à la fois le programme d'installation
sur votre disque dur du système d'exploitation mais surtout (et c'est là l'intérêt du live-CD !!) d'utiliser Linux sans rien
installer du tout sur votre disque dur.

Mais attention il y a des limites à cette possibilité, il faut savoir que l'utilisation d'un live-CD n'est pas faite pour
une utilisation intensive de Linux (serveur, développement, etc.) vous ne pourrez d'ailleurs rien installer et les
performances ne seront pas géniales vu que tout se passe non pas sur le disque dur mais dans la RAM. Le live-CD
est donc fait pour une simple découverte du monde Linux c'est-à-dire se familiariser avec l'environnement de Bureau
et comment on l'utilise par exemple. Une autre utilisation des live-CD est la possibilité d'effectuer des réparations ou
des récupérations de données sur les disques durs qui, par exemple, ont un problème de boot.

I-C-3 - Linux est gratuit

Vous pouvez télécharger Linux sur Internet et l'installer sur autant de machines que vous le voulez, ainsi que les
applications. Il est possible aussi, pour beaucoup de distributions de commander le CD/DVD de la distribution. A noter
aussi qu'il y a des distributions payantes mais ce sont des distributions réservées aux professionnels et entreprises.

Il faut savoir que ceci est dû au fait que le développement des distributions Linux est fait en open source. Par contre
gratuit est un grand mot. Il faut savoir qu'il y a principalement quatre moyens d'acquérir une distribution Linux :

• en la téléchargeant, ceci est totalement gratuit (sauf si vous comptez le prix de votre abonnement Internet) ;
• en achetant un magazine spécialisé sur Linux (ces magazines contiennent toujours une distribution sur le CD
qui est fourni avec) et ainsi vous payez le prix du magazine ;
• en achetant la distribution dans un magasin spécialisé et dans ce cas, vous payerez le prix proposé par le
magasin en question ;
• en commandant un CD/DVD à l'éditeur de la distribution, ici par contre cela peut être gratuit ou bien alors
payant suivant l'éditeur et la manière dont vous faites votre commande.

I-C-4 - Le support de Linux

Linux est aujourd'hui le système regroupant une grosse communauté. Tout ça grâce à Internet. Vous pouvez obtenir
de l'aide de plusieurs dizaines de milliers d'utilisateurs Linux et programmeurs bénévoles sur Internet. Le support est
gratuit (pour les distributions non professionnelles).

Je pense que le site de developpez.com en est un très bon exemple. Mais il y en a bien d'autres, il suffit de questionner
un peu votre moteur de recherche préféré. Par contre, il faut aussi aimer l'anglais, car ce qu'il faut savoir, c'est que
la plupart des tutoriels ou articles concernant Linux sont malheureusement dans la langue de Shakespeare, désolé
pour ceux qui ont cette langue en horreur.

Par contre pour ce qui concerne les distributions professionnelles en général, c'est dans un forfait mais il se peut
aussi que le support soit offert si vous êtes partenaire de l'entreprise qui développe la distribution. Mais là aussi,

-6-
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

suivant l'entreprise à laquelle vous achetez votre distribution, il se peut qu'il faille savoir parler anglais pour discuter
avec la personne chargée du support ou bien pour lire les aides qu'elle fournit.

Eh oui, si vous ne l'avez pas encore compris, si vous voulez travailler dans l'informatique il est impératif de savoir
parler anglais.

I-C-5 - Linux n'a pas de registre

Lorsque Microsoft a introduit le registre dans Windows 95 il a été applaudi pour ce mécanisme qui a vocation d'éliminer
la gestion d'un système avec les fichiers .ini de Windows 3.x. Linux, lui, est géré par de simples fichiers de texte
brut pour sa configuration.

Il faut quand même dire que c'est beaucoup plus pratique mais aussi plus dangereux car on est moins à l'abri d'une
fausse manipulation. Par contre, le fait d'instaurer un fichier de configuration pour chaque partie ou programme est
quand même très sympathique car l'on sait exactement ce que l'on essaie de modifier et on n'a pas ainsi cette
hiérarchie catastrophique du registre Windows où on ne sait jamais où se trouve ce que l'on cherche.

Mais je vous rassure pour beaucoup de programmes, ainsi que pour le système d'exploitation lui-même, il existe des
outils permettant d'automatiser ou de fortement simplifier la configuration de ceux-ci. De cette manière vous ne serez
pas obligé d'apprendre une notation compliquée qui caractérise très souvent les fichiers de configuration Linux. Par
contre, ces outils dans la majeure partie ne permettent pas d'instaurer des paramètres de configuration très poussés
il faudra donc à ce moment précis vous y mettre avec vos petites mains.

I-C-6 - Redémarrage du système

La plupart des changements de configurations de Windows requièrent un redémarrage (mise à jour comprise), cela
peut être vite embêtant lorsque la machine est un serveur. Sous Linux rares sont les changements qui requièrent un
redémarrage, ceci permet d'effectuer des changements sur votre serveur sans affecter leurs utilisateurs. Quand je
parle de mise à jour je parle bien évidemment de mises à jour proposées par votre distribution.

Il faut savoir que ceci est dû à la non-utilisation de registre et que sous Linux ce sont seulement des fichiers qui sont
modifiés et donc un simple redémarrage des services suffit. Alors que sous Windows, les mises à jour consistent les
trois quarts du temps à modifier le registre et comme la prise en compte n'est pas dynamique, il faut le redémarrage
du système pour que les nouveaux paramètres soient pris en compte. En général sous Linux seules les mises à jour
du noyau requièrent un redémarrage du système.

Il faut bien avouer que, vu la fréquence des mises à jour sous Linux tous les jours, contrairement à Windows, une
fois par mois, s'il fallait redémarrer son ordinateur tous les jours cela deviendrait très vite un véritable calvaire.

I-C-7 - L'interface graphique

Windows a toujours été fourni avec une interface graphique. Pourtant certains serveurs (Web, fichiers, BDD,...) n'ont
aucunement besoin d'une interface graphique et de cette façon des ressources sont occupées pour rien. L'interface
graphique Linux (X Window) est un sous-système facultatif que vous pouvez choisir d'utiliser ou non. En outre, vous
pouvez démarrer et arrêter l'interface graphique quand vous le souhaitez sans avoir à redémarrer le système et sans
avoir un quelconque effet sur les programmes en cours d'exécution.

Il faut savoir que sous Windows il n'existe qu'un seul environnement de bureau possible par défaut (on peut en
installer d'autres mais ils sont très peu). Alors que sous Linux, il en existe plusieurs (KDE, GNOME, XFCE, etc.). On
peut les combiner, c'est-à-dire choisir à l'ouverture de sa session le type d'environnement que l'on souhaite.

Par contre vous trouverez toujours des gens pour vous dire que tel ou tel environnement est mieux qu'un autre (le
plus fréquemment entre GNOME et KDE). Mais la seule façon d'être sûr d'utiliser le bon est de les tester et de prendre
celui avec lequel vous vous sentez le plus à l'aise.

-7-
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

I-C-8 - La défragmentation

Toutes les versions de Windows souffrent du même problème, la fragmentation du disque. Ceci réduit
considérablement les performances. Linux, lui, ne fragmente pas les données sur le disque et est ainsi plus apte à
être un serveur de fichiers que Windows.

En fait, il est incorrect de dire qu'il n'en existe pas, mais il conviendra d'insister sur le fait qu'elles sont le plus souvent
totalement inutiles.

Il est vrai que les systèmes de fichiers Linux font un usage optimisé de l'espace, mais il n'est malheureusement pas en
mesure de savoir aujourd'hui quelle sera l'organisation optimale de votre disque après une ou deux années d'usage
intensif. Pour résumer, si vos disques durs ont une durée de vie supérieure à environ deux ans, que vous travaillez
régulièrement dessus, que vous manipulez quotidiennement de gros fichiers (vidéos, morceaux de musique, etc.),
que vous vous livrez au P2P ou encore qu'il vous arrive d'exhumer de vieux (et gros !) fichiers pour retravailler dessus,
vous ressentirez vite, comme tout le monde, le besoin de défragmenter votre disque Linux !

Pour mieux comprendre ce système de fragmentation, je vous renvoie aux articles sur les différents systèmes de
fichiers existant sous Wikipédia qui sont vraiment très bien faits. Ceci juste pour vous dire que l'on oublie vraiment
très souvent que Linux ne fragmente PRESQUE pas les données contenues sur le disque dur.

I-D - Comment se connecter

I-D-1 - Mode graphique

Lorsque vous démarrez Linux vous tomberez sur une interface avec deux champs. Un pour votre login et l'autre pour
votre mot de passe. Renseignez ces deux informations pour vous connecter au système.

-8-
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

I-D-2 - Mode console

Certaines distributions Linux ne démarrent pas directement avec l'interface graphique et vous serez donc amené à
vous connecter via le terminal. Vous verrez ceci à l'écran :

Entrez votre login et une fois que vous avez appuyé sur ENTRÉE, entrez votre mot de passe (si vous ne voyez pas
de caractère s'afficher à l'écran c'est tout à fait normal ne vous inquiétez pas) et appuyez encore sur ENTRÉE.

I-E - A quoi ressemblent les commandes Linux ?

Sous Linux, l'utilisateur dispose de nombreuses commandes dont on trouvera une liste des plus utiles un peu plus
tard. Une commande se compose du nom proprement dit de cette commande (un simple mot), suivi éventuellement
d'un ou plusieurs arguments (fournissant des informations supplémentaires : options ou paramètres), les différents
éléments de la commande étant séparés par des espaces ou des caractères de tabulation; la commande complète
est elle-même terminée par l'appui sur la touche ENTRÉE. Il faut en effet savoir que chaque ligne entrée au clavier
est mémorisée et n'est effectivement interprétée que lorsqu'elle est complète, c'est-à-dire à la réception du caractère
de fin de ligne; ce mode de fonctionnement est appelé canonique. Il offre en particulier l'avantage de permettre
l'annulation de caractères de la ligne en cours de frappe avant son interprétation. Une possibilité offerte est de modifier
ce mode de fonctionnement afin par exemple que chaque caractère tapé soit interprété immédiatement. Il faut aussi
noter dès à présent que Linux accepte la frappe anticipée de caractères, c'est-à-dire qu'il est possible de taper des
commandes sans avoir la main (c'est-à-dire, alors que le "prompt" $ ou >> n'est pas apparu, le système étant par
exemple en cours d'exécution de commandes ou même en cours d'impression).

Les résultats des commandes sont, comme nous l'avons déjà dit, affichés sur la sortie standard et les données
nécessaires à la commande lues sur l'entrée standard toutes deux par défaut (c'est-à-dire sauf demande contraire)
physiquement associées au terminal d'où la commande est lancée.

Au cours de la procédure d'identification ("login") en mode console ou au cours d'une session de travail, si le mode de
fonctionnement est canonique, un certain nombre de caractères jouent un rôle particulier en ce sens qu'ils permettent
d'annuler tout ou partie de la ligne en cours de frappe :

• la touche BACKSPACE ou la combinaison CTRL+H annule le dernier caractère tapé ;


• la combinaison CTRL+U annule tout ce qui précède sur la ligne.

I-F - Exemples de commandes

Nous allons voir ici quelques exemples de petites commandes simples, histoire que vous puissiez vous familiariser
un peu avec ce système de commande.

I-F-1 - La commande passwd

Elle permet à un utilisateur de créer ou de changer son mot de passe :

-9-
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

Le système demande tout d'abord l'ancien mot de passe de l'utilisateur, puis demande deux fois le nouveau mot de
passe choisi. Il n'y a naturellement pas d'écho des mots de passe frappés par l'utilisateur pour des raisons évidentes
de sécurité.

I-F-2 - La commande echo

Elle affiche la liste des paramètres sur la sortie standard, c'est-à-dire la chaîne de caractères qui suit echo :

I-F-3 - La commande date

On obtient la date dans la langue de configuration du système, ici en français :

Avant il existait une commande date par type de date (anglo-saxon, français...) mais maintenant cette commande
s'adapte à la langue et à la région que l'on a choisies lors de l'installation de Linux.

I-F-4 - La commande who

Elle permet, utilisée sans paramètre, de connaître la liste des utilisateurs effectivement en train de travailler; utilisée
avec les paramètres am et i, elle permet aux amnésiques de retrouver leur nom d'identification ainsi que le numéro
du terminal sur lequel ils se sont connectés et l'heure à laquelle ils se sont connectés :

Je vous laisse cette commande avec les paramètres indiqués à essayer chez vous pour que vous puissiez voir à
quoi elle ressemble.

I-F-5 - La commande tty

Elle donne le nom complet du terminal associé à l'utilisateur et le message not a tty si aucun terminal n'est associé :

I-F-6 - La commande stty

Elle permet d'une part de connaître les paramètres régissant la liaison entre le terminal et l'ordinateur et d'autre part
de modifier leurs valeurs. L'option -a permet d'obtenir l'ensemble des valeurs des paramètres.

Sans l'option -a :

- 10 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

Avec l'option -a :

I-F-7 - Les commandes incorrectes

Ici la commande donnée n'est pas une commande reconnue par l'interpréteur. D'un autre côté, le nom d'une
commande peut être correct et les paramètres ne pas l'être :

Dans cet exemple, on obtient les formes correctes permettant d'utiliser la commande que l'on avait donnée sous
une forme incorrecte.

Dans ce dernier exemple, le système ne reconnaît pas la commande, car pour lui elle n'existe pas, mais elle peut
être installée pour être ensuite utilisée et il nous indique le nom du (ou des) paquet contenant la commande que
l'on a essayé d'entrer.

Petite information extrêmement utile pour la suite de votre apprentissage. Il existe un nombre
vraiment très important de commandes et je ne vais pas toutes les détailler ici. Pour avoir
vraiment tous les détails sur une commande, il vous faut utiliser la commande man dans votre
terminal. Qui s'utilise de cette manière man "nomCommande".

I-G - Comment se déconnecter

I-G-1 - Mode graphique

Vous pouvez vous déconnecter en mode graphique en cliquant sur Déconnexion dans le menu K.

- 11 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

I-G-2 - Mode console

Il suffit tout simplement ici d'entrer cette commande :

sudo pkill -KILL -u {username}

Bien entendu il faut que vous remplaciez {username} par votre login.

Il faut savoir aussi que cette commande marche pour déconnecter n'importe quel utilisateur connecté sur la machine.

II - Le système de fichiers

II-A - Qu'est-ce donc ?

Un fichier LINUX est une chaîne de caractères non structurée (du point de vue du système) : le système ne possède
aucune notion d'organisation de fichiers (séquentielle, indexée, partitionnée...).

A tout fichier est associé un bloc d'informations, appelé i-noeud (noeud d'index, ou index-node ou i-node) contenant
un certain nombre d'informations d'ordre général concernant le fichier :

• sa taille ;
• l'adresse des blocs utilisés sur le disque pour ce fichier ;
• l'identification de son propriétaire et ses droits d'accès par les différents utilisateurs ;
• son type (fichier ordinaire ou spécial, catalogue...) ;
• un compteur de ses références dans le système ;
• un certain nombre de dates relatives aux principales opérations réalisables sur le fichier (consultation,
modification...); les dates sont codées par un entier (nombre de secondes écoulées depuis le 1er janvier
1970).

Ce bloc d'informations ne contient aucun nom pour le fichier. La désignation d'un fichier se fait par l'intermédiaire de
répertoires (directories) : un répertoire est un fichier dont le contenu est une suite de couples formés d'un numéro
(un index par lequel le système identifie le fichier) et d'un nom par lequel le fichier est identifié dans le répertoire.

Ainsi un fichier peut être référencé par l'intermédiaire d'un répertoire et d'un nom dans ce répertoire. Il est possible
de référencer un même fichier sous des noms différents dans des répertoires différents. Le nombre des références à
un fichier est comptabilisé dans le compteur des références du i-noeud de ce fichier, un fichier n'étant effectivement
détruit (c'est-à-dire l'espace nécessaire pour stocker son contenu et le i-noeud correspondant effectivement récupéré
par le système) que lorsque le compteur de références du i-noeud du fichier devient nul. Aussi, la désignation d'un
fichier nécessite-t-elle celle d'un répertoire et d'un nom dans celui-ci, le répertoire étant lui-même désigné par un
nom dans un autre répertoire, etc.

Ce procédé de désignation est initialisé par l'existence d'un fichier sans nom dont la localisation est connue du
système : il s'agit de la racine absolue du système de fichiers (index 2 dans le disque système).

Il faut savoir que sous Linux seuls les index de 1 à 10 sont réservés, on peut citer par exemple :

- 12 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

II-B - Les fichiers et le répertoire de travail

Soit un système sur lequel la racine du système de fichiers (d'index 2) contient entre autres choses les noms de
deux répertoires usr et bin et leurs numéros respectifs (ici 524295 et 131075), le sous-répertoire bin contenant
en particulier les couples (ls, 131150), (rm, 131191), (echo, 131120) correspondant aux programmes associés à
des utilitaires du système; supposons que le répertoire usr contienne quant à lui le couple (bin, 524391). Ce sous-
répertoire bin durépertoire usr contient lui aussi un certain nombre de fichiers ordinaires associés à des commandes
du système. Le sous-répertoire home contient en particulier le couple (snake, 262148) correspondant à un répertoire.
Enfin le répertoire snake contient à la fois des fichiers ordinaires et le couple (cpp, 262160) correspondant à un
répertoire contenant lui-même des références à des fichiers ordinaires, par exemple (main.cpp, 271215). Cette
hiérarchie peut être représentée par la structure suivante :

bin
524295 ---------- 524391
/
/
/usr
/
/ home snake cpp main.cpp
/ 2----------262145----------262148-----------262160-----------271215
\
\bin 131150
\ /
\ /ls
\ / rm
131075----------131191
\
\
\echo
\
\
131120

Le système de fichiers a donc une structure d'arborescence (graphe sans circuit qui de plus doit être connexe si le
système est consistant !).

La racine de cette arborescence est la racine du système de fichiers et les feuilles en sont des fichiers non-répertoires
ou des répertoires vides.

Pour tout fichier, il existe (si le système est consistant), au moins un chemin de la racine vers ce fichier, et la liste des
noms étiquetant les arêtes de ce chemin identifie sans aucune ambiguïté ce fichier; il s'agit d'un nom ou référence
absolue qui s'écrit symboliquement /nom1/nom2/.../nomp, où nom1, nom2..., nomp sont les noms rencontrés dans
l'ordre de la racine vers le noeud correspondant de l'arborescence. La racine a pour référence absolue /.

Sur l'exemple, le fichier numéro 271215 a comme référence absolue (il peut en avoir d'autres)/home/snake/cpp/
main.cpp.

Afin de faciliter les repérages, à tout instant un utilisateur dispose d'un répertoire privilégié appelé répertoire de
travail par rapport auquel il lui est possible de réaliser des repérages relatifs. Ce répertoire de travail est utilisé par
le système dans ce cas pour préfixer les repères : par convention, une référence relative est une référence ne
commençant pas par le caractère /.

Ainsi, sur l'exemple précédent et si le répertoire de travail est /home/snake, le même fichier peut être désigné par
cpp/main.cpp.

Les repérages sont encore facilités par le fait que tout répertoire contient les deux références particulières . et .. qui
désignent respectivement le répertoire lui-même et son père (le répertoire unique dans lequel il est référencé). Ainsi
le compteur des références de tout répertoire est au moins égal à deux, puisque le répertoire est référencé par le
nom que lui a donné son propriétaire dans le répertoire père et par le nom . dans lui-même. On peut même dire plus :
le i-noeud de tout répertoire père de n sous-répertoires a un compteur de références égal à n + 2.

- 13 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

Sur l'exemple, le répertoire de travail étant maintenant /home/snake, le même fichier pourra être référencé par ../
snake/cpp/main.cpp.

Enfin, chaque utilisateur possède un répertoire particulier que nous appellerons son répertoire privé qui devient
automatiquement son répertoire de travail dès l'ouverture de la session. Il est instructif à ce propos de consulter le
fichier /etc/passwd qui contient entre autres choses la liste des identifications des utilisateurs, leurs mots de passe
codés et la référence absolue de ce répertoire particulier.

II-C - Les différentes sortes de fichiers existants

Les fichiers peuvent être en première approche regroupés en trois grandes catégories.

II-C-1 - Ordinaires

Ce sont les fichiers qui contiennent des programmes (binaires ou sources), des données de programmes utilisateur
ou système (fichier ASCII). Ces fichiers sont les résultats de programmes (éditeurs, compilateurs, fichiers résultats...).

II-C-2 - Spéciaux

L'une des originalités du système LINUX réside dans le traitement qu'il fait des entrées-sorties sur périphériques
(terminaux, imprimantes, disques, bandes). D'un point de vue externe, il n'y a pas de différence pour les utilisateurs
entre les fichiers ordinaires, les répertoires et les périphériques pour ce qui a trait à leur référençage. Un fichier
spécial est associé à un dispositif d'entrée-sortie physique. Les fichiers spéciaux sont traités par le système comme
des fichiers sur disque ordinaires, mais les opérations de lecture ou d'écriture sur ces fichiers activent les dispositifs
physiques associés. A un niveau un peu plus fin on peut distinguer deux types de fichiers spéciaux :

• les fichiers spéciaux en mode caractère comme les terminaux pour lesquels les entrées-sorties sont réalisées
caractère par caractère ;
• Les fichiers spéciaux en mode bloc comme les disques où les entrées-sorties sont réalisées par bloc (la taille
des blocs étant en général 512 ou 1024 caractères).

II-C-3 - Répertoires

Nous avons vu leur rôle essentiel dans le système puisque c'est par leur intermédiaire que les utilisateurs peuvent
désigner leurs fichiers. Citons les répertoires principaux que l'on trouve sur tous les systèmes :

• /bin : les fichiers exécutables (en binaire) (initialisation du système + commandes "essentielles") ;
• /boot : le noyau vmlinuz et les fichiers de démarrage ;
• /dev : répertoire de fichiers spéciaux, qui servent de canaux de communication avec les périphériques
(disques, adaptateurs réseau, cartes son, etc.) ;
• /etc : les fichiers de configuration du système et les principaux scripts de paramétrage ;
• /home : la racine des répertoires personnels des utilisateurs ;
• /lib : les bibliothèques et les modules du noyau.
• /mnt : la racine des points de montage des systèmes de fichiers périphériques ou extérieurs (cd, disquette,
nfs, etc.) ;
• /opt : lieu d'installation d'applications supplémentaires (comme emacs, java, etc.) ;
• /root : répertoire personnel du super-utilisateur root ;
• /sbin : les fichiers exécutables pour l'administration du système ;
• /tmp : stockage des fichiers temporaires ;
• /usr : programmes accessibles à tout utilisateur, sa structure reproduit celle de la racine / ;
• /var : données variables liées à la machine (fichiers d'impression, traces de connexions http, smb, etc...
dans /var/log) ;
• /proc : ce pseudo-répertoire contient une "image" du système (/proc/kcore est l'image de la RAM) ;

- 14 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

• /lost+found : contient les pointeurs de blocs vers les blocs de données qui occupent des mauvais secteurs du
disque.

II-D - Les disques logiques

L'espace physique global sur disque est divisé en disques logiques référencés dans le catalogue /dev (ce sont des
fichiers spéciaux) et à chacun de ces disques logiques peut être associée une référence de catalogue. Chacun des
disques logiques possède sa propre table d'index et sa propre racine de numéro 2. L'un des disques, dit disque
système, est privilégié: il contient le noyau, les fichiers systèmes, etc. Au lancement du système, ces disques peuvent
être montés et par conséquent devenir accessibles (donc référençables). Le disque système est naturellement
toujours monté !

II-E - La protection des fichiers

Sous Linux, tout utilisateur possède, associé à son identification, un numéro de compte et appartient à un groupe
particulier. Ainsi, pour un fichier donné, les utilisateurs du système peuvent-ils être classés en trois catégories :

• le propriétaire du fichier ;
• les membres d'un groupe particulier (groupe propriétaire) ;
• les autres utilisateurs.

Il existe par ailleurs dans le système un utilisateur privilégié disposant de tous les droits (le super-utilisateur dont une
identification est root et le compte 0).

• la lecture ;
• l'écriture ;
• l'exécution.

Précisons que le droit d'exécution pour un utilisateur ou une catégorie d'utilisateurs, lorsqu'il est appliqué à un
répertoire, signifie que cet utilisateur a la permission de faire figurer ce répertoire dans une référence ou de s'y
positionner (c'est-à-dire d'en faire son répertoire de travail), le droit de lecture étant le droit de lire les noms référencés
dans ce catalogue et le droit d'écriture la possibilité d'écrire dans ce répertoire, et en particulier de détruire un fichier
du répertoire, et cela même sans aucun droit de lecture ou d'écriture sur ce fichier lui-même. Pour un fichier ordinaire,
le droit de lecture donne la possibilité de lire le contenu du fichier et le droit d'écriture celui de modifier le fichier.

Pour assurer ces protections, le système utilise donc 9 bits du i-noeud du fichier indiquant pour chaque catégorie
d'utilisateurs et chacune des opérations si l'opération est réalisable. De plus 3 autres bits ont un rôle spécial :

• le bit "set-uid" qui, lorsqu'il est positionné pour un fichier binaire exécutable, indique que le processus
correspondant à une exécution de ce programme a les droits du propriétaire du programme et non de
l'utilisateur qui le lance. C'est ce mécanisme qui permet à tout utilisateur de modifier le fichier /etc/passwd
dont l'utilisateur privilégié root est propriétaire au travers de la commande passwd (le "set-uid bit" est
positionné pour le fichier de référence /bin/passwd contenant le programme réalisant cette commande) ;
• le bit "set-gid qui a le même rôle que le précédent mais relativement au groupe ;
• le bit de "collage" (sticky bit) qui assure le maintien d'un programme en zone de swap même lorsqu'aucun
processus actif ne correspond à une exécution du programme.

II-F - Comment manipuler des fichiers ?

II-F-1 - Connaître le répertoire de travail : pwd

La commande pwd fournit le nom du répertoire de travail (c'est-à-dire la référence absolue du répertoire où vous
vous trouvez).

- 15 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

II-F-2 - Changer de répertoire de travail : cd

La commande cd permet de se déplacer dans l'arborescence du système de fichiers. Elle peut être utilisée sans
paramètre, auquel cas le répertoire privé de l'utilisateur devient le répertoire de travail; ou avec un paramètre, qui
doit alors désigner un répertoire (ce paramètre peut être une référence absolue ou relative de répertoire), auquel cas
ce répertoire devient le répertoire de travail. Nous verrons un peu plus loin qu'il s'agit là d'une commande interne
au langage de commandes (il ne lui correspond pas de fichier exécutable) contrairement à la plupart des autres
commandes qui sont externes.

II-F-3 - Lister le contenu d'un répertoire : ls

La commande ls permet de connaître le contenu d'un ou plusieurs répertoires et les caractéristiques de fichiers ou
répertoires donnés en arguments au moyen de diverses options. Utilisée sans argument, elle traite le répertoire de
travail.

L'option -l de la commande ls permet d'obtenir des informations sur le type du fichier : répertoire, fichier ordinaire ou
fichier spécial, les droits d'accès au fichier par les différents utilisateurs du système, le nombre de liens du fichier, les
noms du propriétaire et du groupe, la taille des fichiers en nombre de caractères et la date de dernière modification.
Elle fournit par ailleurs le nombre total de blocs physiques occupés par les fichiers énumérés.

L'option -a de la commande ls permet de lister les fichiers cachés d'un répertoire.

L'option -i de la commande ls permet de connaître les numéros d'i-noeud des répertoires et fichiers.

- 16 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

II-F-4 - Afficher le contenu d'un fichier ordinaire : cat

La commande cat permet d'afficher sur la sortie standard le contenu d'un ou plusieurs fichiers dont les références
sont données en arguments; sans argument elle traite l'entrée standard.

La commande cat peut être appliquée à un répertoire, mais cela n'a pas beaucoup d'intérêt étant donné la nature des
informations contenues dans un tel fichier (codage de nombres entiers en binaire par exemple). Son utilisation sur
un répertoire, comme d'ailleurs sur un fichier binaire, ne fournit aucune information intéressante ; elle peut d'ailleurs
provoquer l'émission de caractères spéciaux vers le terminal.

II-F-5 - Copier un fichier : cp

La commande cp permet d'effectuer une copie physique d'un fichier dans un autre; il y a création d'un nouvel i-noeud,
création d'une nouvelle entrée dans un répertoire et recopie effective du contenu du premier fichier.

II-F-6 - Créer un lien sur un fichier : ln

Il est possible de créer des liens d'un fichier ordinaire ou spécial, c'est-à-dire de créer plusieurs références différentes
à un même fichier physique au moyen de la commande ln (il s'agit de la création de synonymes d'un même objet
sans création de nouvel i-noeud).

- 17 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

II-F-7 - Couper ou renommer un fichier : mv

Je pense que cette commande se passe de commentaire.

II-F-8 - Supprimer un fichier : rm

La suppression d'un lien d'un fichier est réalisée par la commande rm, un fichier n'étant physiquement supprimé sur
le disque que lorsque le compteur de liens de son i-noeud devient nul.

II-F-9 - Créer un répertoire : mkdir

Il est cependant important de se rappeler que la création d'un répertoire ne signifie pas la création d'un répertoire
vide au sens propre du terme. Cela va créer un répertoire contenant 2 références qui sont . et ..

II-F-10 - Supprimer un répertoire : rmdir

La suppression d'un catalogue vide (c'est-à-dire ne contenant que les références . et ..) est réalisée par la commande
rmdir

II-F-11 - Changer les droits, le groupe et le propriétaire d'un fichier et d'un répertoire : chmod,
chown, chgrp

Le propriétaire d'un fichier peut modifier le nom du propriétaire, le groupe auquel sont appliqués les droits de groupe et
les droits d'accès des différentes catégories d'utilisateurs à ce fichier, et lui seul (avec le super-utilisateur) peut le faire.

- 18 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

III - La gestion des processus sous LINUX

Nous avons plusieurs fois dans ce qui précède fait usage du terme processus sans vraiment le définir. Dans ce
chapitre, nous nous proposons de préciser cette notion et d'étudier (d'un point de vue externe, pour le moment) un
certain nombre de principes qui la régissent et les commandes principales correspondantes.

III-A - Qu'est-ce qu'un processus ?

Dans tout ce qui suit, nous appellerons processus (ou tâche) toute exécution d'un programme à un instant donné, le
programme constituant en lui-même un objet inerte, rangé sur disque sous la forme d'un fichier ordinaire exécutable.
On peut à ce stade distinguer deux types de processus:

- 19 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

• les processus système qui ne sont attachés à aucun terminal, qui sont créés au lancement du système
ou à des dates fixées par l'administrateur du système; les premiers ne sont interrompus qu'à l'arrêt du
système (citons le swapper, un certain nombre de processus dits démons comme, par exemple, le processus
assurant le bon usage de l'imprimante en spoule ou le processus cron, qui permet de lancer des tâches à
une date donnée) ;
• les processus lancés par un utilisateur particulier, depuis un terminal donné ou à une date donnée. En
particulier, le fait de se loguer sur un terminal, sous une identification donnée, provoque le lancement d'un
processus correspondant à l'exécution d'un programme déterminé à l'avance pour chaque utilisateur (une
référence du fichier contenant le programme à exécuter est donnée dans le fichier système /etc/passwd).
Il s'agit presque toujours d'un processus correspondant à l'exécution d'un interpréteur de langage de
commandes commme par exemple le Bash.

Le lancement d'un processus suppose par conséquent le chargement en mémoire centrale (à partir du disque) du
programme correspondant en vue de son exécution. La majorité des programmes Linux sont réentrants, c'est-à-dire
que si plusieurs utilisateurs demandent l'exécution d'un même programme, une seule copie du programme est placée
en mémoire centrale, le système assurant pour chacun des processus correspondants à la gestion d'une zone de
données propre à chacun et le bon déroulement de chacun des processus (sauvegarde de registres en particulier).
L'éditeur de liens de LINUX (commande ld) fournit ou non (selon les options) des modules exécutables réentrants
(zone instructions protégée en écriture).

Un processus possède un certain nombre de caractéristiques:

• une identification (un nombre entier) ;


• un propriétaire (en fait il y en a deux, qui sont des entiers) ;
• un groupe propriétaire (également deux entiers) ;
• un terminal d'attachement ;
• un certain nombre d'autres attributs (comme par exemple la priorité ou le répertoire de travail) sur lesquels
nous reviendrons ultérieurement.

III-B - Lister les processus actif : ps

Tout utilisateur a la possibilité de connaître la liste des processus qui sont attachés à son terminal à un instant
donné, ainsi que les caractéristiques de ces processus, au moyen de cette commande. L'exemple suivant illustre
cette commande pour un utilisateur qui vient de se loguer:

Il est possible d'avoir de plus amples informations sur les processus en utilisant des options. Par exemple:

Petite définition de chaque partie du résultat:

• User: le propriétaire du processus, en général l'utilisateur qui a lancé le processus ;


• PID: le numéro d'identification unique du processus. Sont attribués dans l'ordre de lancement des processus.
Quand ils atteignent 30.000 ou plus, le nombre recommence à 0. Les numéros de 0 à 5 sont généralement
des processus de bas niveau du système d'exploitation qui ne peuvent être tués ;

- 20 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

• %CPU: pourcentage du temps de CPU consacré à l'exécution de ce processus ;


• %MEM: pourcentage de mémoire totale utilisée par ce processus ;
• VSZ: superficie totale de la mémoire virtuelle, en blocs de 1k ;
• RSS: taille réelle de l'ensemble, le chiffre exact de la mémoire physique allouée à ce processus ;
• TTY: terminal associé à ce processus. Le point d'interrogation indique que le processus n'est relié à aucun
terminal ;
• STAT: code d'état du processus. Les différents états sont S - repos, R - exécution (sur file d'attente), Z -
zombie, N - tâche de faible priorité ;
• START: lorsque le processus a été lancé, ceci indique en heures et minutes depuis quand le programme
a été lancé, ou indique depuis combien de jours le processus est lancé si ilfonctionne depuis plus d'une
journée ;
• TIME: temps CPU utilisé par le processus depuis le début du lancement ;
• COMMAND: le nom de la commande.

Il y a aussi ps -ef qui est équivalent à ps aux mais qui a l'avantage de fonctionner sur les
versions POSIX qu'on trouve sur les autres systèmes Unix.

III-C - Interrompre un processus

Les processus peuvent être, en général, interrompus par l'envoi d'un signal depuis le terminal. L'émission de ce signal
est provoquée par la frappe de caractères particuliers que nous désignerons par CTRL + C. Ce signal à pour effet
d'interrompre tous les processus attachés au terminal depuis lequel il est émis, sauf demande expresse formulée
par le processus comme nous le verrons.

Un certain nombre de processus n'acceptent pas les interruptions par ces signaux. C'est le cas, par exemple, des
processus associés au Shell, dont on ne peut sortir depuis le terminal que par CTRL + D (indiquant par là la fin des
données à interpréter). Nous verrons plus loin comment forcer l'interruption de processus de ce type et, par ailleurs,
comment créer soi-même des tâches ayant ces propriétés.

III-D - La redirection des fichiers standards

Les processus fournissant des résultats (par exemple ls, who ou ps) les écrivent sur la sortie standard qui est,
par défaut, physiquement associée au terminal de lancement du processus (un fichier spécial /dev/tty"numéro du
terminal"). De façon analogique, les processus ayant besoin de données extérieures, en cours d'exécution (par
exemple mail, write ou sh) les lisent sur l'entrée standard également associée par défaut à ce terminal. Il est possible
d'affecter ces fichiers d'entrée et de sortie standards à d'autres dispositifs que la console qui contrôle le processus. Ce
fichier peut être un autre fichier spécial ou un fichier ordinaire; la seule contrainte est que l'utilisateur ait l'autorisation
d'écriture ou de lecture (suivant le cas) sur ledit fichier. La redirection de la sortie standard d'une commande dans un
fichier répond à la syntaxe commande > référence. Si le fichier existe, il est préalablement supprimé.

Il est également possible d'ajouter des résultats d'un processus à la fin d'un fichier (donc sans effacement de son
contenu antérieur) par des commandes de la forme commande >> référence comme l'illustre l'exemple suivant:

- 21 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

On constate que la redirection de la sortie standard est sans aucun effet sur le déroulement du processus. De fait,
lors de l'apparition d'une erreur, le message d'erreur n'est pas envoyé sur cette sortie, mais un autre fichier standard
appelé sortie d'erreur standard également associée de manière standard au terminal. Il est possible de rediriger cette
sortie à peu près de la même manière que la commande précédente commande 2 > référence ou commande 2
>> référence.

On peut, de même, rediriger l'entrée standard d'un processus où sont lues les données. Cette redirection répond à
la syntaxe commande < référence.

III-E - Processus parallèles et communication

Pour continuer ce premier contact avec l'univers LINUX, nous montrons quelques autres possibilités supplémentaires
communes aux différents langages de commandes. Ainsi il est tout d'abord possible d'enchainer deux ou plusieurs
processus de façon totalement indépendante et en séquence, le déroulement du premier n'influant pas sur celui du
second qui est lancé à la fin de son exécution.

Les enchaînements de commandes que nous venons de voir ont deux caractéristiques essentielles:

• Ils sont séquentiels, c'est-à-dire qu'une commande n'est lancée (et le processus associé créé) que lorsque la
précédente est terminée; il n'y a aucun parallélisme dans l'exécution. Eventuellement, comme c'est le cas des
différents Shell, un processus en lance un autre et est suspendu jusqu'à la fin du processus qu'il a lancé.
• Les processus sont totalement indépendants, c'est-à-dire que le déroulement de l'un ne dépend pas de celui
des précédents. Il n'y a aucun échange d'informations entre les différents processus.

III-F - Lancer un processus en arrière-plan

Les utilisateurs disposent d'un mécanisme leur permettant de lancer un certain nombre de processus de façon
concurrente (en quelque sorte parallèlement) et communiquant entre eux par l'intermédiaire de tubes (pipes), le
système assurant la synchronisation de l'ensemble des processus ainsi lancés. Le principe général de fonctionnement
est assez simple: la sortie standard de chaque processus pipé (excepté le dernier) est redirigée sur un tube et l'entrée
standard du processus suivant est redirigée sur ce tube, si bien que les données d'un processus sont constituées par
les résultats du précédent dans la liste des processus donnés. Examinons sur un exemple simple ce qui se passe
exactement:

- 22 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

La commande grep permet de rechercher une chaîne de caractères dans un fichier. La commande ps aux | grep
pts/0 entraîne la création de deux processus concurrents, les résultats du premier (correspondant à la commande ps
aux) étant envoyés sur un tube. C'est au niveau du tube que le second processus (correspondant à la commande
grep pts/0) prend ses données, plutôt qu'au clavier. La sortie standard du processus ps aux a été redirigée sur le
tube et l'entrée standard du processus grep pts/0 également. Le système assure la synchronisation de l'ensemble
dans le sens où:

• Il suspend le processus lecteur dans le tube lorsque le tube est vide;


• Il suspend le processus écrivain dans le tube lorsque le tube est plein.

Sur ce dernier exemple vous avez pu voir l'existence effective des deux processus (le processus ps aux et le
processus grep pts/0).

III-G - Lancer un processus en mode détaché

Une autre facilité particulièrement intéressante qui est offerte aux utilisateurs est la possibilité de lancer des processus
en mode batch: ces processus sont dits en arrière-plan ou background et sont tels que le processus Shell qui les
crée reprend son exécution après les avoir créés sans attendre leur achèvement. Ce mécanisme permet ainsi à un
même utilisateur de lancer depuis un seul poste de travail plusieurs tâches différentes: c'est, avec le mécanisme
décrit précédemment, une seconde illustration de l'aspect multitâches du système pour chaque utilisateur. Il faut
cependant être conscient que ce procédé au demeurant fort agréable (en effet rien n'est plus pénible que de lancer
la compilation d'un programme et de ne pouvoir utiliser son terminal durant toute cette compilation) conduit souvent
à surcharger le système et par conséquent cette facilité doit être utilisée à bon escient.

Nous donnons ci-dessous un exemple de création d'un tel processus en arrière-plan correspondant au démarrage de
l'éditeur de texte gedit. Le caractère & qui suit la commande indique que le processus créé doit l'être en arrière plan.

Le système répond en indiquant le numéro du processus créé. Il faut savoir qu'un tel processus a les mêmes sortie
standard et sortie erreur standard que le processus qui le crée: ainsi en mode standard, les résultats éventuels sont
affichés sur l'écran. Il est possible (et fort agréable) d'utiliser les redirections pour ces processus. Par ailleurs les
processus ainsi détachés ne sont plus sous le contrôle direct de la console, en ce sens qu'ils ne peuvent plus lire de
données au clavier du terminal. Leur entrée standard doit être redirigée, faute de quoi elle sera redirigée par défaut
sur le fichier spécial de référence absolue /dev/null qui est, en quelque sorte, un puits sans fond où les utilisateurs
peuvent envoyer tout ce dont ils ne veulent pas. Ces processus ne peuvent, par ailleurs, plus être interrompus par
le signal correspondant à CTRL + C dont nous avons parlé un peu avant.

III-H - Interruption de processus, le retour

L'interruption des processus lancés en background (ce qui est également vrai pour ceux qui ne le sont pas) peut être
réalisée de différentes manières:

• soit en se déloguant (c'est-à-dire en signalant au Shell principal du terminal la fin des données par la
séquence CTRL + D) cela a pour effet d'interrompre la session de travail sur le terminal et, par voie de
conséquence, tous les processus lancés depuis ce terminal (nous verrons plus tard qu'un signal particulier
nommé SIGHUP est alors adressé à tous les processus attachés au terminal) ;

- 23 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/
Présentation du système Linux par Julien Plu

• Soit en lançant un processus d'interruption à destination du processus visé; nous verrons également plus
tard qu'un certain nombre de signaux peuvent provoquer l'interruption d'un processus. Les signaux sont
identifiés par des nombres (le signal correspondant à CTRL + C vaut 2). Signalons dès maintenant qu'il en
est un qui ne peut, en aucun cas, être ignoré par les processus et constitue donc une arme absolue contre
les processus indésirables: il s'agit du signal 9 (SIGKILL). Un signal peut être adressé directement à un
processus au moyen de la commande kill. On lui fournit, en arguments, le numéro du signal et l'identification
du processus destinataire. La commande ps est alors particulièrement utile pour retrouver le numéro d'un
processus.

La commande kill -9 IDProcessus permet, en toutes circonstances à un utilisateur de tuer un processus de numéro
donné depuis n'importe quel terminal; cela est particulièrement important lorsqu'on a perdu pour une raison ou une
autre la main à son terminal et que le signal correspondant à la séquence CTRL + C sont sans effet; il est alors
nécessaire d'envoyer ce signal d'interruption depuis une autre console. La seule contrainte à ce niveau est que l'on
ne peut envoyer un signal à un processus que si l'on en est le propriétaire (à moins d'être le super-utilisateur).

Pour terminer, signalons que le fait de se déloguer avant l'achèvement des processus lancés depuis un terminal en
background provoque l'interruption de ces processus (par l'émission d'un signal particulier que nous verrons plus
tard). Pour éviter ce phénomène, il existe une commande nohup qui permet aux processus lancés d'ignorer le signal
SIGHUP précédent. Ainsi la commande nohup prog "donnees" resultats& peut être lancée juste avant de se
déloguer. Il s'agit du lancement en background du processus correspondant à l'exécution du programme de référence
prog prenant ses données dans le fichier de référence "données" et écrivant ses résultats dans le fichier de référence
"résultats". Le fait de se déloguer n'interrompt alors plus le processus.

IV - Remerciements

Je remercie dourouc05 et ram-0000 pour leurs conseils et leur aide. Je remercie aussi u-milite et claudeleloup
pour leur correction orthographique de cet article.

- 24 -
Copyright ® 2010-2013 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation
expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://jplu.developpez.com/tutoriels/systeme/presentation-linux/

Vous aimerez peut-être aussi