tuteurs.ens.fr/www/unix/exercices/systeme.html

325 lines
15 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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>