Vous êtes sur la page 1sur 45

Systme dexploitation

Linux: aspect utilisateur

Organisation du cours
Plan gnral:
Introduction sur les systmes dexploitation Linux: Initiation au shell Le systme de fichiers

Bibliographie
J.M Rifflet, La programmation sous Unix, 3me dition, chez Ediscience Learning the Unix Operating System, chez OReilly Learning the vi editor, chez OReilly
Consultable en ligne:
http://www.root66.net/linux/Linux-france.org/article/ohoarau/ ...

Les systmes dexploitation:Introduction


Cest linterface entre lutilisateur et le matriel Ses fonctions principales sont :
Contrle des ressources (allocation et gestion du CPU et de la mmoire) Contrle des processus Contrle des priphriques

Il contient des outils de gestion utilisables par les applications, tels que la manipulation de fichiers, gestion dimpressions, date

Les systmes dexploitation


Exemples:
Unix, DOS, Windows, Mac OS, Linux, OS/2, BSD, ...

- introduction -

Architecture-type:
APPLICATIONS SYSTEME DEXPLOITATION MATERIEL applications (jeux, outils bureautiques, ) Interprteur de commandes, compilateur,

noyau
Langage machine Dispositifs physiques

Linux
Proprits
multi-tches multi-utilisateurs Libre (et gratuit) !!

Ouverture/Fermeture dune session


Travailler sous Linux implique une connexion au systme Login:
Identification de lutilisateur: login + mot-de-passe droits accords par le super-utilisateur (root)

Logout:
NE PAS ETEINDRE une machine sauvagement commande logout dans la console

Initiation au shell
Une fois connect, le systme nous connat, ouvre une session notre nom et attend nos instructions via un programme spcial: Le Shell = interprteur de commandes
interface utilisateur de base (interlocuteur avec le syst.) interprtation ligne ligne
langage de programmation

shell par dfaut : bash

Initiation au shell - commandes Format des commandes:


cde [-option(s)] [argument(s)]

Respecter la casse et les espaces!!

Initiation au shell: commandes Exemples:


date whoami
affiche le nom de lutilisateur connect

echo
affiche un message (echo "bonjour !")

ls
liste le contenu dun rpertoire

man <cde>
manuel en ligne

Le systme de fichiers
Stocke les donnes:
de faon hirarchique structure arborescente TOUT est fichier

3 types de fichiers:
fichiers ordinaires rpertoires fichiers spciaux (priph., )

Le systme de fichiers
Accs aux fichiers rglement (sauf: tous les droits pour root) 3 types dutilisateurs:
propritaire (user) personnes du mm groupe (group) les autres (others)

3 types de permissions
lecture (r) criture (w) excution (x)
afficher le contenu modifier excuter afficher le contenu

crer/supp fichiers
traverser

fichier

rpertoire

Le systme de fichiers
Affichage des caractristiques: ls -l
groupe
-rw-r--r-- 1 lewandowski staff 58K 16 Jul 09:19 tp1.tex

nb liens

propritaire

taille

date

nom

type

group

-rw-r--r-user
others

Changer les permissions: chmod chmod <classe op perm, >|nnn <fic>


classe:
u : user g : group o : others a : all

Le systme de fichiers
chaque perm = 1 valeur:
r w x rien 4 2 1 0

op:
= : affectation - : suppr. + : ajout

df. des permissions (par addition) pour chaque classe

exemples:
chmod u=rwx,g=rx,o=r tp1.tex chmod a+x script.sh chmod 755 script.sh

perm:
r : lecture w : criture x : excution

Le systme de fichiers
Manipulation des fichiers
copier : dplacer/renommer : effacer : afficher le contenu : trier le contenu : cp fic1 fic2 mv fic1 fic2 rm fic cat fic sort fic

Voir les pages du man !!

- larborescence Le systme de fichiers rpertoire racine


le rpertoire de login: ~ le rpertoire courant: . le rpertoire suprieur: .. connatre le rp. courant: pwd lister le contenu: ls
(voir man ls) chemin daccs au fichier tp1.tex:
/home/lewandowski/cours/tp1.tex ou bien: ~/cours/tp1.ex

/ bin tmp home

lewandowski
.cshrc cours tp1.tex docs

Le systme de fichiers: pwd retourne: Larborescence /home/lewandowski/cours


