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,...)
– plusieurs processus s'exécutent en même temps
– l'OS à le contrôle des processus
– plusieurs utilisateurs peuvent se connecter simultanément
– plusieurs utilisateurs peuvent exécuter des processus simultanément
Historique
GNU
– 1984 : emacs
– 1987 : gcc
– 1989 : GPLv1
– 1991 : GPLv2
– 1997 : lesstif
Historique
Linux
– 1ère version
– code source : 63 Ko
– 2 branches
– code source : 1 Mo
– code source : 5 Mb
– port Alpha
– SMP
(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
– mise à disposition des ressources machines
– gestion de l'accès aux ressources machines
– modulaire
GNU/Linux
Le kernel et l 'OS
– gestion du système via l'interface proposée par le lernel
– sous forme d'utilitaires, ou de librairies
GNU/Linux Le kernel et l 'OS
GNU/Linux
User land et kernel space
– espace sensible
– espace protégé
– contient le kernel et ses modules
– espace utilisateur
– espace libre
– espace cloisonné
GNU/Linux
Les di s t r ibutions
« Versions » différentes de GNU/Linux
GNU/Linux
Les di s t r ibutions
– kernel
– outils GNU
– 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 »
Le Shell
« Less sucks less more than more. That's why I use more less, and less more.. »
Inconnu
Shell
Interêt ?
– terminaux texte
– accès distant
– traitement "par lots"
– automatisation
– tâche combinées (pipes)
– job control
Shell
Oui mai s ...
– sh, sash, ksh, csh, tcsh, ash, bash, psh, fish,
...
shell en même temps (unix est multiutilisateurs)
Shell
Terminaux
xterm
vt100
console vga
Shell Autopsie d'un « login»
Shell
Envi ronnement
– est modifiable
– est transitoire
– 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)
…
Filesystem
Balade dans le «f s»
cd chemin (chemin relatif)
cd /chemin (chemin absolu)
ls (contenu du répertoire courant)
ls chemin (contenu de « chemin »)
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
Shell
$PATH
Répertoire '.
' danger !
– n'importe qui peut écrire dans /tmp (entre autres) !
Shell
Ent rée/Sor ties
– 1 entrée
– 2 sorties
– 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 » :
Shell
Ent rée/Sor ties : cat
cat : copie STDIN (ou un fichier) sur STDOUT
(écrit les erreurs, s'il y a, sur STDERR)
[email protected]:~$ cat
azerty
azerty
qsdfg
qsdfg
[email protected]:~$ 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
[email protected]:~$ cat /etc/bidon
cat: /etc/bidon: Aucun fichier ou répertoire de ce type
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
[email protected]:~$ cat < /etc/hostname pluton
[email protected]:~$ cat /etc/hostname pluton
[email protected]:~$ cat /etc/hostname > /tmp/test
[email protected]:~$ cat /tmp/test pluton
[email protected]:~$ cat /etc/hostname > /dev/null
[email protected]:~$ cat < /etc/hostname > /dev/null
[email protected]:~$ cat /etc/hostname pluton
[email protected]:~$ cat /etc/portnaouak
cat: /etc/portnaouak: Aucun fichier ou répertoire de ce type
[email protected]:~$ cat /etc/portnaouak 2> /dev/null
[email protected]:~$ cat /etc/hostname /etc/portnaouak > out.txt 2> err.txt
[email protected]:~$ cat out.txt pluton
[email protected]:~$ cat err.txt
cat: /etc/portnaouak: Aucun fichier ou répertoire de ce type
Shell
Redi rec tions d'E/S
[email protected]:~$ cat /etc/hostname pluton
[email protected]:~$ cat /etc/hostname >> /tmp/test
[email protected]:~$ cat /tmp/test
pluton
pluton
[email protected]:~$ cat /etc/hostname > /tmp/test
[email protected]:~$ cat /tmp/test
pluton
[email protected]:~$ cat /etc/hostname > /tmp/test
[email protected]:~$ cat /tmp/test
pluton
[email protected]:~$ cat /etc/hostname >> /tmp/test
[email protected]:~$ cat /tmp/test
pluton
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
Shell
Pipes
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"