325 lines
15 KiB
HTML
325 lines
15 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||
<title>Système</title>
|
||
<link rel="stylesheet" href="../../tuteurs.css" type="text/css" />
|
||
</head>
|
||
<body>
|
||
<div class="navigation">
|
||
<h1>Tuteurs informatique<br /><a href="../../meta/contact.html">Nous contacter</a></h1>
|
||
<hr />
|
||
<ul class="menu">
|
||
<li>
|
||
<a href="../../meta/charte_graphique.html">Utiliser ce site</a>
|
||
</li>
|
||
<li>
|
||
<a href="../../actualite.html">Actu et stages</a>
|
||
</li>
|
||
<li>
|
||
<a href="../../docs/">Docs à imprimer</a>
|
||
</li>
|
||
<li>
|
||
<a href="../../meta/plan_site.html">Plan du site</a>
|
||
</li>
|
||
<li>
|
||
<a href="../../search.html">Rechercher</a>
|
||
</li>
|
||
</ul>
|
||
<hr />
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="../../">Les tuteurs</a>
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="../">Unix</a>
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="./">Exercices</a>
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="contact.html">Prise de contact</a>
|
||
</li>
|
||
<li>
|
||
<a href="cp_mv.html">cp et mv</a>
|
||
</li>
|
||
<li>
|
||
<a href="enchainer.html">Pipes</a>
|
||
</li>
|
||
<li>
|
||
<a href="find.html">find</a>
|
||
</li>
|
||
<li>
|
||
<a href="grep.html">grep</a>
|
||
</li>
|
||
<li>
|
||
<a href="interface.html">Interface</a>
|
||
</li>
|
||
<li>
|
||
<a href="less.html">less</a>
|
||
</li>
|
||
<li>
|
||
<a href="ls.html">ls</a>
|
||
</li>
|
||
<li>
|
||
<a href="mkdir_cd.html">Répertoires</a>
|
||
</li>
|
||
<li>
|
||
<a href="solutions/">Solutions</a>
|
||
</li>
|
||
<li>
|
||
<a href="systeme.html" class="actuel">Système</a>
|
||
</li>
|
||
<li>
|
||
<a href="unix_deb.html">Commandes Unix</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<hr />
|
||
<ul class="menu">
|
||
<li>
|
||
<a href="http://www.eleves.ens.fr/">Serveur des élèves</a>
|
||
</li>
|
||
<li>
|
||
<a href="http://www.ens.fr/">ENS</a>
|
||
</li>
|
||
<li>
|
||
<a href="http://www.spi.ens.fr/">SPI</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="corps">
|
||
<h1>Exercices sur le système</h1>
|
||
<div class="sommaire">
|
||
<ul>
|
||
<li>
|
||
<a href="#droits">Les droits </a>
|
||
</li>
|
||
<li>
|
||
<a href="#liens"> Les liens</a>
|
||
</li>
|
||
<li>
|
||
<a href="#processus"> Les processus </a>
|
||
</li>
|
||
<li>
|
||
<a href="#shell">Programmation du shell</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<h2>
|
||
<a name="droits" id="droits">Les droits </a>
|
||
</h2>
|
||
<ol>
|
||
<li><a href="solutions/systeme-sol.html#droits1"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Changez les droits d'un fichier <tt>fic1</tt> pour que tous ceux de votre
|
||
groupe puissent écrire dedans.</li>
|
||
<li><a href="solutions/systeme-sol.html#droits2"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Donnez en une seule ligne le droit d'exécution à tous les utilisateurs d'un
|
||
fichier <tt>script</tt> qui n'a jusqu'alors que des droits standards
|
||
(<tt>-rw-r--r--</tt>).</li>
|
||
<li><a href="solutions/systeme-sol.html#droits3"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Le fichier <tt>toto</tt> a les droits suivants : <tt>-rwxr--r--</tt>.
|
||
Modifiez-en les droits en une ligne de commande de sorte que le
|
||
propriétaire n'ait plus que le droit de lecture.</li>
|
||
<li><a href="solutions/systeme-sol.html#droits4"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Modifier les droits du fichier <tt>toto</tt> (<tt>-rwxr--r--</tt>) de sorte
|
||
que le groupe et les autres utilisateurs aient les mêmes droits que le
|
||
propriétaire.</li>
|
||
<li><a href="solutions/systeme-sol.html#droits5"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Quelle option permet de modifier récursivement les droits d'un répertoire
|
||
et des fichiers qu'il contient ?</li>
|
||
<li><a href="solutions/systeme-sol.html#droits6"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Quelle option de <tt>mkdir</tt> permet de créer un répertoire en spécifiant
|
||
les droits sur ce répertoire ?</li>
|
||
<li><a href="solutions/systeme-sol.html#droits7"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Affichez et interprétez les droits de <tt>/usr/sbin/mount</tt>. </li>
|
||
</ol>
|
||
<h2>
|
||
<a name="liens" id="liens"> Les liens</a>
|
||
</h2>
|
||
<ol>
|
||
<li><a href="solutions/systeme-sol.html#liens1"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Vous avez chez vous un répertoire <tt>tmp/</tt> qui contient un fichier
|
||
<tt>bidon</tt>. Créez un lien physique sur <tt>tmp/bidon</tt> appelé
|
||
<tt>blo</tt>, dans votre répertoire d'accueil (<tt>HOME</tt>). Comparez
|
||
les contenus de <tt>tmp/bidon</tt> et de <tt>blo</tt>. Que contient
|
||
<tt>blo</tt> ?</li>
|
||
<li><a href="solutions/systeme-sol.html#liens2"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Même question avec un lien symbolique.</li>
|
||
<li><a href="solutions/systeme-sol.html#liens3"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Quelles sont les différences entre les liens durs et les liens
|
||
symboliques ?</li>
|
||
<li><a href="solutions/systeme-sol.html#liens4"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Dans quel cas ne peut-on pas faire de lien physique ? Que faut-il
|
||
faire ?</li>
|
||
<li><a href="solutions/systeme-sol.html#liens5"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Quel est l'effet de <tt>chmod</tt> sur un lien ?</li>
|
||
</ol>
|
||
<h2>
|
||
<a name="processus" id="processus"> Les processus </a>
|
||
</h2>
|
||
<ol>
|
||
<li><a href="solutions/systeme-sol.html#processus1"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Affichez la liste des processus associés à votre terminal. Affichez la
|
||
liste des processus dont vous êtes propriétaire. Recommencez en utilisant
|
||
les options <tt>-l</tt> et <tt>-f</tt>. À quoi correspondent les colonnes
|
||
<tt>PID</tt> et <tt>PPID</tt> ?</li>
|
||
<li><a href="solutions/systeme-sol.html#processus2"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Lancez une commande longue en arrière plan. Quel est le comportement du
|
||
processus associé lorsqu'il reçoit les signaux suivants :
|
||
|
||
<ul><li><tt>sigkill</tt> (9)</li><li><tt>sigstop</tt> (23)</li><li><tt>sigcont</tt> (25)</li></ul></li>
|
||
<li><a href="solutions/systeme-sol.html#processus3"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Utilisez la commande <tt>nice</tt> pour lancer des commandes ayant une
|
||
faible priorité.</li>
|
||
<li><a href="solutions/systeme-sol.html#processus4"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Interprétez la hiérarchie des processus qui vous appartiennent. </li>
|
||
<li><a href="solutions/systeme-sol.html#processus5"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
La commande <tt>ps | wc</tt> compte deux processus en plus de ceux qui
|
||
existent réellement lorsqu'on lance la commande. Pourquoi ?</li>
|
||
<li><a href="solutions/systeme-sol.html#processus6"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Donner deux commandes pour reprendre l'exécution d'une instruction
|
||
interrompue par un <tt>^Z</tt>.</li>
|
||
</ol>
|
||
<h2>
|
||
<a name="shell" id="shell">Programmation du shell</a>
|
||
</h2>
|
||
<ol>
|
||
<li><a href="solutions/systeme-sol.html#shell2"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Faites deux scripts qui vous disent bonjour en affichant votre login
|
||
(«Bonjour, toto») :
|
||
|
||
<ul><li> Quand vous tapez <tt>saluer [votre-login]</tt></li><li> Quand vous tapez juste <tt>saluer</tt></li></ul></li>
|
||
<li><a href="solutions/systeme-sol.html#shell4"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Faire un script qui affiche la phrase : <tt>Le script [params] a [n]
|
||
paramètre(s), que voici : [paramètres]</tt>, en remplaçant les mots entre
|
||
crochets par leur valeur; par exemple :
|
||
|
||
|
||
<pre><span class="prompt">chaland ~ $</span> params bla ble bli blo blu
|
||
La commande params a 5 paramètre(s), que voici : bla ble bli blo blu
|
||
</pre></li>
|
||
<li><a href="solutions/systeme-sol.html#shell5"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Créez une commande qui, lorsqu'elle est appelée, renvoie le nombre
|
||
d'arguments qui lui ont été fournis, ainsi que le premier de ces
|
||
arguments.</li>
|
||
<li><a href="solutions/systeme-sol.html#shell6"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Vous voulez écrire un script qui vous dit combien de personnes sont loguées
|
||
sur une machine donnée; par exemple :
|
||
|
||
<pre><span class="prompt">drakkar ~ $</span> combien galion
|
||
Il y a 5 personne(s) loguées sur galion en ce moment.
|
||
<span class="prompt">drakkar ~ $</span>
|
||
</pre></li>
|
||
<li><a href="solutions/systeme-sol.html#shell7"><img src="../../icones/solution.png" alt="Solution" /></a> On veut remplacer
|
||
le suffixe <tt>.htm</tt> d'un ensemble de fichiers en
|
||
<tt>.html</tt>.</li>
|
||
<li><a href="solutions/systeme-sol.html#shell8"><img src="../../icones/solution.png" alt="Solution" /></a> Un ensemble de
|
||
noms de fichiers sont en majuscules. On veut tout basculer en minuscules.</li>
|
||
<li><a href="solutions/systeme-sol.html#shell9"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Créez un script <tt>indice</tt> qui affiche l'indice de son premier
|
||
argument dans la liste des arguments suivants. Par exemple,
|
||
<pre>
|
||
indice toto tata titi toto tutu
|
||
</pre>
|
||
|
||
<p>
|
||
renvoie l'indice de <tt>toto</tt> dans la liste <tt>tata titi toto
|
||
tutu</tt>, c'est-à-dire 3.</p></li>
|
||
<li><a href="solutions/systeme-sol.html#shell10"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
On ne s'intéresse ici qu'à des fichiers contenant un mot par ligne. Écrire
|
||
un script qui compte le nombre de mots contenant une des lettres «r», «s»
|
||
ou «t», et parmi eux, ceux qui ont au moins deux telles lettres. On
|
||
donnera aussi le nombre de mots ne contenant aucune voyelle. Cela donnera
|
||
par exemple :
|
||
|
||
<pre>
|
||
Dans ce fichier, vous avez :
|
||
45 mots contenant «r», «s» ou «t», et parmi eux,
|
||
12 contiennent deux de ces lettres au moins.
|
||
Il y a aussi 10 mots ne contenant aucune voyelle.
|
||
</pre>
|
||
</li>
|
||
<li><a href="solutions/systeme-sol.html#shell11"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
On veut chercher toutes les occurences des quatre éléments (terre, air, eau,
|
||
feu) dans la première partie de <em>Germinal</em>.
|
||
|
||
<p>
|
||
On veut aussi que le résultat soit placé dans un fichier, et que le résultat
|
||
soit classé : toutes les lignes qui contiennent «air», puis toutes celles qui
|
||
contiennent «eau», etc. </p></li>
|
||
<li><a href="solutions/systeme-sol.html#shell12"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Chercher le mot «mine» dans les chapitres 3, 4 et 5 de la première partie de
|
||
<em>Germinal</em>, et obtenir un fichier dans lequel figure le nombre
|
||
d'occurences du mot dans les fichiers, avec le numéro des lignes.</li>
|
||
<li><a href="solutions/systeme-sol.html#shell13"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Créez un script <tt>coupe</tt> qui prend trois arguments, le premier étant
|
||
un nom de fichier et les deux autres des entiers <em>l</em> et <em>l'</em>,
|
||
et qui affiche les lignes comprises entre <em>l</em> et <em>l'</em> dans le
|
||
fichier. Par exemple,
|
||
<pre>
|
||
coupe fic 4 8
|
||
</pre>
|
||
<p class="continue">
|
||
affichera les lignes 4 à 8 du fichier <tt>fic</tt>. Affichez des messages
|
||
en cas d'erreur (nombre de paramètres incorrect, fichier inexistant, etc).
|
||
</p></li>
|
||
<li><a href="solutions/systeme-sol.html#shell14"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Pour transformer une arborescence en un seul fichier compressé, on utilise
|
||
l'instruction <pre>tar zcvf nouveaunom fichiersaregrouper</pre>
|
||
|
||
|
||
<p>
|
||
Avant d'envoyer des fichiers <tt>tar</tt>, on utilise <tt>uuencode</tt>.
|
||
</p>
|
||
|
||
<p>
|
||
Écrivez une commande <tt>tarmail</tt> qui prend deux arguments, une
|
||
adresse et un nom de répertoire, et qui envoie par mail le contenu de
|
||
l'arborescence du répertoire précédée d'un message expliquant comment la
|
||
récupérer.</p>
|
||
|
||
|
||
<p>
|
||
Note : pour récupérer un fichier uuencodé, on tape <tt>uudecode</tt> et
|
||
pour reconstruire l'arborescence, on utilise <tt>tar zxvf fichier</tt>.
|
||
</p></li>
|
||
<li><a href="solutions/systeme-sol.html#shell15"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
La commande suivante affiche le path complet de tous les fichiers finissant
|
||
par <tt>~</tt> (tilde) dans la sous-arborescence du répertoire
|
||
courant.
|
||
|
||
<pre>
|
||
find . -name '*~'
|
||
</pre>
|
||
|
||
<p>
|
||
Écrivez un script qui prend en argument un nom de répertoire et qui
|
||
détruit tous les fichiers :</p>
|
||
|
||
<ol><li> Finissant par <tt>~</tt>;</li><li> Commençant et finissant par un dièse;</li><li> S'appelant <tt>core</tt>;</li><li> S'appelant <tt>a.out</tt>.</li></ol></li>
|
||
<li><a href="solutions/systeme-sol.html#shell16"><img src="../../icones/solution.png" alt="Solution" /></a>
|
||
Écrire un script permettant d'appliquer divers filtres sur un fichier. Ce
|
||
script est lancé avec un argument, qui doit être un nom de fichier appelé
|
||
fichier de travail; dans le cas contraire, on affiche un message d'erreur.
|
||
On attend ensuite une commande en mode interactif, qui peut être :
|
||
|
||
<ul><li><tt>end</tt> : le programme s'arrête;</li><li><tt>cherche</tt> : le programme lit alors une ligne au clavier
|
||
contenant un motif et une autre contenant un nom de fichier, puis écrit
|
||
dans ce fichier les lignes du fichier de travail contenant le motif;</li><li><tt>tete</tt> ou<tt>fin</tt> : le programme lit une ligne au clavier
|
||
contenant un entier <em>n</em> puis une ligne contenant un nom de fichier.
|
||
Il écrit ensuite les <em>n</em> premières (resp. dernières) lignes du
|
||
fichier de travail dans le fichier précisé;</li><li> autre chose : message d'erreur.</li></ul></li>
|
||
</ol>
|
||
<div class="metainformation">
|
||
Auteur : Anonyme, Joël Riou. Dernière modification : 2002-12-10 par Joël Riou.
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|