/ tmp home

se dplacer: cd [/home/lewandowski/cours]$ cd .. [/home/lewandowski]$ [/home/lewandowski]$ cd /tmp [/tmp]$ chemin relatif chemin absolu crer un rpertoire: mkdir [/tmp]$ mkdir buzz supprimer un rpertoire: rmdir [/tmp]$ rmdir buzz

buzz
.cshrc

lewandowski
cours docs

tp1.tex rpertoire courant

Le systme de fichiers: partitions


le disque est dcoup en partitions
commandes & applications comptes utilisateurs swap fichiers temp priphriques (disques, ...) ...

accs transparent

Le systme de fichiers - partitions exemple: les comptes utilisateurs


home

lewandowski bourguin marion

Qu i k Ti me e u n c t d co m p s s e r TIF (n o c o mp re ss ) re u F n s o n re q i s p o r v i i o n n r c e i ma g e . t u u s e tte

Qu i k Ti me e u n c t d co m p s s e r TIF (n o c o mp re ss ) re u F n s o n re q i s p o r v i i o n n r c e i ma g e . t u u s e tte

montage effectu sur /home de faon transparente

serveur postes dans la salle

home usr / etc tmp

Qu i ckTi me e t u n d c omp res se u r TIFF (no n c om pre ss ) s on t req u is po ur vi s i on ne r c ette i ma ge .

Qu i ckTi m e e t u n Qu i ckTi m e e t u n d c om pres se u r T IFF (n on c o mpre ss )d c om pres se u r T IFF (n on c o mpre ss ) s on t re qu is po ur vis i on ne r c e tte i ma g e. on t re qu is po ur vis i on ne r c e tte i ma g e. s

Le systme de fichiers: partitions


tous les disques amovibles (disquette, cdrom, cl usb) dans : /mnt ex pour utiliser une disquette:
Montage: mount /mnt/floppy lire/ecrire dans /mnt/floppy Dmontage: umount /mnt/floppy

idem pour cls usb

Le systme de fichiers: liens


Liens physiques
ln <nom_fic> <nouveau_nom_fic> permet de donner plusieurs noms un fichier pas pour les rpertoires ne traverse pas les partitions un fic est dtruit quand TOUS ses liens physiques sont supprims ( raccourcis)

Liens symboliques
ln -s <nom_fic> <nouveau_nom_fic> cre un raccourci traverse les partitions fonctionne aussi pour les rpertoires

Lister les liens dun fichier: ls -l <nom_fic>

Les redirections
Une commande ouvre 3 descripteurs de fichiers; par dfaut:
stdin
QuickTime e t un dco mpresseu r TIFF (non compress) sont requis pour visionner cette image.

commande

stdout

stderr

Redirections= remplacer les canaux par dfaut, rediriger vers une autre commande ou un fichier

Les redirections
< > >> 2> &> redirige lentre standard redirige la sortie standard concatne la sortie standard redirige la sortie derreur redirige la sortie standard et la sortie derreur

exemples:
ls . > liste

date >> liste


wc -l < liste

cre/crase le fichier liste et y dirige la sortie de ls ajoute la fin du fichier liste la sortie de date envoie comme entre la commande wc le fichier liste

Les tubes (pipes)


Tube: |

pour connecter 2 commandes


stdin stdout commande stdin stdout commande

stderr

stderr

ex: combien de fichiers dans le rep. courant ?


sans pipe: ls > temp ; wc -l < temp ; rm temp avec un pipe: ls | wc -l

Les processus
Processus = objet dynamique qui reprsente un programme en cours dexcution et son contexte Caractristiques:
identification (pid) identification du proc. parent (ppid) propritaire priorit ...

Pour voir les processus en cours: ps

Infos retournes par ps:


[lewandow:~] ps PID TT STAT 3899 p1 S 4743 p1 S+ 4180 std S

Les processus
temps CPU utilis COMMAND -zsh emacs -zsh TIME 0:00.08 0:00.14 0:00.04

numro de processus

commande excute

tat du processus: terminal associ

R T P D S IW Z

actif bloqu en attente de page en attente de disque endormi swapp tu

Les processus
Options de ps:
-a -u -x liste tous les processus actifs format daffichage long inclut les processus sans terminal

Tuer un processus:
kill -9 <PID>

