0% ont trouvé ce document utile (0 vote)
106 vues123 pages

Cours

Ce document présente une introduction au système d'exploitation, en se concentrant sur le système UNIX. Il aborde les définitions, les fonctions, l'historique, ainsi que les commandes et la gestion des processus dans UNIX. Le document est structuré en plusieurs sections détaillant les différents aspects et fonctionnalités du système d'exploitation.

Transféré par

oussama07188
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
106 vues123 pages

Cours

Ce document présente une introduction au système d'exploitation, en se concentrant sur le système UNIX. Il aborde les définitions, les fonctions, l'historique, ainsi que les commandes et la gestion des processus dans UNIX. Le document est structuré en plusieurs sections détaillant les différents aspects et fonctionnalités du système d'exploitation.

Transféré par

oussama07188
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

1

Introduction au systeme d’exploitaion1

1ere Année Ingénieur Informatique


Dr Guelta Bouchiba

bouchiba@univ-usto,dz
2 Plan
I-introduction
Définition et Fonctions d’un système d’exploitation
Historique du système d’exploitation UNIX
II- Présentation du système UNIX
Les utilisateurs UNIX
Les principales fonctions
Structure du système UNIX
Le Shell
III- Ouverture et fermeture de session
Ouverture de session
Création/Changement de mot de passe
Fermeture de session
IV- Commandes UNIX
Syntaxe d’une commande
Les commandes de base
• 3 Plan
• V- redirection et pipe
Les entrées sorties
Redirection des entrées sorties
Redirection des erreurs
Les pipes
VI- repertoires et fichiers unix
Les types de fichier
Atteindre un fichier
Nommer un fichier
Le chemin d’accès
Visualiser les fichiers
Commandes de gestion des répertoires
Commandes de gestion des fichiers
Les liens (physiques et symboliques)
Les inodes
Les métacaractères
• 4 PLan
• Les droits d’accès
Identification de l’utilisateur
Définition des droits d’utilisateur
1. Cas d’un fichier classique
2. Cas d’un répertoire
Commandes associées
Changer les droits : chmod
Changer les droits par défaut : umask
Changer le propriétaire et le groupe
VII- Les filtres UNIX
Modifier les données d’un fichier
Couper un fichier en morceaux : split
Trier des fichiers : sort
5
Plan
Conversion de chaîne de caractère :tr
Edition de fichiers avec critères
Editer un fichier par la fin : tail
Editer un fichier par le début : head
Compter les lignes d’un fichier : wc
Edition de champ d’un fichier : cut
Fusion de fichier : paste
Extraction de lignes communes de deux fichiers : comm
Comparaison de fichiers
Comparer deux fichiers : cmp
Edition des différences entre deux fichiers : diff
VIII- Les commandes grep et find
Les expressions régulières
La commande grep
La commande find
6 Plan

IX- Gestion des processus


Les caractéristiques d’un processus
Visualiser les processus
Commandes de gestion des processus
Lancer un processus en tâche de fond
Arrêter un processus
X- INtroduction a l’administration
Installation d’un système UNIX (LINUX)
Gestion des comptes utilisateurs
7 introduction

 Système informatique = le matériel + le


logiciel L’objectif d’un système
informatique est d’automatiser le
traitement de l’information.
 Un système informatique est constitué
de deux entités : le matériel et le
logiciel.
8 introduction

 Côté matériel, un ordinateur est composé de :


 L’Unité Centrale (UC) pour les traitements
 la Mémoire Centrale (MC) pour le stockage,
 et les Périphériques d’E/S: disque dur, clavier,
souris, flash disque, carte réseau... accessibles via
des pilotes de périphériques.
introduction
9

 Côté logiciel, un système informatique est composé de


deux niveaux bien distincts :
 les Programmes d’application (achetés ou développés)
et les logiciels de base.
 Dans les logiciels de base, on trouve le système
d’exploitation (S.E.) et les utilitaires.
 L’objectif du logiciel est d’offrir aux utilisateurs des
fonctionnalités adaptées à leurs besoins.
 Le principe est de masquer les caractéristiques
physiques du matériel.
Système
10 d’exploitation

Système d'exploitation (noté SE ou OS (Operating System))


Il est chargé d'assurer la liaison entre les ressources matérielles, l'utilisateur et
les applications (traitement de texte, jeu vidéo, ...)

Applications

Système
d’exploitation

Pilotes

Matériel
Système
11 d’exploitation

 L'ordinateur serait bien difficile à utiliser sans S.E. En effet, le


matériel seul ne sait pas faire grand chose :
 Il peut exécuter des programmes, mais comment entrer ces
programmes dans la machine ? Comment les charger en
mémoire ?
 Il peut sauvegarder des données sur disque mais comment
accède-t-on à un disque ? Comment range-t-on les informations
sur le disque ?
Système
12
d’exploitation

 Il peut lire ce qui est tapé au clavier à condition qu'on écrive


un programme chargé de cette tâche.
 Bref, nous avons besoin d'un ensemble de programmes (un
logiciel) qui permette d'exploiter les ressources de la machine
(périphériques, mémoire, processeur(s)).
 Ce logiciel, c'est le système d'exploitation (S.E.).
Système
13
d’exploitation
 Qu’est ce qu’un Système d’Exploitation ?

Le système d’exploitation (Operating System, O.S.) est


l’intermédiaire entre un ordinateur (ou en général un appareil
muni d’un processeur) et les applications qui utilisent cet
ordinateur ou cet appareil
Fonctions
14 d’un S E
 Les rôles du système d'exploitation sont divers :
 Gestion du processeur : allocation du processeur aux différents
programmes.
 Gestion des objets externes : principalement les fichiers.
 Gestion des entrées-sorties : accès aux périphériques, via les
pilotes.
 Gestion de la mémoire : segmentation et pagination.
 Gestion de la concurrence : synchronisation pour l'accès à des
ressources partagées.
 Gestion de la protection : respect des droits d'accès aux
ressources.
 Gestion des accès au réseau : échange de données entre des
machines distantes.
Historique
15 des S E

 Les systèmes d'exploitation ont été historiquement liés à


l'architecture des ordinateurs sur lesquels ils étaient implantés.
Nous décrirons les générations successives des ordinateurs et
observons à quoi ressemblait leur système d'exploitation.
Historique
16 des S E

 1- Porte ouverte ou exploitation self service (1945- 1955)


Les machines de la première génération: appelées Machines
à Tubes, étaient dépourvues de tout logiciel. Les programmes
utilisateurs étaient chargés en mémoire, exécutés et mis au
point depuis un pupitre de commande. Ces machines étaient
énormes, remplissaient les salles avec des centaines de tubes à
vide (Vacuum Tubes), coûteuses, très peu fiables et beaucoup
moins rapides car le temps de cycle se mesurait en secondes.
Les programmes étaient écrits directement en langage machine
: ils étaient chargés en mémoire, exécutés et mis au point à
partir d'un pupitre de commande
Historique
17
des S E
 Au début de 1950, la procédure s'est améliorée grâce à
l'introduction de cartes perforées.
 Afin d’utiliser la machine, la procédure consistait à allouer
des tranches de temps directement aux usagers, qui se
réservent toutes les ressources de la machine à tour de rôle
pendant leur durée de temps.
 Les périphériques d’entrée/sortie en ce temps étaient
respectivement le lecteur de cartes perforées et l’imprimante.
Un pupitre de commande était utilisé pour manipuler la
machine et ses périphériques.
 Chaque utilisateur, assurant le rôle d’opérateur, devait lancer
un ensemble d’opérations qui sont :
Historique
18 des S E
 Placer les cartes du programme dans le lecteur de cartes.
 Initialiser un programme de lecteur des cartes.
 Lancer la compilation du programme utilisateur.
 Placer les cartes données s’il y en a, dans le lecteur de cartes.
 Initialiser l’exécution du programme compilé.
 Détecter les erreurs au pupitre et imprimer les résultats.
19 Historique des SE

Inconvénients

