Cours Complet sur Linux pas à pas
Cours Complet sur Linux pas à pas en pdf
...
Unix Philosophie
1) Ce qui est petit est beau
2) Chaque programme fait une chose et la fait bien
3) Construire un prototype dès que possible
4) Choisir la portabilité plutôt que l'efficacité
5) Enregistrer les données dans des fichiers plats
6) Utiliser le logiciel comme une force
7) Utiliser les scripts shells pour accroître cette force
8) Eviter les interfaces utilisateur captives
9) Faire de chaque programme un filtre
Unix Philosophie
1) Small is beautiful.
2) Make each program do one thing well.
3) Build a prototype as soon as possible.
4) Choose portability over efficiency.
5) Store data in flat text files.
6) Use software leverage to your advantage.
7) Use shell scripts to increase leverage and portability.
8) Avoid captive user interfaces.
9) Make every program a filter.
Unix Philosophie
« timtowtdi »
There is more than one way to do it leitmotiv perl, qui s'applique très bien à Unix
Sous unix, tout est fichier
– fichiers (!)
– répertoires
– devices
– liens
– pipes
– sockets
Sous unix, les fichiers doivent être
– lisibles par l'homme
– exploitables simplement par la machine
...donc sous Unix :
– tous les fichiers de configuration sont texte...
...ou générés à partir de fichiers texte
– pas de binaire : les fichiers de configuration doivent être éditables simplement (≠registry)
– pas de formats exotiques (≠xml)
– pas de formats fermés (≠doc,byo,...)
- Multitâche
– plusieurs processus s'exécutent en même temps
– l'OS à le contrôle des processus
- Multiutilisateur
– plusieurs utilisateurs peuvent se connecter simultanément
– plusieurs utilisateurs peuvent exécuter des processus simultanément
Historique
GNU
- GNU : « Gnu's Not Unix »
- Promu par la Free Software Foundation
- Objet : développement d'outils et de licences libres
– 1984 : emacs
– 1987 : gcc
– 1989 : GPLv1
– 1991 : GPLv2
– 1997 : lesstif
Historique
Linux
- Août 1991
– 1ère version
– code source : 63 Ko
- 1994 :
– 2 branches
– code source : 1 Mo
- Juin 1996 : v2.0
– code source : 5 Mb
– port Alpha
– SMP
- Mars 2006 : v2.6.11, >200 Mb
- 20+ architectures supportées
(x86, ppc, sparc, arm, α, avr32, ...)
Historique Linux
360x10
12 FLOPS
1x10
9 FLOPS
20x10
3 MIPS
1 MIPS
GNU/Li nux
Le kernel et l 'OS
- Kernel : Linux
– mise à disposition des ressources machines
- entrées /dev, /proc, /sys
- allocation mémoire
– gestion de l'accès aux ressources machines
- droits
- ordonnancement
- gestion des accès
– modulaire
- chargement déchargement de modules (drivers)
- automatique ou manuel
GNU/Linux
Le kernel et l 'OS
- OS : GNU
– gestion du système via l'interface proposée par le lernel
- systèmes de fichiers
- réseau
- droits
- périphériques
- ...
– sous forme d'utilitaires, ou de librairies
- shell, ls, rm, ...
- libusb, libpam, ...
GNU/Linux Le kernel et l 'OS
GNU/Linux
User land et kernel space
- « Kernel Space »
– espace sensible
– espace protégé
– contient le kernel et ses modules
- « Userland »
– espace utilisateur
– espace libre
– espace cloisonné
GNU/Linux
Les di s t r ibutions
« Versions » différentes de GNU/Linux
- Payantes (RHEL), semi-payantes (Mandriva) ou gratuites (presque toutes)
- Pour l'expert (Debian), le débutant (Kubuntu), le maniaque (LFS), le patient (Gentoo), le nostalgique (Yggdrasil, Slackware)
- Orientée bureautique (Ubuntu), appliance (Damn Small), serveur (Trustix) ou généraliste (SuSE, Fedora)
- Religieuses (Crux, Ubuntu CE, Ubuntu SE), païennes (les autres)
- Plus de 350 distributions sur le «marché»
GNU/Linux
Les di s t r ibutions
- Points communs ?
– kernel
– outils GNU
- Différences ?
– kernel
– outils GNU
– système de packages
– fichiers de configuration
– fichiers de démarrage
– organisation et type du filesystem
– philosophie
– canaux de distribution
– méthode d'installation, de configuration
– outils
– ....
Administ rat ion Système
Définition
« Faire un maximum de scripts pour en faire le moins possible »
- Arzur
Le Shell
« Less sucks less more than more. That's why I use more less, and less more.. »
Inconnu
Shell
Interêt ?
- Interface utilisateur non graphique
– terminaux texte
– accès distant
- Interpréteur de scripts
– traitement "par lots"
– automatisation
- Lancement de tâches multiples
– tâche combinées (pipes)
– job control
Shell
Oui mai s ...
- C'est un programme "normal"
- Le choix est vaste
– sh, sash, ksh, csh, tcsh, ash, bash, psh, fish,
...
- On peut exécuter plusieurs shells en parallèle (unix est multitâche)
- Plusieurs utilisateurs peuvent exécuter un
shell en même temps (unix est multiutilisateurs)
Shell
Terminaux
xterm
vt100
console vga
Shell Autopsie d'un « login»
Shell
Envi ronnement
- Un shell donné s'exécute dans un environnement propre et clos contenant des variables
- Cet environnement est :
– est modifiable
– est transitoire
- L'environnement initial
– est défini au niveau système
– peut être modifié par l'utilisateur
…
Filesystem
L e s y s t è me d e fi c h i e r s (fi l e s y s t e m)
- Organisé hiérarchiquement dans sa totalité depuis la racine («/»)
- Sensible à la casse (des caractères)
- Utilise '/' pour séparer les répertoires dans un chemin
- Peut contenir n'importe quel caractère
- Taille pratique d'un nom de fichier illimitée
- Pas de notion «d'extensions»
- Distro-dépendant malgré le «standard»
…
Filesystem
Balade dans le «f s»
- Se déplacer dans le filesystem
cd chemin (chemin relatif)
cd /chemin (chemin absolu)
- Voir le contenu du répertoire
ls (contenu du répertoire courant)
ls chemin (contenu de « chemin »)
- Connaître le répertoire courant
pwd (print working directory)
Filesystem
Balade dans le «f s»
Répertoires à part :
/ : racine du filesystem
. : répertoire courant
.. : répertoire parent
~ : répertoire maison («home dir», correspond à $HOME)
Filesystem
Lieux tour i s tiques du «f s»
Répertoire essentiels au fonctionnement
/ : racine
/bin, /sbin : binaires systèmes
/etc : configuration système
/boot : kernel et 2eme étage du bootloader
Filesystem
Lieux tour i s tiques du «f s»
/usr : binaires d'usage courant
/home : répertoires utilisateurs
/var : données variables (sgbd, logs)
/proc : information système temps réèl
/mnt, /media : point montage temporaire
/sys : bus systèmes
/tmp : répertoire temporaire
lost+found : objets trouvés
Shell
$PATH
- Variable d'environnement
- Contient une suite de chemins séparés par ':'
- Les exécutables seront recherchés dans ces chemins
Shell
$PATH
Répertoire '.
' danger !
- risque d'exécuter un trojan
– n'importe qui peut écrire dans /tmp (entre autres) !
- le shell perd du temps à chaque 'cd'
Shell
Ent rée/Sor ties
- Par défaut tout processus possède :
– 1 entrée
– 2 sorties
- Ces I/O sont distinctes pour chaque processus
- Pour les programmes interactifs (comme les shells) :
– les entrées proviennent du clavier
– les sorties s'affichent sur l'écran
Shell
Ent rée/Sor ties
STDIN (entrée standard) : ce qui est envoyé vers le processus
STDOUT (sortie standard) : ce qui est envoyé par le processus
STDERR (sortie erreur standard) : les erreurs renvoyés par le processus
Shell
Ent rée/Sor ties
Ces entrés/sorties standard sont en fait des noms symboliques, correspondant à des « descripteurs de fichiers » :
- STDIN (INput) : descripteur de fichier 0
- STDOUT (OUTput) : descripteur de fichier 1
- STDERR (ERRor) : descripteur de fichier 2
Shell
Ent rée/Sor ties : cat
cat : copie STDIN (ou un fichier) sur STDOUT
(écrit les erreurs, s'il y a, sur STDERR)
user@host:~$ cat
azerty
azerty
qsdfg
qsdfg
user@host:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 michel
# The following lines are desirable for IPv6 capable hosts
::1 ip6localhost ip6loopback
fe00::0 ip6localnet
user@host:~$ cat /etc/bidon
cat: /etc/bidon: Aucun fichier ou répertoire de ce type
user@host:~$
Shell
Redi rec tions d'E/S
Les E/S peuvent être redirigées de ou vers un fichier processus < fichier
STDIN provient du fichier (et non plus du clavier) processus > fichier
STDOUT est écrit dans fichier (et non plus sur le terminal) processus 2> fichier
STDERR est écrit dans fichier (et non plus sur le terminal) processus > fichier1 2> fichier2
STDOUT est écrit dans fichier1 et STDERR dans fichier2
Shell
Redi rec tions d'E/S
user@pluton:~$ cat < /etc/hostname pluton
user@pluton:~$ cat /etc/hostname pluton
user@pluton:~$ cat /etc/hostname > /tmp/test
user@pluton:~$ cat /tmp/test pluton
user@pluton:~$ cat /etc/hostname > /dev/null
user@pluton:~$ cat < /etc/hostname > /dev/null
user@pluton:~$ cat /etc/hostname pluton
user@pluton:~$ cat /etc/portnaouak
cat: /etc/portnaouak: Aucun fichier ou répertoire de ce type
user@pluton:~$ cat /etc/portnaouak 2> /dev/null
user@pluton:~$ cat /etc/hostname /etc/portnaouak > out.txt 2> err.txt
user@pluton:~$ cat out.txt pluton
user@pluton:~$ cat err.txt
cat: /etc/portnaouak: Aucun fichier ou répertoire de ce type
Shell
Redi rec tions d'E/S
user@pluton:~$ cat /etc/hostname pluton
user@pluton:~$ cat /etc/hostname >> /tmp/test
user@pluton:~$ cat /tmp/test
pluton
pluton
user@pluton:~$ cat /etc/hostname > /tmp/test
user@pluton:~$ cat /tmp/test
pluton
user@pluton:~$ cat /etc/hostname > /tmp/test
user@pluton:~$ cat /tmp/test
pluton
user@pluton:~$ cat /etc/hostname >> /tmp/test
user@pluton:~$ cat /tmp/test
pluton
pluton
user@pluton:~$
Shell
E n t r é e s / s o r ti e s : d e v i c e s s p é c i a u x
Plusieurs "devices" (fichiers dans /dev) ont une vocation particulière :
/dev/null trou noir annihiliant tout ce qui lui est envoyé
/dev/zero envoie des zéros ad-vitam
/dev/random /dev/urandom fournisseurs officiels de hazard
/dev/full dispositif hypochondriaque : se plaint toujours (d'être plein)
Shell
Redi rec tions d'E/S : t ravaux
1) Copier le contenu de /etc/passwd dans le fichier /tmp/users.txt
2) Ecrire «linus» à la fin de users.txt
3) Vider le fichier users.txt
4) Remplir users.txt de "zéros" (utiliser le dispositif fournisseur de zéros : /dev/zero)
5) Rediriger l'erreur standard de 'ls -lR /' dans
/tmp/users.txt
6) Vider le fichier users.txt (d'une autre manière qu'en 3)
Shell
Pipes
- Les «pipes» (pipelines) permettent d'envoyer la sortie d'une commande (STDOUT) à l'entrée d'une autre (STDIN) :
Shell
Pipes
- On trouve très souvent la commande grep au milieu de pipelines
- grep permet de n'afficher une ligne que si elle contient une chaine de caractères donnée
- Sa syntaxe est :
grep chaîne fichier affiche les lignes de fichier contenant "chaîne"
grep chaîne affiche les lignes lues sur l'entrée standard (STDIN) contenant "chaîne"