Processus en arrire-plan: &


(le terminal nest pas bloqu) exemple: emacs monfichier.c &

Les filtres Filtres simples


cat
more tee
affiche le contenu des fichiers passs en paramtres (par dfaut, stdin) options -b, -n, -v affiche page par page les fichiers passs en paramtres (par dfaut, stdin) h pour avoir le dtail des commandes recopie lentre std sur la sortie standard et dans le fichier pass en paramtre option -a

Voir le man !!

exemples:
cat fic1 fic2 ls | tee liste.fic more enormous_file cat -n toto | more

Plus de filtres...Les sort

filtres

trie lentre ligne par ligne options: -r (inverse lordre de tri) +n (ignore les n 1ers champs) ex:
ls | sort ls -l | sort +4

comm
slectionne les lignes entre deux fichiers syntaxe: comm [-123] fic1 fic2
1 = lignes de fic1 ( fic2) 2 = lignes de fic2 ( fic1) 2 = lignes communes

Les filtres
uniq
dtruit les lignes conscutives dupliques options: -u (affiche les lignes "uniques"), -d (affiche les lignes "dupliques") ex:
uniq -u fic uniq -d fic

diff
compare deux fichiers options: -b (ignorer les lignes vides) ex:
diff fic1 fic2

cut

Les filtres

slectionne uniquement certaines colonnes du fichier pass en paramtre options:


-f<liste> : liste des champs garder -c<liste> : liste des colonnes garder -d<char> : sparateur de champs

ex:
cut -c-10 rep.txt
1 tonton 0 2 tux 0077 3 vuja 013

rep.txt 1 tonton 0311333300 2 tux 0077885566 3 vuja 0133220011

cut -f1,2 -d" " rep.txt


1 tonton 2 tux 3 vuja

tr

Les filtres
recopie stdin sur stdout en substituant des caractres syntaxe: tr [-cds] [s1 [s2]] options:
-c (complment de s1) -d efface les car. de s1 -s tte squence dans s1 est substitue par un car. unique dans s2

ex:
tr A-Z a-z < essai remplace les majuscules par des minuscules tr A-Z a-z < essai | tr -sc a-z \012 remplace les majuscules par des minuscules, puis remplace tout ce qui nest pas une lettre minuscule par un retour chariot (\012)

Les filtres
grep
recherche, dans le fichier pass en paramtre, les lignes vrifiant une expression rgulire donne syntaxe : grep expr_reg [fichier] ex:
grep 'toto' essai cherche dans essai toutes les lignes qui contiennent le mot toto grep '^[A-Z]' essai cherche dans essai toutes les lignes qui commencent par une majuscule

(voir TP sur grep et les expressions rgulires)

Les filtres
Et encore plein dautres...
sed, awk, cmp, ...
Beaucoup de filtres et commandes... Savoir quelles existent Savoir ce quon peut en attendre Pour le reste, => man !!

Lditeur vi
vi est un diteur (en mode console) peu convivial certes, mais ultra puissant => TP !

Vi / Vim / gVim
Vi est un diteur trs minimaliste, mais extrmement puissant. Avec le temps, Vim (Vi iMproved) est venu remplacer Vi et est beaucoup plus convivial. Il comprend aussi une interface graphique (optionnelle), gVim, qui a lapparence du Notepad dans Windows, mais avec ayant quand mmes les commandes de rputations obscures de Vi.

Les avantages de Vim par rapport Vi sont nombreux. Pour en nommer quelques uns, Vim permet de surligner la syntaxe, plusieurs niveaux de "undo" (et "redo") et permet dafficher plusieurs fichiers dans le mme cadre (surtout pratique pour le mode texte).

Voici quelques commandes essentielles Vi :