Temps perdu dans l’attente pour lancer


l’exécution d’un programme.
Vitesse d’exécution de la machine limitée par
la rapidité de l’opérateur qui appuie sur les
boutons et alimente les périphériques.
Pas de différences entre : concepteurs ;
constructeurs ; programmeurs ; utilisateurs ;
mainteneurs.
Historique
20
des S E
 L'ENIAC est en 1945 le premier ordinateur entièrement électronique
pouvant être Turing-complet. Il peut être reprogrammé pour résoudre, en
principe, tous les problèmes calculatoires.
 Date de commercialisation : 15 février 1946
 Fabricant : Moore School of Electrical Engineering
 Date de sortie : 10 décembre 1945
 Date de retrait : 2 octobre 1955
 Développeur : John Presper Eckert, John William Mauchly
Historique
21 des S E
 L'EDVAC (Electronic Discrete Variable Automatic
Computer) est le successeur direct de l'ENIAC.
 Sa conception, menée à la Moore School de l'université de
Pennsylvanie par les auteurs de l'ENIAC, Eckert et
Mauchly, avec la collaboration de von Neumann, a
commencé en 1944, avant même la fin du projet ENIAC.
Historique
22 des SE

 L’architecture dite architecture de von Neumann est un


modèle pour un ordinateur qui utilise une structure de
stockage unique pour conserver à la fois les instructions et
les données demandées ou produites par le calcul. De telles
machines sont aussi connues sous le nom d’ordinateur à
programme enregistré. La séparation entre le stockage et le
processeur est implicite dans ce modèle.
Historique des S E
23

 2-Traitement par lots (Batch Processing, 1955-1965) Ce


sont des systèmes réalisant le séquencement des jobs ou
travaux selon l’ordre des cartes de contrôle à l’aide d’un
moniteur d’enchaînement. L’objectif était de réduire les
pertes de temps occasionnées par l’oisiveté du processeur
entre l’exécution de deux jobs ou programmes (durant cette
période, il y a eu apparition des machines à transistor avec
unités de bandes magnétiques, donc évolution des
ordinateurs).
24 Historique des S E
 L’idée directrice était de collecter un ensemble de travaux puis de les
transférer sur une bande magnétique en utilisant un ordinateur auxiliaire
(Ex. IBM 1401).Cette bande sera remontée par la suite sur le lecteur de
bandes de l’ordinateur principal (Ex. IBM 7094) afin d’exécuter les
travaux transcrits en utilisant un programme spécial (l’ancêtre des S.E.
d’aujourd’hui. Ex. FMS : Fortran Monitor System, IBSYS). Les résultats
seront récupérés sur une autre bande pour qu’ils soient imprimés par un
ordinateur auxiliaire.
25
Historique des S E
 Quand le moniteur rencontre une carte de contrôle indiquant
l’exécution d’un programme, il charge le programme et lui
donne le contrôle. Une fois terminé, le programme redonne
le contrôle au moniteur d’enchaînement. Celui-ci continue
avec la prochaine carte de contrôle, ainsi de suite jusqu’à la
terminaison de tous les jobs.
26
Historique des S E

 Inconvénients
 Perte de temps dû à l’occupation du
processeur durant les opérations d’E/S. (En
effet, le processeur restait trop inactif, car la
vitesse des périphériques mécaniques était
plus lente que celle des dispositifs
électroniques).
 Les tâches inachevées sont abandonnées.
27 Historique des S E
 3-(Multiprogramming, 1965- 1970) L'introduction des circuits
intégrés dans la construction des machines a permis d'offrir un meilleur
rapport coût/performance.
 L’introduction de la technologie des disques a permis au système
d’exploitation de conserver tous les travaux sur un disque, plutôt que dans
un lecteur de cartes (Arrivée des unités disques à stockage important et
introduction de canaux d’E/S).
 L’idée était alors, pour pallier

aux inconvénients du traitement


par lots, de maintenir en mémoire
plusieurs travaux ou jobs prêts
à s’exécuter, et partager efficacement
les ressources de la machine
entre ces jobs
28 Historique des S E
29 Historique des S E
 4-Temps partagé (Time Sharing, 1970-) C’est une variante du
mode multiprogrammé où le temps CPU est distribué en petites
tranches appelées quantum de temps.
 L’objectif est d’offrir aux usagers une interaction directe avec
la machine par l’intermédiaire de terminaux de conversation, et
de leur allouer le processeur successivement durant un quantum
de temps, chaque utilisateur aura l’impression de disposer de la
machine à lui tout seul. Il peut aussi contrôler le job qu’il a
soumis directement à partir du terminal (corriger les erreurs,
recompiler, resoumettre le job, …)
 Parmi les premiers systèmes à temps partagé, nous citons :
CTSS (Compatible Time Sharing System), MULTICS
(MULTiplexed Information and Computing Service),
UNIX, MINIX, LINUX. En fait, la plupart des systèmes
d’aujourd’hui sont en temps partagé.
30 Historique des S E
 L’histoire du système d’exploitation Unix commence en 1969 aux
laboratoires AT&T de Bell, et ceci avec le développement d’une version
simplifiée du système MULTICS par Ken Thompson.
 Brian Kernighan appela cette version UNICS (Uniplexed Information and
Computer Service) qui devint ensuite UNIX et qui était entièrement écrite
en assembleur.
 Le système Unix a connu un véritable succès, lorsqu'il fut réécrit en
langage C en 1973 par Dennis Ritchie et Thompson. Le langage de
programmation C a d’ailleurs été conçu initialement par D. Ritchie en
1971 pour la refonte d’Unix et son portage sur de nombreuses
architectures matérielles.
 En 1975, le système Unix (V6) est distribué aux universités et aux centres
de recherches. La principale université qui va travailler sur Unix est
l’université de Berkeley, qui va produire ses propres versions appelées
BSD (Berkeley Software Distribution). A Berkeley, les efforts portent sur
l’intégration des protocoles réseaux TCP/IP, la gestion de la mémoire
avec l’introduction de la pagination, la modification de certains paramètres
du système (taille des blocs, nombre des signaux...) et l’ajout d’outils
(l’éditeur vi, un interpréteur de commandes csh...).
31 Historique des S E
 En 1979, les Bell Labs sortent leur version appelée UNIX V7, avec en
particulier, l’ajout de nouveaux utilitaires et un effort en matière de portabilité.
Cette version est la première à être diffusée dans le monde industriel.
 Les nombreuses modifications et améliorations apportées au système UNIX,
par AT&T et Berkeley ont abouti aux versions System V Release 4 d’AT&T
et 4.4BSD de Berkeley.
 Le support de l’environnement graphique est apparu avec le système
XWindow du MIT en 1984.
 La fin des années 80 est marquée par une croissance sans précédent du
nombre de systèmes Unix dans le domaine des systèmes d’exploitation. Les
principales versions actuelles sont System VR4, GNU/Linux, SUN Solaris,
FreeBSD, IBM AIX, Microsoft Xenix…etc. Pour qu’un SE puisse être un
Unix, il faut qu’il respecte la norme POSIX (Portable Operating System
Interface). Tout logiciel écrit en respectant la norme Posix devrait fonctionner
sur tous les systèmes Unix conformes à cette norme.
 En 1991 Linus Torvalds cree Une version gratuite d'Unix porte le nom de
Linux (code source disponible). Conçu d'abord pour tourner sur des machines
avec le processeur 80x86, Linux a migré à plusieurs autres plate-formes.
32 Historique des S E
33 Architecture UNIX

 UNIX a été conçu autour d’une architecture en couche qui repose sur
différents niveaux bien distincts à savoir :
 Le noyau
 Un interpréteur de commandes (le shell)
 Des bibliothèques
 Un nombre important

d’utilitaires.
Composantes du S.E UNIX
34

 A- Le noyau (Kernel) est la partie centrale d’Unix. Il est résident ; il se


charge en mémoire au démarrage. Il s’occupe de gérer les tâches de base du
système :
 Gestion de la mémoire : règle la quantité de mémoire vive utilisée et
