Index: trunk/unix/Makefile
===================================================================
--- trunk/unix/Makefile	(revision 208)
+++ trunk/unix/Makefile	(revision 212)
@@ -22,4 +22,5 @@
 	libsmall.h \
 	small.c \
+	tree.txt \
 
 unix_IMAGESJPG= \
Index: trunk/unix/tree.txt
===================================================================
--- trunk/unix/tree.txt	(revision 212)
+++ trunk/unix/tree.txt	(revision 212)
@@ -0,0 +1,21 @@
+/
+|-- bin
+|   |- ls
+|   |- rm
+|-- boot
+|   `-- grub
+|-- dev
+|-- etc
+|-- home
+|   |-- olivier
+|-- lib
+|-- mnt
+|-- net
+|-- root
+|-- sbin
+|-- tmp
+|-- usr
+|   |-- bin
+|   |-- include
+|   |-- lib
+`-- var
Index: trunk/unix/unix.tex
===================================================================
--- trunk/unix/unix.tex	(revision 208)
+++ trunk/unix/unix.tex	(revision 212)
@@ -161,5 +161,5 @@
 \begin{itemize}
 \item Linux: le noyau lui même (\href{http://www.kernel.org}{kernel.org})
-\item des applis eparpillées sur internet
+\item des applis éparpillées sur internet
 \end{itemize}
 \end{block}
@@ -185,5 +185,5 @@
 \includegraphics[height=40mm]{process}
 \column{2.5in}
-\begin{block}{Role du kernel}
+\begin{block}{Rôle du kernel}
 \begin{itemize}
 \item gérer le matériel
@@ -198,305 +198,11 @@
 \section{Les fichiers}
 
-\subsection{Les fichiers}
-
-\begin{frame}[fragile]
-\frametitle{Nom de fichiers}
-
-\begin{block}{Accès aux fichiers}
-\begin{itemize}
-\item le séparateur est \verb+/+
-\item plusieurs \verb+/+ n'en font qu'un
-\item la longueur maximal d'un chemin est de 1024 (POSIX)
-\item tout les caractères sont permis sauf \verb+/+ et \emph{NULL}
-\end{itemize}
-\end{block}
-\vfill
-\begin{alertblock}{On évitera cependant}
-\begin{itemize}
-\item l'espace (qu'il faut échaper sur la ligne de commande)
-\item \verb+-+ (surtout en premier, option en ligne de commande)
-\item ce qui ne se tape pas au clavier
-\item les accents (problème d'encodage)
-\end{itemize}
-\end{alertblock}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{. et ..}
-\begin{block}{chaque dossier contient:}
-\begin{itemize}
-\item \verb+.+ le répertoire lui même
-\item \verb+..+ le parent
-\end{itemize}
-\end{block}
-\vfill
-\pause
-\begin{alertblock}{trop de ..}
-\verb+/..+ pointe sur \verb+/+
-
-\begin{verbatim}
-$ ls ../../../../../../etc/passwd
-../../../../../../etc/passwd
-\end{verbatim}
-
-On rebondit sur \verb+/+ et on redescend dans \verb+/etc/passwd+.
-\end{alertblock}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Fichiers temporaires}
-\begin{block}{Un fichier qu'on ne va pas garder, mais:}
-\begin{itemize}
-\item il ne doit pas exister
-\pause
-\item nom aléatoire (écrasement basé sur un lien symbolique)
-\pause
-\item le placer au bon endroit
-\end{itemize}
-\pause
-\vfill
-\textbf{en pratique}
-\begin{itemize}
-\item shell: mktemp
-\item C: mkstemp
-\item Perl: module File::Temp
-\end{itemize}
-\end{block}
-\pause
-\vfill
-\begin{exampleblock}{}
-\small
-\listinginput[1]{1}{temp.sh}
-\end{exampleblock}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{L'inode}
-
-\begin{exampleblock}{Le fichier est matérialisé par une inode}
-{\small\begin{verbatim}
-[olivier@andromede unix]$ ls -li unix.tex
-6160386 -rw-r--r-- 1 olivier olivier 3049 17:30 unix.tex
-\end{verbatim}
-}
-\end{exampleblock}
-
-\begin{block}{L'inode contient}
-\begin{itemize}
-\item un numéro (6160386)
-\item des métadata
-\begin{itemize}
-\item taille (3049)
-\item propriétaires / droits d'accès
-\item dates: d'accès (atime), création (ctime), modification (mtime)
-\end{itemize}
-\item éventuellement un contenu
-\end{itemize}
-\end{block}
-\pause
-\begin{alertblock}{}
-Créer un fichier créer l'inode\\
-Effacer un fichier efface l'inode (si plus référencée)
-\end{alertblock}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{existance d'un fichier}
-\begin{block}{un fichier existe tant que}
-\begin{itemize}
-\item l'inode est référencée par un nom (lien hard)
-\item l'inode est ouverte
-\end{itemize}
-\end{block}
-\pause
-\vfill
-\begin{exampleblock}{liens hard}
-{\small\begin{verbatim}
-[olivier@andromede unix]$ ln fichier1 fichier2
-[olivier@andromede unix]$ ls -li fichier*
-6160393 -rw-r--r-- 2 olivier olivier 1101 19:54 fichier1
-6160393 -rw-r--r-- 2 olivier olivier 1101 19:54 fichier2
-[olivier@andromede unix]$ rm -f fichier1
-[olivier@andromede unix]$ ls -li fichier*
-6160393 -rw-r--r-- 1 olivier olivier 1101 19:54 fichier2
-\end{verbatim}
-}
-\end{exampleblock}
-\end{frame}
-
-\begin{frame}[fragile]
-\begin{exampleblock}{deleteopen.pl}
-\frametitle{existance d'un fichier}
-\listinginput[2]{1}{deleteopen.pl}
-\end{exampleblock}
-\pause
-\begin{block}{Conséquences:}
-\begin{itemize}
-\item le fichier n'est accessible que par l'application
-\item si l'application quitte: l'espace disque est récupéré
-\item la fermeture du descripteur entraine l'effacement du fichier
-\end{itemize}
-\pause
-{\small\begin{verbatim}
-perl 23536 ol 3w REG  8,7  0  49065 /tmp/opened (deleted)
-\end{verbatim}
-}
-Utile pour les fichiers temporaires.
-\end{block}
-\end{frame}
-
-\begin{frame}[fragile]
-\begin{alertblock}{quand ctime dépasse mtime}
-Copie en préservant les métadata:
-{\small\begin{verbatim}
-[olivier@andromede unix]$ cp -a unix.tex unix2.tex
-\end{verbatim}
-}
-\pause
-Le fichier vient d'être créé:
-{\small\begin{verbatim}
-[olivier@andromede unix]$ ls -l --time=c unix2.tex
--rw-r--r-- 1 olivier olivier 3049 18:47 unix2.tex
-\end{verbatim}
-}
-\pause
-Pourtant la date de modification est antérieur:
-{\small\begin{verbatim}
-[olivier@andromede unix]$ ls -l  unix2.tex
--rw-r--r-- 1 olivier olivier 3049 17:30 unix2.tex
-\end{verbatim}
-}
-\end{alertblock}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{les types de fichiers}
-\begin{exampleblock}{ls -l}
-- \emph{rw-r--r-- 1 olivier olivier 3049 17:30 unix2.tex}
-\end{exampleblock}
-
-\begin{block}{les différents types}
-\begin{itemize}
-\item les simples fichiers (-)
-\item les répertoires (d)
-\pause
-\item les liens symboliques (l)
-\pause
-\item les fichiers de périphérique (c ou b)
-\pause
-\item les fifo (tubes nommés, p)
-\pause
-\item les sockets (=)
-\end{itemize}
-\end{block}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{les fichiers à trous (sparse files)}
-\begin{block}{théorie}
-\begin{itemize}
-\item certaines données n'existent pas
-\item les trous ne prennent pas de place
-\item le système renvoient des 0 en cas de lecture
-\item le fichier peut être plus gros que le système de fichier
-\end{itemize}
-\end{block}
-\pause
-\vfill
-\begin{block}{utilisation ?}
-Chaque fois que des données seront allouées à emplacement dans le fichier:
-\begin{itemize}
-\item disque virtuel
-\item base de données
-\end{itemize}
-\end{block}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{fichiers à trous: exemple}
-\begin{exampleblock}{sparce.c}
-\begin{small}
-\listinginput{1}{sparse.c}
-
-\begin{verbatim}
-[olivier@andromede unix]$ ls -ls sparsed
-8 -rw-rw-r-- 1 olivier olivier 1048582 02:57 sparsed
-\end{verbatim}
-\end{small}
-\end{exampleblock}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Fichier de périphérique}
-\begin{block}{2 types}
-\begin{itemize}
-\item block (b)
-\item caractères (c)
-\end{itemize}
-\end{block}
-\pause
-\begin{exampleblock}{Tout est fichier}
-\begin{verbatim}
-brw-rw---- 1 nanardon cdwriter 11, 0 12:26 /dev/sr0
-\end{verbatim}
-
-C'est le premier lecteur CDROM SCSI (SATA en réalité)
-
-\pause
-Je peux le lire comme un fichier:
-\begin{verbatim}
-$ dd if=/dev/sr0 bs=1024 count=20 | wc
-20+0 enregistrements lus
-20+0 enregistrements écrits
-20480 octets (20 kB) copiés, 0,803619 s, 25,5 kB/s
-      0       0   20480
-\end{verbatim}
-\end{exampleblock}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{les fifos}
-\begin{exampleblock}{Première console:}
-\begin{verbatim}
-$ mkfifo /tmp/fifo
-$ cat /etc/passwd > /tmp/fifo
-\end{verbatim}
-\end{exampleblock}
-\pause
-\vfill
-\begin{exampleblock}{Deuxième console:}
-\begin{verbatim}
-$ grep root < /tmp/fifo
-root:x:0:0:root:/root:/bin/bash
-\end{verbatim}
-\end{exampleblock}
-\pause
-\vfill
-\begin{block}{Cet exemple simple revient à}
-\begin{verbatim}
-cat /etc/passwd | grep root
-\end{verbatim}
-\end{block}
-\end{frame}
-
 \subsection{Systèmes de fichiers}
 
 \begin{frame}[fragile]
-\frametitle{principe}
-\begin{block}{le montage}
-Le système de fichier est stocké sur un support (disque, fichier, cdrom, \ldots)
-
-Le noyau le fait apparaitre dans un répertoire.
-\end{block}
-\vfill
-\begin{exampleblock}{la commande mount}
-\begin{verbatim}
-[olivier@andromede unix]$ mount
-/dev/sda3 on / type ext3 (rw,noatime)
-/dev/sda8 on /home type ext3 (rw,noatime)
-[...]
-virgo:/home/data on /mnt/disk type nfs
-    (ro,addr=192.168.76.1)
-\end{verbatim}
+\frametitle{Vue globale}
+\begin{exampleblock}{tree  / -L 2 -d}
+\tiny
+\listinginput[5]{1}{tree.txt}
 \end{exampleblock}
 \end{frame}
@@ -506,5 +212,5 @@
 \begin{block}{L'emplacement des fichiers}
 \begin{tabular}{ll}
-\verb+/boot+&Bootloader et noyaux\\
+\verb+/home+&les données utilisateurs\\
 \verb+/etc+&fichiers de configuration\\
 \verb+/bin+, \verb+/usr/bin+&les executables utilisateur\\
@@ -534,4 +240,306 @@
 Le Filesystem Hierarchy Standard normalise l'empacement des fichiers
 \end{alertblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{principe}
+\begin{block}{le montage}
+Le système de fichiers est stocké sur un support (disque, fichier, cdrom, \ldots)
+
+Le noyau le fait apparaitre dans un répertoire.
+\end{block}
+\vfill
+\begin{exampleblock}{la commande mount}
+\begin{verbatim}
+[olivier@andromede unix]$ mount
+/dev/sda3 on / type ext3 (rw,noatime)
+/dev/sda8 on /home type ext3 (rw,noatime)
+[...]
+virgo:/home/data on /mnt/disk type nfs
+    (ro,addr=192.168.76.1)
+\end{verbatim}
+\end{exampleblock}
+\end{frame}
+
+\subsection{Les fichiers}
+
+\begin{frame}[fragile]
+\frametitle{Nom de fichiers}
+
+\begin{block}{Accès aux fichiers}
+\begin{itemize}
+\item le séparateur est \verb+/+
+\item plusieurs \verb+/+ n'en font qu'un
+\item la longueur maximale d'un chemin est de 1024 (POSIX)
+\item tous les caractères sont permis sauf \verb+/+ et \emph{NULL}
+\end{itemize}
+\end{block}
+\vfill
+\begin{alertblock}{On évitera cependant}
+\begin{itemize}
+\item l'espace (qu'il faut échaper sur la ligne de commande)
+\item \verb+-+ (surtout en premier, option en ligne de commande)
+\item ce qui ne se tape pas au clavier
+\item les accents (problème d'encodage)
+\end{itemize}
+\end{alertblock}
+\end{frame}
+
+\begin{block}{les différents types}
+\begin{itemize}
+\item les simples fichiers (-)
+\item les répertoires (d)
+\pause
+\item les liens symboliques (l)
+\pause
+\item les fichiers de périphérique (c ou b)
+\pause
+\item les fifo (tubes nommés, p)
+\pause
+\item les sockets (=)
+\end{itemize}
+\end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{. et ..}
+\begin{block}{chaque dossier contient:}
+\begin{itemize}
+\item \verb+.+ le répertoire lui même
+\item \verb+..+ le parent
+\end{itemize}
+\end{block}
+\vfill
+\pause
+\begin{alertblock}{trop de ..}
+\verb+/..+ pointe sur \verb+/+
+
+\begin{verbatim}
+$ ls ../../../../../../etc/passwd
+../../../../../../etc/passwd
+\end{verbatim}
+
+On rebondit sur \verb+/+ et on redescend dans \verb+/etc/passwd+.
+\end{alertblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Fichiers temporaires}
+\begin{block}{Un fichier qu'on ne va pas garder, mais:}
+\begin{itemize}
+\item il ne doit pas exister
+\pause
+\item nom aléatoire (écrasement basé sur un lien symbolique)
+\pause
+\item le placer au bon endroit
+\end{itemize}
+\pause
+\vfill
+\textbf{en pratique}
+\begin{itemize}
+\item shell: mktemp
+\item C: mkstemp
+\item Perl: module File::Temp
+\end{itemize}
+\end{block}
+\pause
+\vfill
+\begin{exampleblock}{}
+\small
+\listinginput[1]{1}{temp.sh}
+\end{exampleblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{L'inode}
+
+\begin{exampleblock}{Le fichier est matérialisé par une inode}
+{\small\begin{verbatim}
+[olivier@andromede unix]$ ls -li unix.tex
+6160386 -rw-r--r-- 1 olivier olivier 3049 17:30 unix.tex
+\end{verbatim}
+}
+\end{exampleblock}
+
+\begin{block}{L'inode contient}
+\begin{itemize}
+\item un numéro (6160386)
+\item des métadata
+\begin{itemize}
+\item taille (3049)
+\item propriétaires / droits d'accès
+\item dates: d'accès (atime), création (ctime), modification (mtime)
+\end{itemize}
+\item éventuellement un contenu
+\end{itemize}
+\end{block}
+\pause
+\begin{alertblock}{}
+Créer un fichier créer l'inode\\
+Effacer un fichier efface l'inode (si plus référencée)
+\end{alertblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{existence d'un fichier}
+\begin{block}{un fichier existe tant que}
+\begin{itemize}
+\item l'inode est référencée par un nom (lien hard)
+\item l'inode est ouverte
+\end{itemize}
+\end{block}
+\pause
+\vfill
+\begin{exampleblock}{liens hard}
+{\small\begin{verbatim}
+[olivier@andromede unix]$ ln fichier1 fichier2
+[olivier@andromede unix]$ ls -li fichier*
+6160393 -rw-r--r-- 2 olivier olivier 1101 19:54 fichier1
+6160393 -rw-r--r-- 2 olivier olivier 1101 19:54 fichier2
+[olivier@andromede unix]$ rm -f fichier1
+[olivier@andromede unix]$ ls -li fichier*
+6160393 -rw-r--r-- 1 olivier olivier 1101 19:54 fichier2
+\end{verbatim}
+}
+\end{exampleblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\begin{exampleblock}{deleteopen.pl}
+\frametitle{existance d'un fichier}
+\listinginput[2]{1}{deleteopen.pl}
+\end{exampleblock}
+\pause
+\begin{block}{Conséquences:}
+\begin{itemize}
+\item le fichier n'est accessible que par l'application
+\item si l'application quitte: l'espace disque est récupéré
+\item la fermeture du descripteur entraine l'effacement du fichier
+\end{itemize}
+\pause
+{\small\begin{verbatim}
+perl 23536 ol 3w REG  8,7  0  49065 /tmp/opened (deleted)
+\end{verbatim}
+}
+Utile pour les fichiers temporaires.
+\end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+\begin{alertblock}{quand ctime dépasse mtime}
+Copie en préservant les métadata:
+{\small\begin{verbatim}
+[olivier@andromede unix]$ cp -a unix.tex unix2.tex
+\end{verbatim}
+}
+\pause
+Le fichier vient d'être créé:
+{\small\begin{verbatim}
+[olivier@andromede unix]$ ls -l --time=c unix2.tex
+-rw-r--r-- 1 olivier olivier 3049 18:47 unix2.tex
+\end{verbatim}
+}
+\pause
+Pourtant la date de modification est antérieur:
+{\small\begin{verbatim}
+[olivier@andromede unix]$ ls -l  unix2.tex
+-rw-r--r-- 1 olivier olivier 3049 17:30 unix2.tex
+\end{verbatim}
+}
+\end{alertblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{les types de fichiers}
+\begin{exampleblock}{ls -l}
+- \emph{rw-r--r-- 1 olivier olivier 3049 17:30 unix2.tex}
+\end{exampleblock}
+
+\begin{frame}[fragile]
+\frametitle{les fichiers à trous (sparse files)}
+\begin{block}{théorie}
+\begin{itemize}
+\item certaines données n'existent pas
+\item les trous ne prennent pas de place
+\item le système renvoient des 0 en cas de lecture
+\item le fichier peut être plus gros que le système de fichiers
+\end{itemize}
+\end{block}
+\pause
+\vfill
+\begin{block}{utilisation ?}
+Chaque fois que des données seront allouées à des emplacements dans le fichier:
+\begin{itemize}
+\item disques virtuels
+\item bases de données
+\end{itemize}
+\end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{fichiers à trous: exemple}
+\begin{exampleblock}{sparce.c}
+\begin{small}
+\listinginput{1}{sparse.c}
+
+\begin{verbatim}
+[olivier@andromede unix]$ ls -ls sparsed
+8 -rw-rw-r-- 1 olivier olivier 1048582 02:57 sparsed
+\end{verbatim}
+\end{small}
+\end{exampleblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Fichier de périphérique}
+\begin{block}{2 types}
+\begin{itemize}
+\item block (b)
+\item caractères (c)
+\end{itemize}
+\end{block}
+\pause
+\begin{exampleblock}{Tout est fichier}
+\begin{verbatim}
+brw-rw---- 1 nanardon cdwriter 11, 0 12:26 /dev/sr0
+\end{verbatim}
+
+C'est le premier lecteur CDROM SCSI (SATA en réalité)
+
+\pause
+Je peux le lire comme un fichier:
+\begin{verbatim}
+$ dd if=/dev/sr0 bs=1024 count=20 | wc
+20+0 enregistrements lus
+20+0 enregistrements écrits
+20480 octets (20 kB) copiés, 0,803619 s, 25,5 kB/s
+      0       0   20480
+\end{verbatim}
+\end{exampleblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{les fifos}
+\begin{exampleblock}{Première console:}
+\begin{verbatim}
+$ mkfifo /tmp/fifo
+$ cat /etc/passwd > /tmp/fifo
+\end{verbatim}
+\end{exampleblock}
+\pause
+\vfill
+\begin{exampleblock}{Deuxième console:}
+\begin{verbatim}
+$ grep root < /tmp/fifo
+root:x:0:0:root:/root:/bin/bash
+\end{verbatim}
+\end{exampleblock}
+\pause
+\vfill
+\begin{block}{Cet exemple simple revient à}
+\begin{verbatim}
+cat /etc/passwd | grep root
+\end{verbatim}
+\end{block}
 \end{frame}
 