:e foo.c : ouvre un fichier (ou le cre) :w : sauver le fichier :w bar.c : sauver le fichier sous le nom bar.c :q : quitter vi (ou fermer la fentre active) :q! : quitter vi sans sauver i : insrer avant le curseur (I : insrer au dbut de la ligne) a : insrer aprs le curseur (A : insrer la fin de la ligne) o : ouvrir une ligne en-dessous (O : ouvrir une ligne au-dessus) J : joindre la ligne suivante aprs la ligne courante u : undo (annuler la dernire commande) U : undo global pour toute la ligne Ctrl+R : redo (annuler la dernire commande annule) Ctrl+G : Affiche des informations sur le fichier et la position du curseur ESC : quitter le mode d'insertion
Chercher et remplacer: :n : Aller la n-ime ligne. (:1 aller au dbut du texte) /foo : Recherche le mot "foo" dans le texte (?foo cherche en arrire) :s/ab/ba : Substituer la premire occurence de "ab" par "ba" Pour remplacer toutes les occurences sur la ligne, :s/ab/ba/g (o 'g' signifie 'global') :4,10s/ab/ba/g : Remplace toutes les occurences de "ab" par "ba" sur les lignes de 4 10. (:1,$s/ab/ba/g pour tout le texte, $ = fin) %s/ab/ba : Remplacer toutes les occurences.

Couper/Coller, supprimer:

x : Coupe le caractre sous le curseur (10x en supprime 10) dd : Coupe la ligne courante (10dd en supprime 10) D : Coupe partir du curseur jusqu' la fin de la ligne courante yy : Copie la ligne courante Y : Copie partir du curseur jusqu' la fin de la ligne courante p : Colle (paste) la dernire chaine de texte coupe/copie :1,4y : Copie les lignes 1 5 (ce genre de prfixe s'applique toutes les commandes)
Se promener dans plusieurs fentres (spcifique vim) :

:new foo : Ouvrir une nouvelle fentre et lire le fichier "foo" Ctrl+w : Changer de fentre. Faire deux fois pour aller la prochaine, ou faire Ctrl+w+flche_haut pour aller la fentre du haut.

Les prfixes de lignes tels que "1,30" (qui signifie "de la ligne 1 30") sappliquent la majorit des commandes qui commencent par " :". Sous Vim, il est aussi possible dactiver la vrification et la colorisation de la syntaxe avec " :syntax on" (pour automatiser cette commande, il suffit de lajouter dans le fichier " /.vimrc" avec la commande : $ echo "syntax on" >> ~/.vimrc Bref, les commandes de Vi sont trs excentriques, mais par la quantit de combinaisons possibles, Vi devient un outil trs efficace.

Compilateur gcc
Anciennement appel le "GNU C Compiler", gcc a t renomm pour "GNU Compiler Collection" depuis la version 3.0 puisquil peut aussi compiler le C++ (g++), Objective C, Java (gcj) et Fortran (g77). GCC possde aussi des variantes qui compilent divers langages assembleur (gas), Ada95 et Pascal. Si vous utilisez un IDE, vous navez pas vraiment vous soucier de cette section, mais elle aide mieux comprendre comment fonctionnent les outils sur lesquels sappuie votre IDE et vous pourriez acclrer le dboguage de votre application par une meilleure comprhension gnrale des outils que vous utilisez.

Voici quelques exemples de compilation dapplications, du plus simple vers le plus intressant : $ g++ foo.cxx Par dfaut le compilateur nomme lexcutable "a.out", ajoutons loption -o pour spcifier le nom du fichier la sortie : $ g++ foo.cxx -o toto

Si nous avons plusieurs fichiers sources pour le mme excutable : $ g++ foo.cxx bar.cxx -o toto Lusage de -Wall est trs fortement suggr pour viter les erreurs de syntaxe et afficher le maximum davertissements : $ g++ -Wall foo.cxx -o toto Lorsque lon doit dboguer avec gdb, on peut savoir exactement quelle ligne de code le programme a plant, et quelles taient les variables en ajoutant loption -g : $ g++ -Wall -g foo.cxx -o toto

Vous pouvez aussi demander gcc doptimiser le code machine gnr, mais tant donn que a demande plus de temps pour compiler, il est suggr dutiliser cette option que lorsque vous faites la commpilation finale de votre programme. Ceci se fait par loption -O1,2,3 : $ g++ -Wall -O1 foo.cxx toto Pour excuter lapplication, il suffit de faire "./toto". Le "./" signifie que lon veut excuter une application qui se situe dans le rpertoire courant, tout comme "../toto" aurait excut une application dans le rpertoire parent. Nous verrons dans la prochaine section comment automatiser la compilation dune application.

exemple : gcc -g -o exemple1 exemple1.c exemple de compilation spare : gcc -g -c lib1.c gcc -g -c main.c gcc -g -o main main.o lib1.o