l’endroit où elle est utilisée.
 Gestion des processus : détermine quels processus le processeur peut
utiliser, quand et pendant combien de temps.
 Pilote de périphérique : intermédiaire entre le matériel et les processus.
 Appel au système et sécurité : reçoit des demandes de service des
processus.
 Les fonctions d’un noyau, lorsqu’il est correctement implémenté, restent
invisibles pour les utilisateurs. Il travaille dans son propre
monde, l’espace du noyau. Les fichiers, les programmes, les jeux, les
navigateurs, bref, tout ce que l’utilisateur voit, se passe dans l’espace
utilisateur. L’interaction des deux mondes passe par une interface
d’appel système, ou syscall en anglais.
S.E UNIX Versions
35

 En 2003, avec la version 2.6.x du noyau,


 En 2011, on est passé à 3.x (qui a succédé à la
2.6.39),
 puis en avril 2015 à la 4.x et on attend la 5.x
 En 2018. Ce sont des changements de releases
majeures.
Composantes
36
du S.E UNIX
 B. Bibliothèques L’interface entre le noyau Unix et les applications est
définit par une bibliothèque (Ex. libc.a pour le langage C). Elle contient
les modules permettant d’utiliser les primitives du noyau mais aussi des
fonctions plus évoluées combinant plusieurs primitives. D’autres
bibliothèques sont utilisées pour des services spécialisés (fonctions
graphiques,...).
 C. Le shell désigne l’interface utilisateur sous UNIX. C’est un
programme qui permet à l'utilisateur de dialoguer avec le noyau. Il joue
un double rôle celui d’interpréteur de commandes et celui de langage de
programmation. Il existe plusieurs shells différents mais les plus
répondus sont:  le Bourne Shell : sh  le C-shell : csh
 le Korn-Shell : ksh  Bash (Bourne Again Shell) : est un
interpréteur (Shell) compatible sh qui exécute les commandes lues
depuis l'entrée standard, ou depuis un fichier. C'est le shell par défaut
sous Gnu/Linux.
D. Utilitaires UNIX est livré avec un grand nombre de programmes
utilitaires, parmi lesquels :  Compilateurs : cc, gcc  Gestionnaire
d’applications : make  Editeurs de texte : vi, emacs
Caractéristiques
37

 Les principales caractéristiques, auxquelles est dû le succès d’UNIX,sont:


 Portabilité : Une des premières caractéristiques d’Unix est son écriture
(à hauteur de 95%) en langage C, permettant ainsi une portabilité sur la
plupart des architectures en allant des micro-ordinateurs jusqu’aux
supercalculateurs.
  Multi-utilisateurs et Multitâches : Plusieurs utilisateurs peuvent
accéder simultanément au système ; chaque utilisateur peut effectuer une
ou plusieurs tâches en même temps.
  Temps partagé : c’est-à-dire que les ressources du processeur et du
système sont réparties entre les utilisateurs.
  Interface utilisateur interactive (shell) : elle est constituée d’un
programme séparé du noyau permettant à l’utilisateur de choisir son
environnement de travail. Elle intègre un langage de commandes très
sophistiqué (scripts).
  Système de fichiers hiérarchique : plusieurs systèmes de fichiers
peuvent être rattachés au système de fichiers principal ; chaque système
de fichiers possède ses propres répertoires
38 Caractéristiques
.  Entrées-Sorties intégrées au système de fichiers : les
périphériques sont représentés par des fichiers, ce qui rend le
système indépendant du matériel et en assure la portabilité ;
l’accès aux périphériques est donc identique à l’accès aux
fichiers ordinaires.
  Gestion de la mémoire virtuelle : un mécanisme d’échange
entre la mémoire centrale (MC) et le disque dur permet de
pallier un manque de MC et optimise le système
 Sécurité élevé et le respect des grands standards, notamment en
matière de réseau.
39 Linux
 Initialement conçu pour fonctionner sur plateforme PC, puis
