Pr´ esentation Unix
BTS-DSI KENITRA 2011/2012
Les origines
Unix est n´ e aux laboratoires Bell (Filiale d’ATT). D´ evelopp´ e ` a partir de 1969 par Ken Thompson et Dennis Ritchie pour leurs besoins propres : Objectif : un syst` eme interactif pour des petites machines dot´ es de possibilit´ es comparables aux grands syst` emes. Environnement inspir´ e de Multics et GCOS (Honeywell). D` es 1973 Unix est r´ e´ ecrit ` a 90% en langage C (Cr´ e´ e pour l’occasion par Brian Kernighan et Dennis Ritchie).
1
´ volution E
Unix Version 7 1979
Unix system III 1982
SunOS 3
AIX 4.2 BSD
Ultrix
Unix System V
1983
1983
SunOS 4 4.3 BSD
Bull
Unix System V R3
1986
1986
HP UX
OSF/1 Solaris 2 4.4 BSD FreeBSD
Unix SVR4
1992
1989
IRIX 5
Linux
POSIX
2
La situation actuelle
Syst` eme d’exploitation des stations de travail et des serveurs de base de donn´ ees. Fournisseurs : Digital Equipement, Hewlett Packard, IBM, Silicon Graphics, Sun,. . . Un consortium : X-Open. Deux standards : POSIX (IEEE), X-Open. Un environnement utilisateur : CDE (Common Desktop Environment) X11 + Motif.
Un concurrent : Windows-NT (Microsoft).
3
Structure g´ en´ erale
Shell Outils
Noyau
CPU
Bibliothèques
Programmes utilisateurs
4
Caract´ eristiques principales
Syst` eme d’exploitation • Multi-tˆ aches en temps partag´ e • Multi-utilisateurs • Interactif • Int´ egr´ e aux r´ eseaux Langages de commande • Bourne Shell • Korn Shell • C-Shell Plusieurs centaines d’outils.
5
Outils
• Manipulation de texte • D´ eveloppement de logiciels • Communication • Documentation • Bureautique
6
Le syst` eme de fichiers
Partie la plus importante : (( Tout est fichier )) Quatre types de fichiers : ordinaire donn´ ees, programme r´ epertoire contient d’autres fichiers ou r´ epertoires lien symbolique pointe vers un autre fichier sp´ ecial permet l’acc` es ` a un p´ eriph´ erique Un fichier est repr´ esent´ e par une structure (I-node) qui stocke les informations sur un fichier: taille, droits d’acc` es, dates de cr´ eation, de modification... Le nom n’est qu’un pointeur sur un I-node. Un seul type de fichier ordinaire: flot de caract` eres (8 bits). Les fichiers texte ne sont qu’un cas particulier (lignes s´ epar´ ees par le caract` ere “Line Feed”). Partage des fichiers en r´ eseau : NFS.
7
Fichiers et r´ epertoires
Structure arborescente. R´ epertoire courant: position dans l’arbre ` a partir de laquelle on recherche les fichiers. Un chemin absolu d´ esigne de mani` ere unique un fichier en partant du r´ epertoire racine (/). Le caract` ere (( / )) s´ epare les r´ epertoires. Exemple : /home/matthieu/cours/unix/slides.tex Un chemin relatif d´ esigne un fichier ` a partir du r´ epertoire courant. Caract´ eristiques des noms de fichiers : Majuscules/minuscules ont une signification. Tous les caract` eres sont valides sauf (( / )) et le code ASCII 0. Pas de limitation sur la longueur d’un ´ el´ ement. Longueur totale limit´ ee ` a 1024 caract` eres.
8
L’arborescence Unix
Racine
Fichiers temporaires
Commandes système
Utilitaires
/
bin
dev
Périphériques
etc home
lib
tmp
paul jean .... Bibliothèque Système
usr
bin
lib
Utilisateurs
“..” d´ esigne le r´ epertoire parent. “.” d´ esigne le r´ epertoire courant.
9
man
Les utilisateurs
Chaque utilisateur du syst` eme est identifi´ e par un nom de login auquel est associ´ e : • un mot de passe • un identificateur num´ erique (uid) • un groupe (gid) • un commentaire (identit´ e r´ eelle - GCOS) • un r´ epertoire de travail • un langage de commandes. Stock´ es dans la base de donn´ ees passwd. Les groupes permettent aux utilisateurs de partager l’acc` es ` a certains fichiers. Le super-utilisateur root g` ere tout le syst` eme.
10
Les droits d’acc` es
Trois cat´ egories d’utilisateurs : le propri´ etaire le groupe les autres
Trois types de droits :
Lecture ´ criture E ex´ ecution
u g o
r w x
Pour un fichier les droits sont exprim´ es par une chaˆıne de 10 caract` eres:
tuuugggooo
t : type du fichier :
Fichier ordinaire R´ epertoire Lien symbolique fichier sp´ ecial
d l c ou b
uuu : droits du propri´etaire ggg : droits du groupe ooo : droits des autres Le super-utilisateur a tous les droits.
11
Droits d’acc` es en octal Droits ----x -w-wx r-r-x rwrwx
valeur octale 0 1 2 3 4 5 6 7
L’ensemble des droits est repr´ esent´ e par trois chiffres. Exemples: • 600 rw------• 644 rw-r--r-• 750 rwxr-x---
12
L’acc` es au syst` eme
• depuis un terminal graphique (Clavier, ´ ecran, souris) • depuis un terminal ASCII (console) connect´ e par une ligne s´ erie • par le r´ eseau D´ eroulement: • Un processus moniteur de port attend des demandes de connexion sur chacune de ces entr´ ees en affichant un message. • le programme login demande un mot de passe et v´ erifie sa validit´ e. Il lance le shell dans le r´ epertoire de travail de l’utilisateur. • Lorsqu’une session de travail est finie, l’utilisateur la termine par la commande logout qui termine le shell et rend la main au moniteur de port.
13
Le shell
L’interpr´ eteur de commandes est un processus. • Il affiche un prompt, attend la frappe d’une ligne, analyse cette ligne puis ex´ ecute la ou les commande(s). • Pour ex´ ecuter une commande il cr´ ee un nouveau processus. Il attend la fin du processus cr´ e´ e puis affiche un nouveau prompt. • Pendant la saisie d’une ligne les touches DELETE ou BACKSPACE permettent d’effacer les caract` eres saisis. • Certains shells (Korn Shell, T-CShell) disposent de possibilit´ es interactives plus ´ etendues (historique, compl´ etion. . . ). Le shell dispose de variables et de structures de contrˆ ole qui en font un langage de commande.
14
Les commandes
Le shell d´ ecoupe un ligne en suite de commandes. Les caract` eres ;| et les retours chariot s´ eparent les commandes. La structure g´ en´ erale d’une commande est : commande arguments commande est un nom de fichier. Ce fichier est recherch´ e dans une liste de r´ epertoires d´ esign´ ee par la variable PATH. Si aucun fichier n’est trouv´ e, erreur. arguments est une liste de param` etres passes a la commande. Trois formes possibles : -option -option valeur fichier
option bool´ eenne option avec valeur chemin d’acc` es ` a un fichier
L’analyse des arguments est faite par chaque commande −→ pas de normalisation...
15
Les caract` eres sp´ eciaux du shell
Expansion des noms de fichiers : ? Un caract` ere quelconque * N’importe quelle suite de caract` eres, peut ˆ etre vide. [...] Un caract` ere de la liste. Ex: [A-Z0-9]. [^...] Un caract` ere n’appartenant pas ` a la liste. \ supprime la signification sp´ eciale du caract` ere suivant. (\* = *). Exemples : Si le r´ epertoire courant contient: fich1.bin readme
fich1.txt zzz
fich2.txt
fich10.txt fichier.txt
Alors:
fich1* fich*.txt fich[0-9]*.txt ???
fich1.bin fich1.txt fich10.txt fich1.txt fich2.txt fich10.txt fichier.txt fich1.txt fich2.txt fich10.txt zzz
16
L’historique du c-shell
set history=n m´ emorise n commandes.
history affiche l’historique.
!n r´ eex´ ecute la commande num´ ero n. n = ! → commande pr´ ec´ edente.
!-n r´ eex´ ecute la ni` eme commande pr´ ec´ edente.
!xxx r´ eex´ ecute la derni` ere commande commen¸ cant par xxx.
^xxx ^yyy r´ eex´ ecute la commande pr´ ec´ edente en rempla¸ cant xxx par yyy.
17
Le TCshell
Shell utilis´ e au LAAS : /usr/local/bin/tcsh Ctrl-P ↑
Commande pr´ ec´ edente
Ctrl-N ↓ ESC-P
Commande suivante Rappelle la commande commen¸ cant par le mˆ eme pr´ efixe Curseur vers la gauche Curseur vers la droite D´ ebut de ligne Fin de ligne Transpose les 2 derniers caract` eres D´ etruit le caract` ere sous le curseur Detruit la ligne en cours R´ eaffiche la ligne en cours Efface l’´ ecran Compl` ete le nom de fichier en cours (en fin de ligne) Liste les compl´ etions possibles
Ctrl-B ← Ctrl-F → Ctrl-A Ctrl-E Ctrl-T Ctrl-D Ctrl-U Ctrl-R Ctrl-L TAB Ctrl-D
18
L’environnement
Unix dispose d’un m´ ecanisme de variables d’environnement qui peuvent ˆ etre utilis´ ees pour modifier le comportement des commandes.
printenv permet d’afficher la valeur d’une variable. setenv variable valeur permet de modifier une variable. $VARIABLEpermet d’adresser le contenu d’une variable. Le fichier .login contient les commandes ex´ ecut´ ees au d´ ebut de chaque connexion. Il peut ˆ etre utilis´ e pour positionner les variables d’environnement. Variables standard : USER d´ esigne le nom de login de l’utilisateur HOME d´ esigne le r´ epertoire de login de l’utilisateur PATH sp´ ecifie le chemin de recherche des commandes TERM indique le type de terminal ASCII DISPLAY indique le nom du terminal graphique
19
L’aide en ligne
Unix dispose de toute la documentation de r´ ef´ erence en ligne. La doc est organis´ ee en 9 sections : 1 2 3 4 5 6 7 8 l
Commandes utilisateur Appels syst` eme Fonctions la biblioth` eque standard Formats de fichiers Tables Jeux Drivers de p´ eriph´ eriques Commandes d’administration syst` eme Commandes locales
Visualiser une page du manuel :
man [-s section ] commande Rechercher les pages qui se rapportent ` a un mot-cl´ e:
man -k mot-cl´ e
20
Naviguer dans l’arborescence
pwd Affiche le r´ epertoire courant.
cd chemin Change le r´ epertoire courant.
cd Retourne dans le r´ epertoire de travail de l’utilisateur.
mkdir chemin Cr´ ee un r´ epertoire.
rmdir chemin D´ etruit un r´ epertoire vide.
21
Visualiser des fichiers
ls [-l][chemin ] Liste le contenu d’un r´ epertoire. -l affiche des informations sur chaque fichier. elwood% ls −l drwxr−xr−x −rw−r−−r−− −rw−r−−r−− droits d’accès
2 matthieu 1 matthieu 1 matthieu
ii ii ii
512 Mar 10 15:09 CVS 744 Mar 10 14:17 Makefile 8117 Mar 10 15:23 chap1.tex
propriétaire
nombre de liens
taille(octets) date de dernière groupe modification
nom du fichier
cat chemin... Copie les fichiers sp´ ecifi´ es ` a l’´ ecran.
more chemin... Visualise le fichier ´ ecran par ´ ecran.
od [-x] chemin... Copie le fichier en octal ` a l’´ ecran. l’afficher en hexad´ ecimal.
-x permet de 22
Rechercher de l’information
find r´ epertoire -name nom -print Recherche ` a partir de r´ epertoire tous les fichier dont le nom est nom.
grep expression fichier... Recherche la chaˆıne expression dans les fichiers sp´ ecifi´ es.
23
Manipuler des fichiers
cp [-i] chemin source chemin destination cp [-i] chemin... r´ epertoire Copie de fichier.
mv [-i] chemin source chemin destination mv [-i] chemin... r´ epertoire Changement de nom ou d´ eplacement de fichiers.
rm [-r][-i] chemin D´ etruit un fichier. Si -r, destruction r´ ecursive du contenu du r´ epertoire. -i permet de demander une confirmation ` a l’utilisateur avant de d´ etruire ou d’´ ecraser un fichier existant.
24
G´ erer les droits d’acc` es
chmod [-R] droits chemin ... Change les droits d’acc` es des fichiers sp´ ecifi´ es. -R permet de traverser r´ ecursivement tous les sous-r´ epertoires. droits est de la forme:
u|g|o +|- r|w|x exemple :
chmod g+w exemple.data Les droits peuvent ˆ etre indiqu´ es en octal. Ex: chmod 644 fichier.
chgrp [-R] groupe chemin ... Change le groupe des fichiers sp´ ecifi´ es. -R permet de traverser r´ ecursivement tous les sous-r´ epertoires.
Seul root peut changer le propri´ etaire d’un fichier avec chown.
25
Editer un fichier texte avec vi
vi chemin 2 modes: commande et insertion. En mode commande
h j k l i x dd U :w<RET> :q<RET> :q!<RET> ZZ
d´ eplacement (gauche bas haut droite) passe en mode insertion detruit le caractere sous le curseur detruit la ligne courante (Undo) Restaure la ligne courante sauvegarde le fichier courant quitte vi quitte vi sans sauver sauve le fichier en cours et quitte
En mode insertion
<ESC> <DEL>
repasse en mode commande detruit le caract` ere pr´ ec´ edant
26
Les redirections et les pipes
Chaque commande a : • une entr´ ee standard (clavier) • une sortie standard (´ ecran) • une sortie d’erreur (´ ecran) Redirection de l’entr´ ee :
commande < chemin Redirection de la sortie standard :
commande > chemin Redirection des sorties standard et d’erreur :
commande >& chemin Redirection de la sortie d’une commande vers l’entr´ ee d’une autre :
commande1 | commande2
27
Les filtres
Un filtre est une commande qui prend ses donn´ ee d’entr´ ee sur l’entr´ ee standard et fournit ses r´ esultats sur la sortie standard. Utilis´ es dans des pipes Exemple: tri des lignes d’un fichier
cat /etc/passwd | sort | more Important : tous les processus formant un pipe tournent en mˆ eme temps.
28
Quelques filtres utiles
sort Trie les lignes de l’entr´ ee.
uniq Supprime les lignes identiques dans un fichier tri´ e.
head -n Garde les n premi` eres lignes.
tail -n Garde les n derni` eres lignes.
grep expression Garde les lignes qui contiennent l’expression r´ eguli` ere.
tr liste1 liste2 Remplace chaque caract` ere de liste1 par celui correspondant dans liste2. Ex: tr A-Z a-z remplace les majuscules par des minuscules. 29
Autres outils de base
• awk langage de recherche de chaˆınes de de g´ en´ eration de rapports.
• diff recherche des diff´ erences entre 2 fichiers.
• sed ´ editeur de texte non-interactif (filtre).
• join jointure de 2 fichiers sur un champ.
• comm affichage des parties communes ` a 2 fichiers
30
Imprimantes
setenv LPDEST imprimante Choisi l’imprimante par d´ efaut.
lp fichier... Envoie des fichiers ` a l’imprimante par d´ efaut.
lpstat -o Visualise la file d’attente des imprimantes.
cancel job Enl` eve le job indiqu´ e de la file d’attente.
a2ps fichier ASCII Formatte un fichier ASCII en 2 colonnes par page et l’envoie ` a l’imprimante.
31
Le courrier ´ electronique
Lire ses messages
mailx ? num RET d r R s file q x
liste des commandes disponibles affiche le message num´ ero num affiche le message courant et passe au suivant d´ etruit le message courant et passe au suivant r´ epond ` a l’auteur du message r´ epond ` a tous les destinataires du message sauve le message courant dans un fichier sauve la boite aux lettres dans mbox et quitte quitte sans sauver
Envoyer un message
mailx destinataire Terminer par un point (.) en d´ ebut de ligne.
32
Les processus
Un seul type de processus. Un processus est cr´ e´ e par un autre processus −→ arborescence de processus. Un processus appartient ` a l’utilisateur qui l’a cr´ e´ e. Les processus de root sont les processus syst` eme. init
lpd
getty
telnetd
csh
csh
xterm
matlab
update csh
emacs
csh
ps -ef Liste tous les processus du syst` eme.
33
Les processus (2)
foreground commande qui garde la main pendant son ex´ ecution. Utilise le clavier et l’´ ecran. background commande qui rend la main une fois le processus lanc´ e. Celui-ci continue sans faire d’entr´ ee/sortie au terminal.
commande & Lance un processus en background.
jobs Affiche les processus en background.
kill %job Termine un processus en background.
fg [%job ] Ram` ene un processus en foreground.
34
Les processus (3)
nice commande Ex´ ecute la commande avec une priorit´ e plus faible.
renice priorit´ e processus Change la priorit´ e du processus indiqu´ e.
at date commande ^D Ex´ ecute la commande ` a la date indiqu´ ee.
35
Les signaux
Unix dispose d’un m´ ecanisme d’interruptions logiciel: les signaux. 2 fa¸ cons d’envoyer un signal ` a un processus : • Caract` eres de contrˆ ole :
^C ^Z ^\
envoie SIGINT (interruption) envoie SIGSTOP (supend le process) envoie SIGQUIT (fin)
• la commande kill :
kill [-signal ] processus ... Par d´ efaut, envoie SIGTERM.
36
D´ eveloppement de logiciels
Cycle : ´ dition : • E
vi fichier.c • Compilation :
cc -g -o fichier fichier.c • Ex´ ecution :
fichier Gestionnaire de compilation : make.
37
Bibliographie
• John Levine and Margaret Levine Young, Unix for Dummies, IDG. • Harley Hahn, A Student’s Guide to Unix, McGraw Hill. • Don Libes and Sandy Ressler, Life with Unix - A Guide for Everyone, Prentice Hall. • Paul Abrahams and Bruce Larson, Unix for the Impatient, Addison Wesley. • Daniel Gilly and O’Reilly staff, Unix in a Nutshell, O’Reilly.
39