tuteurs.ens.fr/unix/exercices/systeme.tml

384 lines
10 KiB
Text
Raw Normal View History

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
"tuteurs://DTD/tml.dtd">
<html>
<head>
<title>Syst<73>me</title>
</head>
<body>
<h1>Exercices sur le syst<73>me</h1>
<h2><a name="droits">Les droits </a> </h2>
<ol>
<li> <a href="solutions/systeme-sol.html#droits1">&icone.solution;
</a>
Changez les droits d'un fichier <tt>fic1</tt> pour que tous ceux de votre
groupe puissent <20>crire dedans.</li>
<li> <a href="solutions/systeme-sol.html#droits2">&icone.solution;
</a>
Donnez en une seule ligne le droit d'ex<65>cution <20> 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">&icone.solution;
</a>
Le fichier <tt>toto</tt> a les droits suivants<74>: <tt>-rwxr--r--</tt>.
Modifiez-en les droits en une ligne de commande de sorte que le
propri<EFBFBD>taire n'ait plus que le droit de lecture.</li>
<li> <a href="solutions/systeme-sol.html#droits4">&icone.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<EFBFBD>taire.</li>
<li> <a href="solutions/systeme-sol.html#droits5">&icone.solution;
</a>
Quelle option permet de modifier r<>cursivement les droits d'un r<>pertoire
et des fichiers qu'il contient<6E>?</li>
<li> <a href="solutions/systeme-sol.html#droits6">&icone.solution;
</a>
Quelle option de <tt>mkdir</tt> permet de cr<63>er un r<>pertoire en sp<73>cifiant
les droits sur ce r<>pertoire<72>?</li>
<li> <a href="solutions/systeme-sol.html#droits7">&icone.solution;
</a>
Affichez et interpr<70>tez les droits de <tt>/usr/sbin/mount</tt>. </li>
</ol>
<h2><a name="liens"> Les liens</a> </h2>
<!-- #################################<23>!-->
<ol>
<li> <a href="solutions/systeme-sol.html#liens1">&icone.solution;
</a>
Vous avez chez vous un r<>pertoire <tt>tmp/</tt> qui contient un fichier
<tt>bidon</tt>. Cr<43>ez un lien physique sur <tt>tmp/bidon</tt> appel<65>
<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><3E>?</li>
<li> <a href="solutions/systeme-sol.html#liens2">&icone.solution;
</a>
M<EFBFBD>me question avec un lien symbolique.</li>
<li> <a href="solutions/systeme-sol.html#liens3">&icone.solution;
</a>
Quelles sont les diff<66>rences entre les liens durs et les liens
symboliques<EFBFBD>?</li>
<li> <a href="solutions/systeme-sol.html#liens4">&icone.solution;
</a>
Dans quel cas ne peut-on pas faire de lien physique<75>? Que faut-il
faire<EFBFBD>?</li>
<li> <a href="solutions/systeme-sol.html#liens5">&icone.solution;
</a>
Quel est l'effet de <tt>chmod</tt> sur un lien<65>?</li>
</ol>
<h2><a name="processus"> Les processus </a></h2>
<!-- #########################################<23>!-->
<ol>
<li> <a href="solutions/systeme-sol.html#processus1">&icone.solution;
</a>
Affichez la liste des processus associ<63>s <20> votre terminal. Affichez la
liste des processus dont vous <20>tes propri<72>taire. Recommencez en utilisant
les options <tt>-l</tt> et <tt>-f</tt>. <20> quoi correspondent les colonnes
<tt>PID</tt> et <tt>PPID</tt><3E>?</li>
<li> <a href="solutions/systeme-sol.html#processus2">&icone.solution;
</a>
Lancez une commande longue en arri<72>re plan. Quel est le comportement du
processus associ<63> lorsqu'il re<72>oit les signaux suivants<74>:
<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">&icone.solution;
</a>
Utilisez la commande <tt>nice</tt> pour lancer des commandes ayant une
faible priorit<69>.</li>
<li> <a href="solutions/systeme-sol.html#processus4">&icone.solution;
</a>
Interpr<EFBFBD>tez la hi<68>rarchie des processus qui vous appartiennent. </li>
<li> <a href="solutions/systeme-sol.html#processus5">&icone.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<6F>?</li>
<li> <a href="solutions/systeme-sol.html#processus6">&icone.solution;
</a>
Donner deux commandes pour reprendre l'ex<65>cution d'une instruction
interrompue par un <tt>^Z</tt>.</li>
</ol>
<h2><a name="shell">Programmation du shell</a></h2>
<!-- ###############################################<23>!-->
<ol>
<li> <a href="solutions/systeme-sol.html#shell2">&icone.solution;
</a>
Faites deux scripts qui vous disent bonjour en affichant votre login
(<28>Bonjour, toto<74>)<29>:
<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">&icone.solution;
</a>
Faire un script qui affiche la phrase<73>: <tt>Le script [params] a [n]
param<EFBFBD>tre(s), que voici<63>: [param<61>tres]</tt>, en rempla<6C>ant les mots entre
crochets par leur valeur; par exemple<6C>:
<pre>
<span class="prompt">chaland ~ $</span><3E>params bla ble bli blo blu
La commande params a 5 param<61>tre(s), que voici<63>: bla ble bli blo blu
</pre></li>
<li> <a href="solutions/systeme-sol.html#shell5">&icone.solution;
</a>
Cr<EFBFBD>ez une commande qui, lorsqu'elle est appel<65>e, renvoie le nombre
d'arguments qui lui ont <20>t<EFBFBD> fournis, ainsi que le premier de ces
arguments.</li>
<li> <a href="solutions/systeme-sol.html#shell6">&icone.solution;
</a>
Vous voulez <20>crire un script qui vous dit combien de personnes sont logu<67>es
sur une machine donn<6E>e; par exemple<6C>:
<pre>
<span class="prompt">drakkar ~ $</span><3E>combien galion
Il y a 5 personne(s) logu<67>es sur galion en ce moment.
<span class="prompt">drakkar ~ $</span>
</pre></li>
<li> <a href="solutions/systeme-sol.html#shell7">&icone.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">&icone.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">&icone.solution;
</a>
Cr<EFBFBD>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-<2D>-dire 3.</p></li>
<li> <a href="solutions/systeme-sol.html#shell10">&icone.solution;
</a>
On ne s'int<6E>resse ici qu'<27> des fichiers contenant un mot par ligne. <20>crire
un script qui compte le nombre de mots contenant une des lettres <20>r<EFBFBD>, <20>s<EFBFBD>
ou <20>t<EFBFBD>, 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<6C>:
<pre>
Dans ce fichier, vous avez<65>:
45 mots contenant <20>r<EFBFBD>, <20>s<EFBFBD> ou <20>t<EFBFBD>, 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">&icone.solution;
</a>
On veut chercher toutes les occurences des quatre <20>l<EFBFBD>ments (terre, air, eau,
feu) dans la premi<6D>re partie de <em>Germinal</em>.
<p>
On veut aussi que le r<>sultat soit plac<61> dans un fichier, et que le r<>sultat
soit class<73><73>: toutes les lignes qui contiennent <20>air<69>, puis toutes celles qui
contiennent <20>eau<61>, etc. </p></li>
<li> <a href="solutions/systeme-sol.html#shell12">&icone.solution;
</a>
Chercher le mot <20>mine<6E> dans les chapitres 3, 4 et 5 de la premi<6D>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<75>ro des lignes.</li>
<li> <a href="solutions/systeme-sol.html#shell13">&icone.solution;
</a>
Cr<EFBFBD>ez un script <tt>coupe</tt> qui prend trois arguments, le premier <20>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 <20> 8 du fichier <tt>fic</tt>. Affichez des messages
en cas d'erreur (nombre de param<61>tres incorrect, fichier inexistant, etc).
</p></li>
<li> <a href="solutions/systeme-sol.html#shell14">&icone.solution;
</a>
Pour transformer une arborescence en un seul fichier compress<73>, 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>
<EFBFBD>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<70>c<EFBFBD>d<EFBFBD>e d'un message expliquant comment la
r<EFBFBD>cup<EFBFBD>rer.</p>
<p>
Note<EFBFBD>: pour r<>cup<75>rer un fichier uuencod<6F>, 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">&icone.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 \( '*~' -0 'core' \) -print
</pre>
<p>
<EFBFBD>crivez un script qui prend en argument un nom de r<>pertoire et qui
d<EFBFBD>truit tous les fichiers<72>:</p>
<ol>
<li> Finissant par <tt>~</tt>;</li>
<li> Commen<65>ant et finissant par un di<64>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">&icone.solution;
</a>
<EFBFBD>crire un script permettant d'appliquer divers filtres sur un fichier. Ce
script est lanc<6E> avec un argument, qui doit <20>tre un nom de fichier appel<65>
fichier de travail; dans le cas contraire, on afficher un message d'erreur.
On attend ensuite une commande en mode interactif, qui peut <20>tre<72>:
<ul>
<li> <tt>end</tt><3E>: le programme s'arr<72>te;</li>
<li> <tt>cherche</tt><3E>: le programme lit alors une ligne au clavier
contenant un motif et une autre contenant un nom de fichier, puis <20>crit
dans ce fichier les lignes du fichier de travail contenant le motif;</li>
<li> <tt>tete</tt> ou<tt>fin</tt><3E>: le programme lit une ligne au clavier
contenant un entier <em>n</em> puis une ligne contenant un nom de fichier.
Il <20>crit ensuite les <em>n</em> premi<6D>res (resp. derni<6E>res) lignes du
fichier de travail dans le fichier pr<70>cis<69>;</li>
<li> autre chose<73>: message d'erreur.</li>
</ul></li>
</ol>
<div class="metainformation">
Auteur<75>: Anonyme, Jo<4A>l Riou. Derni<6E>re modification le 2002-12-08.
</div>
</body>
</html>