a été porté (c'est-à-dire adapté) vers de nombreuses autres
plateformes, telles que Macintosh, assistants personnels
(PDA), voire des consoles de jeu vidéo !
 Plusieurs distribution (l'assemblage d'un ensemble de
logiciels autour d'un noyau Linux afin de fournir un système
clé en main):
 RedHat ; Debian ; SuSe ; Knoppix ;
 Slackware ; Mandriva.
Linux
40 : Fonctionnalités

Gestion des ressources de l'ordinateur


Multi-tâches
Multi-utilisateurs
Gestion des données
Accès aux unités de stockage (mémoire, disques durs, CD, etc.)

Communication entre utilisateurs


Courrier électronique, transferts de fichiers (ftp)

Environnement de programmation
Compilateurs C, éditeurs de textes (emacs, nedit), …
Connexion
41 et déconnexion

 Procédure de connexion
login: nom-utilisateur;
password : mot-de-passe
 plus 7 caractères,
 au moins une lettre majuscule, un chiffre et un caractère de ponctuation

 Procédure de déconnexion
commande : logout ou exit (invité de commande)
42 Utilisateurs

 Toute entité (personne physique ou programme particulier)


devant interagir avec un système UNIX est authentifiée sur
cet ordinateur par un utilisateur ou “user”.
 Ceci permet d’identifier un acteur sur un système UNIX. Un
utilisateur est reconnu par un nom unique et un numéro
unique.
 Sur tout système UNIX, il y a un super-utilisateur,
généralement appelé root, qui a tous les pouvoirs sur le
système. Il peut accéder librement à toutes les ressources de
l’ordinateur, y compris à la place d’un autre utilisateur, c’est-
à-dire sous son identité. En général, du moins sur les
systèmes de production, seul l’administrateur système
possède le mot de passe root. L’utilisateur root porte le
numéro 0.
43 utilisateurs

 Utilisateurs : fichier /etc/passwd


 On peut créer un utilisateur de plusieurs manières mais la
finalité est toujours la même : pour chaque utilisateur, une
entrée doit être créée dans le fichier /etc/passwd sous ce
format :
 Illustration :Par exemple, on ajoute un utilisateur “user1” :
 echo user1:x:2000:2000:user1:/home/user1:/bin/bash" >>
/etc/passwd
 Mais faut-il encore créer le groupe correspondant, vérifier la
validité des UID et GID, créer le répertoire utilisateurs, y
donner les droits et y placer une structure …
44

 Mots de passe : fichier /etc/shadow


 Le mot de passe est écrit dans le fichier /etc/shadow avec ses
paramètres :- nom de connexion de l’utilisateur (« login »)
 mot de passe chiffré : $1$ (MD5),$2$ (Blowfish), $5$ (SHA-
256), $6$ (SHA-512)
 date du dernier changement de mot de passe
 âge minimum du mot de passe
 âge maximum du mot de passe
 période d’avertissement d’expiration du mot de passe
 période d’inactivité du mot de passe
 date de fin de validité du compte - champ réservé

Illustration:francois:$6$d/
uLirbD$s90XRAj6g14036jIuvYYQaSOSrcJKqiNNywIQplztk
TlyIrySZE1o2zjFvSobewvyORXFdZ7bGeF0U1OTPoOm.:168
42:0:99999:7:::
45 Utilisateurs et groupes Linux

1- su (switch user) est une commande qui permet de s’identifier avec un autre
utilisation ou passer une commande avec un autre utilisateur dans
un terminal.Vous pouvez donc à tout moment basculer et passer sur un autre
utilisateur.
su [options] [utilisateurs [arguments]]
Si un nom d’utilisateur est spécifié, SU est par défaut sur le superutilisateur
(racine). Il suffit de trouver l’utilisateur dont vous avez besoin et de l’ajouter à la
syntaxe de commande SU.
Utilisateurs et groupes Linux
46

Pour basculer d’un autre utilisateur à l’autre, deux utilisations de la


commande su est possible :
su –l [autre_utilisateur] ou su – [autre_utilisateur]
Ci-dessous on bascule de l’utilisateur ubuntu à l’utilisateur bouchiba :
ubuntu@linux:~$ su –bouchiba
password
bouchiba@ :~$
Par exemple pour passer en root, on peut utiliser su de toutes ces manières
su –l , su – ,su -l root, su - root

Pour exécuter une commande spécifique comme utilisateur différent,


utilisez l’option -c :
su –c [commande] [autre_utilisateur]
Par exemple, ci-dessous, on exécute la commande whoami avec l’utilisateur
bouchiba qui retourne logiquement bouchiba. su -c whoami bouchiba
ubuntu@linux:~$ su – c whoami bouchiba
password
Bouchiba
ubuntu@linux:~$
47

 su –p [other_user]:
 Ceci est utile si vous devez exécuter une commande en tant
qu’utilisateur différent, mais vous avez besoin d’accéder aux
données actuelles de l’utilisateur.
2- sudo (abréviation de substitute user do) est une commande
permettant à l'administrateur système d'accorder à certains
utilisateurs (ou groupes d'utilisateurs) la possibilité de lancer
une commande en tant qu'administrateur.
 sudo -i revient au même que la commande su - en terme de
droits.
 Avec sudo -i, le mot de passe utilisateur est demandé.
Avec su -, le mot de passe root est demandé.
sudo -i est donc plus élégant que su -
Organisation
48 des fichiers

 La racine :
 Symbolisée par un "/", est la base de la hiérarchie des
répertoires (Arborescence)

 La structure de l'arborescence est standard avec


d'éventuelles extensions (définies par les distributions)
Organisation
49 des fichiers
Nom du Commentaires
dossier
/bin Regroupe les fichiers exécutables pour l'initialisation du
système et les commandes « essentielles »
/boot Contient le noyau et des fichiers nécessaires au démarrage
/dev Contient les fichiers spéciaux servant pour communiquer
avec les périphériques (disques, adaptateur réseau, cartes
son etc...)
/etc Contient les fichiers de configuration du système
/home Contient l'ensemble des répertoires personnels des
utilisateurs du système (le nom du répertoire correspondant
au login de l'utilisateur)
/lib Contient les bibliothèques (souvent des parties de
programmes qui peuvent être commune à plusieurs
programmes)
Organisation
50 des fichiers
/mnt Contient généralement l'ensemble des points de montage
des périphériques (cd, disquette...) Cependant sous Debian
on trouve souvent pour la disquette
/floppy et pour le CD /cdrom au lieu de /mnt/floppy et
/mnt/cdrom/optContient des applications supplémentaires
/root Est le répertoire personnel de l'administrateur
/sbin Contient les exécutables uniquement accessibles à
l'administrateur
/tmp Contient les fichiers temporaires du système
/usr répertoire personnel des utilisateurs, Contient les
programmes accessibles à l'ensemble des utilisateurs
/var Contient les données de cache pour certaines applications
(apt, cups...) ou encore les fichiers enregistrant les
messages du système
51 SHELL

 La ligne de commande

 La ligne de commande est un moyen simple d’interagir avec un


ordinateur.
 Le shell interprète les commandes tapées au clavier.
 Le prompt, ou l’invite de commande, qui se termine par un $ pour
un utilisateur standard ou un # pour l’administrateur du système
(désigné root), indique que le shell attend les commandes de
l’utilisateur.
 Le shell est également un langage de programmation que l’on peut
utiliser pour lancer des tâches automatiquement.
 Les programmes shell sont appelés par des scripts.
 Définitions 52 SHELL
 Le terminal = l’environnement d’entrée/sortie
 Shell =“Interpréteur” de commande : lancer des commandes,
 Environnement : confort de l’utilisateur, sécurité
 Langage de programmation : fonctionnalités
 Traitement du texte
 Interface avec le noyau
…
 le shell est le moyen le plus simple d’interagir avec le S E.
 Sur Microsoft Windows, selon les versions, le shell est appelé par les
commandes CMD.EXE ou COMMAND.COM,
 Sur Linux ou Unix, il existe plusieurs shells comme sh, bash, ksh, etc. Un
shell accepte des commandes frappées à partir d’une invite de commandes
(l’entrée standard) et les exécute, généralement en temps réel; l’affichage
des résultats est rendu en général sur un écran (la sortie standard).
53 Types de shells

 On obtient la liste des shells présents sur le


système en affichant le fichier /etc/shells :
 cat /etc/shells
 sh : Bourn Shell, historique, standard, “portable”
 csh/tcsh : C Shell
 ksh : Korn Shell
 bash : Bash est un Shell compatible avec sh qui
incorpore des spécificités utiles du Korn Shell
(ksh) et du C Shell (csh). Il est censé se
conformer à la norme IEEE POSIX P1003.2/ISO
9945.2 Standards des Shell et Outils. Il offre des
améliorations fonctionnelles par rapport à sh pour
la programmation et l’utilisation interactive.
54 Ouverture et fermeture de
session: login, logout et password

 Ouverture de session: login :Sur l’écran d’acceuil, vous devez voir


apparaître quelque chose de ce style:
Debian GNU/Linux testing
crabe login:
 login correspond à votre identifiant. Vous entrez alors votre
identifiant. Apparaît ensuite l’invite du password:

Dans le champ password, vous entrez votre mot de passe


Remarque: le champ password respecte la casse, c’est à dire que ce
champ sait reconnaître les minuscules et les majuscules. Donc
attention! Une fois connecté(e), le prompt apparaît
 [login@serveur login]$
55 Ouverture et fermeture de
session: login, logout et password

 Changement de mot de passe: password


 Vous pouvez changer de mot de passe à l’aide de la
commande passwd ou yppasswd, cela dépend du système utilisé. On a
donc:
 nadir@ipower:~$ passwd

Changing password for nadir


(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
 Fermeture de session: login
 Pour fermer votre session, utilisez la commande logout
 nadir@ipower:~$ logout

Ne jamais oublier de fermer votre session quelqu’un pourrait l’utiliser à


votre insu et effacer ou modifier vos données.

56 Commandes
 Interpréteur de commandes (shell)
Le Shell est un programme qui permet l'exécution de commandes qui
affichent en générale un résultat à l'écran.

Syntaxe des commandes : $nom_commande [options] [arguments]


 nom_commande : ls, chmod
 options : commencent habituellement par le caractère -
 arguments : spécifient les objets (fichiers ou variables)

Exemple :
$ cd, pwd
$ ls -l (l comme long, donne tous les attributs des fichiers)
$ cat fic1 (visualisation d'un ou plusieurs fichiers)

 Manuel des commandes (man)


commande : $ man nom_commande

Exemple : $ man ls
57 Commandes
 Redirection des entrées/sorties :
commande : nom_commande [options] [arguments] > fichier_sortie

Exemple :
$ ls -l > poub
$ date > poub

$ ls -l > poub et date >> poub

nom_commande [options] [arguments] < fichier_entrée

Exemple
$ wc (imprime le nombre de lignes, de mots et de caractères fournis à l'entrée
standard)
$ wc < poub
58 Commandes
 Tube (<<pipe>>) ‘|’
permet de prendre la sortie standard d'une première commande et de la rediriger
sur l'entrée standard d'une 2ème commande.

La syntaxe :
nom_commande1 [options] [arguments] | nom_commande2 [options]
[arguments]

Exemple :
$ ls -l fic? | wc (raccourci de la série de redirections vu précédemment)
$ ls /etc | more (permet de se déplacer dans un texte écran par écran)

 Scripts
 Un script correspond à une suite de commandes écrite dans un fichier.
 Les variables spéciales les plus utilisées dans l’écriture des scripts :
# : nombre d’arguments de la ligne de commande (entre 0 et 9)
* : liste contenant tous les arguments du programme shell
? : contient le code retour de la dernière commande exécutée (0 si erreur, 1 sinon)
59 Commandes

Exemple 1: Exemple 2 :
$ cat > script1 Écrire un script (copier) qui permet de copier un
fichier (premier argument) dans autre (deuxième
echo argument1 = $1
argument).
echo argument2 = $2
$ cat > copier
^D
cp $1 $2
^D
$chmod +x script1
$./ script1 aa bb cc
$ chmod +x copier
argument1 = aa
$./ copier fichier1 fichier2
argument2 = bb
Variables
60 d’environnement

•HOSTNAME : nom d'hôte


•PWD : répertoire de travail actuel, c'est-à-dire le répertoire dans
lequel on se situe (d'un point de vue du shell)
•HOME : emplacement du répertoire personnel de l'utilisateur,
que l'on appelle son "home"
•SHELL : interpréteur de commandes actuel (bash, zsh, ...)
•LOGNAME : nom de l'utilisateur actuellement connecté.
•UID : identifiant unique de l'utilisateur (par exemple : 1000).
Information visible dans le fichier /etc/passwd.
Cette liste n'est pas exhaustive et peut varier d'une
distribution à une autre.
Variables
61 d’environnement
 Nous pouvons, sous Linux, voir les variables
d'environnement qui sont présentes par défaut
en entrant l'une des deux commandes suivantes :
 Printenv
 env
 Pour une meilleure visibilité s'il y a beaucoup de
variables d'environnement, utilisez cette
commande pour parcourir la liste
progressivement :
 printenv | less
Variables
62 d’environnement

Changer de Shell
Pour changer de shell, un utilisateur doit exécuter la commande chsh
et préciser où se trouve son nouveau shell.
Il bénéficiera alors des fichiers de configuration par défaut que vous venez
d'installer. Il pourra aussi mettre ses propres fichiers de configuration
dans son home (même nom mais précédé d'un point).
Pour passer à zsh, un utilisateur doit donc taper :

% chsh
Enter the new value, or press return for the default Login
Shell [/bin/bash]:/bin/zsh
Manipulation
63 des fichiers

 Liste des fichiers (ls)


$ ls fichier1

 Création d'un fichier


éditeur de textes ou directement sur l’interpréteur
$ cat > fichier1
1ère ligne

 Visualisation d'un fichier (cat)


$ cat nom_fichier

 Destruction d'un fichier (rm)


$ ls fichier1 fichier2
$ rm fichier1
$ ls fichier2
Manipulation
64 des fichiers
 Copie d'un fichier (cp)
$ cp nom_fichier1 nom_fichier2
$ cp nom_fichier1 nom_répertoire

 Renommage ou déplacement d'un fichier (mv)


$ mv ancien_nom nouveau_nom (renommage)
$ mv nom_fichier nom_répertoire (déplacement)

 Création d'un répertoire (mkdir)


$ mkdir nom_répertoire (possible uniquement si celui-ci est inexistant)

 Destruction d'un répertoire (rmdir)


$ rmdir nom_répertoire (si le répertoire est vide)
$ rm -r nom_répertoire
(r comme récursif : effacement du contenu du répertoire et de lui-même)

 Déplacement dans les répertoire


$ cd nom_répertoire (changement de répertoire)
$ cd .. ()
65 Recherches

 Recherche d’une chaîne de caractères dans un fichier (grep)


commande : grep [option] motif [nom_fichier]

Exemple
$ grep son fic

[option]
-v : affichent les lignes qui ne contiennent pas le motif ;
-i : ignore la distinction minuscule/majuscule dans les comparaisons.

$ grep ^[a-d] fichier1

obtenir tous les lignes commençant par les caractères compris entre a et d
du fichier fichier1.
66 Recherches

Recherche d'un fichier (find)


commande : find liste_de_répertoires expression

 liste_de_répertoires est la liste des racines des arborescences à parcourir ;


 expression est une suite d'options exprimant les critères de sélection

-name motif : vrai si le motif s'applique sur le nom du fichier courant


;
-user nom_utilisateur : vrai si le fichier courant appartient à l'utilisateur
nom_utilisateur ;
-group recherche sur le groupe auquel appartient le fichier
-mtime n : vrai si le fichier a été modifié dans les n derniers jours
-ctime recherche par date de création du fichier

67 Recherches

 Recherche des utilisateurs connectés (who)


La commande who affiche les utilisateurs connectés sur la machine où l'on travaille.

$ who
Lartis ttyp1 Oct 23 22:25 (mistral.ERE.UMon)
perrot ttyp3 Oct 24 08:52 (San-A.grbb.polym)
68 Droits d’accès

Classes d'utilisateurs

 User (l’utilisateur)
 le propriétaire du fichier (User)
 il est désigné par la lettre u
 Group (groupe)
 le groupe dans lequel appartient le propriétaire (Group)
 il est désigné par la lettre g
 Others (autres)
regroupe tous les utilisateurs qui ne sont ni le propriétaire
ni faisant partir du même groupe que le propriétaire
ils sont désignés par la lettre o
69 Droits d’accès

Types d'accès
 Pour chaque classe d'utilisateurs, il y a 3 types d'accès à un
fichier donné :
• Read (r) : en lecture
• Write (w): en écriture
• eXecute (x) : en exécution
 Au niveau répertoire, ces droits signifient :
• Read : droit de lister les fichiers présents dans ce répertoire
• Write : droit de créer ou de détruire un fichier qui s'y trouve
• eXecute : droit de traverser ce répertoire
 3 types d'accès et les 3 classes d'utilisateurs, il y a donc 9 droits
d'accès différents
70

 Grâce à la commande ls -l ou ll (ll est un alias,


défini dans le fichier ~/.bashrc)
 cedric@desktop:~$ ls -l NSI/
 total 12
 drwxrwxr-x 2 cedric cedric 4096 févr. 17 16:21
Activites_Linux
 -rw-r--r-- 1 cedric professeurs 106 févr. 17 16:23
fichier1
 -rw-r--r-- 1 cedric professeurs 538 févr. 17 16:24
fichier2
 Interprétons la ligne en rouge :
 -rw-r--r-- 1 cedric professeurs 106 févr. 17 16:23
fichier1
 - : fichier ordinaire
71

 rw-r--r-- :
 r w - : l'utilisateur Propriétaire à les droits en
lecture et écriture,
 r - - : le groupe propriétaire seulement en
lecture,
 r - - : et les autres seulement en lecture.
 1 : nombre de liens
 cedric : utilisateur propriétaire
 professeurs : groupe propriétaire
 106 : taille du fichier en octets
 févr. 17 16:23 : date et heure de la dernière
modification
 fichier1 : nom du fichier
72
73
74 Droits d’accès
 Exemple :
ls : Liste le contenu du répertoire courant {ou le(s) fichier(s) ou répertoire(s)
spécifiés}

u
g
o
Droits d’accès
75

Modification des droits d'accès :


La commande : chmod mode nom_fichier

mode indique de quelle façon les droits d'accès doivent être modifiés
son syntaxe est : [qui] op accès

[qui]
 Indique les classes concernées par la commande (u, g
et o).
 Si aucune classe n'est spécifiée, toutes les classes sont
concernées

op peut être :
+ pour ajouter des droits d'accès
- pour enlever des droits d'accès
Accès : spécifie les types d'accès (r, w et x)
76 Droits d’accès
La commande permettant de changer les permissions est chmod.
Son utilisation est la suivante :
chmod (-R) [u g o a] [+ - =] [r w x (X) s t] fichier(dossier)
Les options u, g, o et a spécifient l'attribution des droits pour le
propriétaire (u : user), le groupe (g : group), les autres utilisateurs
(o : other). L'option a : all permet d'appliquer les droits à tous les
utilisateurs. Les symboles +, -, = indiquent l'ajout d'un droit, le
retrait et enfin l'égalité.
chmod ugo=rwx fichier
est équivalent à :
chmod a=rwx fichier
Le X majuscule permet, dans le cas d'une attribution récursive
des droits (option -R), de spécifier uniquement le droit
d’exécution sur les dossiers contenus dans un répertoire sans
toucher aux autres fichiers.
chmod -R g=rwX dossier/
77

 Exemples de chmod sur le fichier monFile.txt :


 - chmod o-w monFile.txt : on supprime le droit d'écriture
pour les autres ( others).
 - chmod u+rwx monFile.txt : on octroie les droits de lecture,
d'écriture, et d’exécution pour le propriétaire ( user).
 On peut aussi combiner plusieurs actions en même temps :
 - chmod u+rwx,g+rx-w,o+r-wx monFile.txt :
 user : lecture, écriture et exécution autorisées ;
 groupe : lecture et exécution autorisées, écriture interdite,
 autres : lecture autorisée, écriture et exécution interdites,
 - chmod ugo+rwx monFile.txt
 - chmod a+rx monFile.txt : on octroie les droits de lecture et
d’exécution à tout le monde (all)
78
Les filtres
Modifier les données d'un fichier
Couper un fichier en morceau : split
La commande split permet de couper un fichier
en morceau (en plusieurs fichiers), en tapant :
split -10 mon-fichier fichier
Vous allez créer les
fichiers fichieraa, fichierab, fichierac, ... qui
contiendront tous 10 lignes. Le
premier fichieraa contient les 10 premières
lignes, ainsi de suite.
79 Trier des fichiers : sort

 Soitle fichier carnet-adresse suivant :


 maurice:29:0298334432:Crozon
 marcel:13:0466342233:Marseille
 robert:75:0144234452:Paris
 yvonne:92:0133444335:Palaiseau
 Le premier champ représente le nom, le
deuxième le département, le troisième le
numéro de téléphone et le dernier la ville.
 Attention le premier champ est noté 0, le
deuxième 1, ainsi de suite.
80

 En faisant sort sans argument :


 sort carnet-adresse
 Par défaut il va trier sur le premier caractère et
ranger donc dans l'ordre alphabétique :
 marcel:13:0466342233:Marseille
 maurice:29:0298334432:Crozon
 robert:75:0144234452:Paris
 yvonne:92:013344433:Palaiseau
81

 Si vous voulez trier sur le deuxième champ (le


département), vous devez d'abord indiquer que
le : est le caractère qui sépare deux champs (par
défaut c'est l'espace), avec l'option -t :. Vous
devez ensuite indiquer que vous trier un chiffre
avec l'option -n (numérique). Pour indiquer qu'on
veut trier le deuxième champ, il faut marquer
qu'on veut trier à partir du second champ (+1)
jusqu'au troisième (-2). Soit le résultat suivant ;
 sort -n -t : +1 -2 carnet-adresse On obtient :
 marcel:13:0466342233:Marseille
 maurice:29:0298334432:Crozon
 robert:75:0144234452:Paris
 yvonne:92:013344433:Palaiseau
82

 Avec la commande :
 sort -t : +3 -4 +0 carnet-adresse
 Vous allez trier suivant le quatrième champ
(numéro 3), c'est à dire la ville (tri par ordre
alphabétique sur le premier caractère), en
mettant +0, il va effectuer un deuxième tri pour
les villes qui commencent par le même caractère,
le deuxième tri porte sur le prénom (le premier
caractère).
 maurice:29:0298334432:Crozon
 marcel:13:0466342233:Marseille
 robert:75:0144234452:Paris
 yvonne:92:013344433:Palaiseau
83

 Les options de sort sont les suivantes :


 -b ignore les espaces et les tabulations en début
de champ
 -d tri sur les caractères alphanumériques
(caractères, chiffres et espace) uniquement
 -r inverse l'ordre de tri
 -f pas de différence entre minuscule et
majuscule
 -tx Le caractère x est considéré comme
séparateur de champ
 -u supprime les lignes doublons
 -n trie sur des chiffres
84

 En tapant la commande suivante :


 sort -t : +3.2 +0 carnet-adresse
 Vous allez effectuer le tri sur le troisième
caractère (numéro 2, le premier a pour numéro 0)
du quatrième champ (numéro 3). En cas d'égalité
du premier tri, on fait un dernier tri sur le premier
caractère du prénom. Soit le résultat :
 yvonne:92:013344433:Palaiseau
 maurice:29:0298334432:Crozon
 marcel:13:0466342233:Marseille
 robert:75:0144234452:Paris
85 Conversion de chaîne de
caractère :tr
 La commande tr permet de convertir une chaîne
de caractère en une autre de taille égale. Les
options sont les suivantes :
 -c Les caractères qui ne sont pas dans la chaîne
d'origine sont convertis selon les caractères de la
chaîne de destination
 -d destruction des caractères appartenant à la
chaîne d'origine
 -s si la chaîne de destination contient une suite
contiguë de caractères identiques, cette suite est
réduite à un caractère unique
86

 La commande tr a besoin qu'on lui redirige en entrée un


fichier, le résultat de la conversion s'affichant sur la sortie
standard.
 Soit notre fichier carnet-adresse :
 maurice:29:0298334432:Crozon
 marcel:13:0466342233:Marseille
 robert:75:0144234452:Paris
 yvonne:92:013344433:Palaiseau
 Pour remplacer le : par un #, nous taperons :
 tr " : " " # " < carnet-adresse
 Pour faire la même chose on peut aussi bien éditer le fichier
avec cat et rediriger par pipe vers tr, en tapant :
 cat carnet-adresse | tr " : " " # "
87

 On peut utiliser des métacaractères. En tapant :


 cat carnet-adresse | tr " [a-f] " " [A-F] "
 Vous allez remplacer les caractères de a à f de
minuscule en majuscule. Soit:
 mAuriCE:29:0298334432:Crozon
 mArCEl:13:0466342233:MArsEillE
 robErt:75:0144234452:PAris
 yvonnE:92:013344433:PAlAisEAu
Edition de fichiers avec critères
88

 Editer un fichier par la fin : tail


 Si vous avez un fichier très long, et que vous voulez visualiser
que la fin, vous disposez de la commande tail :
 La syntaxe est la suivante, si vous tapez : tail +10 mon-fichier
 Vous obtenez toutes les lignes du fichier de la 10eme jusqu'à la fin.
 tail -10 mon-fichier
 Vous obtenez les 10 dernières lignes à partir de la fin.
 Vous pouvez indiquer si votre unité est la ligne (par défaut), le
bloc ou le caractère avec l'option -c
 tail -10 -c mon-fichier
 Vous obtenez les 10 derniers caractères du fichier.
89

 Editer un fichier par le début : head


 Si vous avez un fichier très long, et que vous voulez visualiser
que le début, vous disposez de la commande head :
 La syntaxe est la suivante, si vous tapez :

head +10 mon-fichier Vous obtenez toutes les lignes du fichier


de la 10eme jusqu'au début.
 head -10 mon-fichier Vous obtenez les 10 premières lignes à partir
du début.
 Vous pouvez indiquer si votre unité est la ligne (par défaut), le
bloc ou le caractère avec l'option -c
 head -10 -c mon-fichier Vous obtenez les 10 premiers
caractères du fichier.
90

 head -n 1 <fichier>
 L’appel suivant n’affiche que la première ligne
d’un fichier .
 Nous pouvons utiliser le même schéma
pour afficher les 100 premières lignes d’un
fichier :
 head -n 100 <fichier>
91

 CAT : afficher le fichier entier. L’affichage de gros fichiers


submerge la ligne de commande.
 LESS : afficher le fichier entier page par page. Pas très
pratique pour les gros fichiers.
 HEAD : afficher le début d’un fichier ou limiter l’affichage à
une certaine zone.
 TAIL : afficher la fin d’un fichier ou restreindre l’affichage à
une certaine zone.
92

 Compter les lignes d'un fichier : wc


 La commande wc permet de compter le nombre de ligne d'un
fichier, mais aussi le nombre de mot ou de caractères.
 wc -l mon-fichier
 Cette commande va donner le nombre de lignes contenues
dans le fichier mon-fichier. Pour avoir le nombre de mot
l'option est -w, l'option -c compte le nombre de caractères.
 La commande wc sans option donne à la fois le nombre de
ligne, le nombre de caractères et le nombre de mots.
 Si vous voulez connaître le nombre de fichier dans un
répertoire, la commande sera donc :
 ls -l | wc -l
93 Edition de champ d'un
fichier : cut
 La commande cut permet d'extraire certains champs d'un
fichier. Les options sont les suivantes :
 -c extrait suivant le nombre de caractères
 -f extrait suivant le nombre de champs
 -dx Le caractère x est le séparateur de champ
 Avec la commande cut, contrairement à sort, le premier
champ a comme numéro 1, le deuxième 2 est ainsi de suite.
 Nous prendrons toujours notre fichier carnet-adresse :
 maurice:29:0298334432:Crozon
 marcel:13:0466342233:Marseille
 robert:75:0144234452:Paris
 yvonne:92:013344433:Palaiseau
94 Edition de champ d'un
fichier : cut
 La commande : cut -c-10 carnet adresse
 Va extraire les 10 premiers caractères de chaque ligne, on obtient :
 maurice:29
 marcel:13:
 robert:75:
 yvonne:92:
 La commande : cut -c2-5 carnet adresse
 Va extraire du deuxième au cinquième caractère de chaque ligne .
 auri
 arce
 ober
 vonn
95 Edition de champ d'un fichier
: cut
 La commande :
 cut -c25-
 Va extraire du 25eme caractère jusqu'à la fin de chaque ligne.
 La commande :
 cut -d: -f1,4 carnet adresse
 Va extraire le premier et quatrième champ, le : fixant le
séparateur de champ. On obtient :
 maurice:Crozon
 marcel:Marseille
 robert:Paris
 yvonne:Palaiseau
96 Edition de champ d'un fichier
: cut
 La commande :
 cut -d : -f3- carnet adresse
 Va extraire du troisième champ jusqu'au dernier
champ, soit :
 0298334432:Crozon
 0466342233:Marseille
 0144234452:Paris
 0133444335:Palaiseau
97 Fusion de fichier : paste

 La commande paste permet la fusion de lignes de fichiers. Les options


sont les suivantes : -dx Le caractère x définit le séparateur de champ
 -s Les lignes sont remplacées par des colonnes
 Soit le fichier carnet-adresse :
 maurice:29:0298334432:Crozon
 marcel:13:0466342233:Marseille
 robert:75:0144234452:Paris
 yvonne:92:013344433:Palaiseau
 Et le fichier travail :
 ingénieur
 pâtissier
 facteur
 vendeuse
98

 En tapant la commande :
 paste -d : carnet-adresse travail
 Vous obtenez :
 maurice:29:0298334432:Crozon:ingénieur
 marcel:13:0466342233:Marseille:pâtissier
 robert:75:0144234452:Paris:facteur
 yvonne:92:013344433:Palaiseau:vendeuse
 Vous pouvez évidemment rediriger le résultat vers un fichier.
99 comm

 Extraction de lignes communes de deux fichiers : comm


 soit le fichier carnet-adresse :
Et carnet-adresse2
maurice:29:0298334432:Crozon olivier:29:0298333242:Brest
marcel:13:0466342233:Marseille marcel:13:0466342233:Marseille
robert:75:0144234452:Paris myriam:30:0434214452:Nimes
yvonne:92:013344433:Palaiseau yvonne:92:013344433:Palaiseau

 La commande :
comm carnet-adresse carnet-adresse2
 Nous donnera :
 marcel:13:0466342233:Marseille
 yvonne:92:013344433:Palaiseau
100 Comparaison de fichiers

 Comparer deux fichiers :


Lacommande cmp indique si deux fichiers sont
identiques. En tapant :
 cmp fichier1 fichier2
 Si les deux sont identiques, la commande ne
génère aucune sortie, s'ils sont différents la
commande indique la position de la première
différence (ligne et caractère), avec une sortie du
genre :
 fichier1 fichier2 differ : char 34, line 2
101 Edition des différences entre
deux fichiers ; diff
 Cette commande permet de rechercher les différences entre deux
fichiers. La syntaxe est la suivante :diff fichier1 fichier2,
 diff fait en sorte de vous donner des indications pour que le fichier1 soit
identique au fichier2. Soit le fichier carnet-adresse :
 olivier:29:0298333242:Brest et carnet-adresse2
 marcel:13:0466342233:Marseille olivier:29:0298333242:Brest
 marcel:13:0466342233:Gardagnes
myriam:30:0434214452:Nimes myriam:30:0434214452:Nimes
 yvonne:92:013344433:Palaiseau yvonne:92:013344433:Palaiseau
 toto:12:0434231122:Rodez
102 Edition des différences entre deux
 fichiers ; diff
La commande :
 diff carnet-adresse carnet-adresse2
 Génère comme sortie : 2c2
 < marcel:13:0466342233 :Marseille
 ---
 <marcel:13:0466342233 :Gardagnes
 5d
 >toto :12 :0434231122 :Rodez
 Ce qui nous indique que pour carnet-adresse soit identique à carnet-
adresse2, il faut que la deuxième ligne du premier fichier soit échangée
(c pour change) contre la ligne du second. Il faut aussi supprimer (d pour
delete) la cinquième ligne du premier fichier.
 Dans d'autres exemples, on pourrait avoir aussi une sortie du genre
10,15c 12,17 ce qui signifie que pour que le premier fichier soit identique
au second, les lignes 10 à 15 doivent intégralement échangées contre les
lignes 12 à17 du second fichier.
103 La commande PS

La commande ps affiche l’état des processus en cours.


Syntaxe de la commande ps
ps [-e] [-f] [-u login]

Option Description
-e Affiche tous les processus.
-f Affiche des informations supplémentaires.
-u login Affiche les processus de l’utilisateur.

Exemple :
# ps -fu root
104 Recherche des processus
en cours d’exécution
 utiliserla commande ps avec une combinaison
d’options.
 Tentez les différentes commandes :
 $ ps
 $ ps a
 $ ps ax
 $ ps aux
 $ ps ax | grep cron
processus

Les processus, à quoi ça sert?


À faire plusieurs activités ”en même temps”. Exemples
Faire travailler plusieurs utilisateurs sur la même machine. Chaque utilisateur a
l’impression d’avoir la machine à lui tout seul.
Compiler tout en lisant son mail
Problème: Un processeur ne peut exécuter qu’une seule instruction à la fois.
BUT: Partager un (ou plusieurs) processeur entre différents processus.
Attention!!! Ne pas confondre processus et processeur
Concept de processus
Un processus est un programme en exécution
L’exécution d’un processus doit progresser séquentiellement, cad, à n’importe quel
moment une seule instruction au plus est exécutée au nom du processus
Processus /= Programme
États des processus

Quand un processus s’exécute, il change d’état.


Chaque processus peut se trouver dans chacun des états suivants :
En exécution: Les instructions sont en cours d’exécution (en train d’utiliser
CPU).
En attente: Le processus attend qu’un événement se produise.
Prêt: Le processus attend d’être affecté à un processeur.
Un seul processus peut être en exécution sur n’importe quel processeur à tout
moment.Toutefois, plusieurs processus peuvent être prêts et en attente
Processus
Point de vue conceptuel: chaque processus possède son processeur virtuel.
Réalité: le processeur bascule constamment d’un processus à l’autre.
Ce basculement rapide est appelé multiprogrammation.
Lorsque le processeur passe d’un processus à un autre, la vitesse de traitement d’un
processus donné n’est pas uniforme et probablement non reproductible si le même
processus s’exécute une nouvelle fois.
Lister des informations sur les
Commande ps processus
[mirian@home2 Transp]$ ps -af

UID PID PPID C STIME TTY TIME CMD


mirian 4576 1 0 21:22 pts/1 00:00:00 wxd
mirian 4705 3949 0 21:28 pts/1 00:00:04 xpdf SE2007-Proces
mirian 5068 3949 0 21:40 pts/1 00:00:00 ps -af

 UID nom de l'utilisateur qui a lancé le processus.


 PID correspond au numéro du processus.
 PPID correspond au numéro du processus parent.
 C au facteur de priorité : plus la valeur est grande, plus le processus est
prioritaire
 STIME correspond à l'heure de lancement du processus
 TTY correspond au nom du terminal
 TIME correspond à la durée de traitement du processus
 COMMAND correspond au nom du processus.
STAT: status du processus
Lister des informations sur les
processus

[mirian@home2 Transp]$ ps au
USER PID ... TTY STAT START TIME COMMAND
root 3093 ... Ss+ 20:57 0:00 /sbin/mingetty tty1
tty1
...
mirian 3881 ... Ss+ 21:08 0:00 bash
pts/0
mirian 3949 ... Ss 21:09 0:00 bash
pts/1
mirian 4576 ... S 21:22 0:00 wxd
pts/1
mirian 4705 ... S 21:28 0:00 xpdf SE2007-Process
pts/1
mirian 4841 ... R+ 21:33 0:00 ps au
pts/1
Hiérarchie de processus

Dans certains SE, lorsqu’un processus crée un autre processus, les processus parent et
enfant continuent d’être associés d’une certaine manière. Le processus enfant peut lui
même créer plusieurs processus, formant une hiérarchie de processus.
Un processus a un seul parent et peut avoir 0 ou plusieurs fils.
Si le processus A crée le processus B, A est le parent de B, B est le fils de A (A par
défaut, exécute le même code que B) B peut à son tour créer des processus. Un
processus avec tous ses descendants forment un groupe de processus représenté par un
arbre de processus.
fork est le seul appel système de création de processus.
112 L’arborescence des processus

 La commande pstree donne une bonne


illustration de la hiérarchie des processus parents
et fils.
pstree

init─┬─acpid
├─atd
├─cron
├─dbus-daemon
├─dhclient
├─docker.io─┬─bash
│ ├─controller───9*[{controller}]
│ ├─rethinkdb─┬─rethinkdb
│ │ └─69*[{rethinkdb}]
│ └─12*[{docker.io}]
├─7*[getty]
├─irqbalance
├─rsyslogd───3*[{rsyslogd}]
├─sshd───sshd───sshd───bash───pstree

Les options les plus courantes de pstree sont -


p pour afficher les PIDs et -h pour faire ressortir
(en gras) les processus utilisateurs.
La fin d’un processus

Un processus peut se terminer suite à l’un des 4 événements :


 Sortie normale,
 lorsque le processus a terminé sa tâche.
 Sortie suite à une erreur .
 Tué par un autre processus (sous Unix par l’appel système kill) Toutes les
ressources du processus sont libérées par le SE.
Scheduling de processus

 Dans un système multitâche plusieurs processus


sont en cours simultanément, mais le
processeur ne peut, à un moment donné,
exécuter qu’une instruction (d’un programme) à
la fois. Le processeur travaille donc en temps
partagé.
 L’ordonnanceur (scheduler) est le module du SE
qui s’occupe de sélectionner le processus
suivant à exécuter parmi ceux qui sont prêts.
Les commandes de gestion
115 des processus

La commande kill
La commande kill envoie un signal d’arrêt à un processus.
Syntaxe de la commande kill
kill [-signal] PID
Exemple :
$ kill -9 1664
Les signaux sont les moyens de communication entre les processus. La commande kill permet d’envoyer un signal à un processus

Table 4. Codes numériques des principaux signaux d’arrêt des processus


Code Signal Description
2 SIGINT Interruption du processus (kbd:
[CTRL+D])
9 SIGKILL Terminaison immédiate du
processus
15 SIGTERM Terminaison propre du
processus
18 SIGCONT Reprise du processus
19 SIGSTOP
La liste complète des signaux Suspension
pris en compte par la commande du processus
kill est disponible en
tapant la commande :
$ man 7 signal
116

 “Nohup” est une commande Unix permettant de lancer un processus qui


restera actif même après la déconnexion de l’utilisateur l’ayant initiée.
Combiné à l’esperluette (&) qui permet le lancement en arrière-
plan, nohup permet donc de créer des processus s’exécutant de manière
transparente sans être dépendants de l’utilisateur.
Syntaxe de la commande nohup
nohup commande
Exemple :
$ nohup MonProgramme.sh 0</dev/null &
nohup ignore le signal SIGHUP envoyé lors de la déconnexion d’un
utilisateur.
117

 Instruction &`
 L’instruction & exécute la commande en mode asynchrone
(la commande est alors appelée job) et affiche le numéro
de job. L’accès au prompt est ensuite rendu.
 Exemple :
 $ time ls -lR / > list.ls 2> /dev/null &
 [1] 15430
$
 Le numéro de job est obtenu lors de la mise en tâche de
fond et est affiché entre crochets, suivi du numéro de PID.
118 Les commandes fg et bg
 La commande fg place le processus au premier plan : $ time ls -
lR / > list.ls 2>/dev/null &
 $ fg 1
 time ls -lR / > list.ls 2/dev/null
 tandis que la commande bg le place à l’arrière plan : [CTRL]+[Z]
 ^Z
 [1]+ Stopped
 $ bg 1
 [1] 15430
$
 Qu’il ait été mis à l’arrière plan lors de sa création grâce à
l’argument & ou plus tard avec les touches kbd:[CTRL+Z], un
processus peut être ramené au premier plan grâce à la
commande fg et à son numéro de job.
119 La commande jobs

 La commande jobs affiche la liste des processus tournant en


tâche de fond et précise leur numéro de job.
 Exemple :$ jobs
 [1]- Running sleep 1000
 [2]+ Running find / > arbo.txt
 Les colonnes représentent : 1- le numéro de job ;2- ordre de
passage des processus
 un + : le processus est le prochain processus à s’exécuter par
défaut avec fg ou bg ;
 un - : le processus est le prochain processus qui prendra
le + ;
 3- Running (en cours de traitement) ou Stopped (processus
suspendu).
 4- la commande
120 Les commandes nice et renice
La commande nice permet d’exécuter une commande en précisant sa priorité.
Syntaxe de la commande nice
nice priorité commande
Exemple :
$ nice -n+15 find / -name "fichier"
Contrairement à root, un utilisateur standard ne peut que réduire la priorité d’un
processus. Seules les valeurs entre +0 et +19 seront acceptées.
121

La commande renice permet de modifier la priorité d’un processus en cours


d’exécution.
Syntaxe de la commande renice
renice priorité [-g GID] [-p PID] [-u UID]
Exemple :
$ renice +15 -p 1664
La commande renice agit sur des processus déjà en cours d’exécution. Il est donc
possible de modifier la priorité d’un processus précis, mais aussi de plusieurs
processus appartenant à un utilisateur ou à un groupe.

Table 5. Options principales de la commande renice


Option Description
-g GID du groupe propriétaire du processus.
-p PID du processus.
-u UID du propriétaire du processus.
122 La commande top

La commande top affiche les processus et leur consommation en ressources.


$ top
PID USER PR NI ... %CPU %MEM TIME+ COMMAND
2514 root 20 0 15 5.5 0:01.14 top
La commande top permet de contrôler les processus en temps réel et en mode
interactif.
Table 6. Descriptions des colonnes du résultat de la commande top
Colonne Description
PID Identifiant du processus.
USER Utilisateur propriétaire.
PR Priorité du processus.
NI Valeur du nice.
%CPU Charge du processeur.
%MEM Charge de la mémoire.
TIME+ Temps d’utilisation processeur.
COMMAND Commande exécutée.
123 Les commandes pgrep et pkill

 La commande pgrep cherche parmi les processus en cours


d’exécution un nom de processus et affiche sur la sortie
standard les PID correspondant aux critères de sélection.
 La commande pkill enverra le signal indiqué (par
défaut SIGTERM) à chaque processus.
 Syntaxe des commandes pgrep et pkill
 pgrep processus
 pkill [-signal] processus
 Exemples :
 Récuperer le numéro de processus de sshd :
 $ pgrep -u root sshd
 Tuer tous les processus tomcat :
 $ pkill tomcat

Vous aimerez peut-être aussi