Epreuve de S.Expl. & Mise en Œuvre UNIX

Informatique, Systèmes UNIX · exam

Voir tous les documents en systèmes d'exploitation et cloud

ECOLE NATIONALE DES SCIENCES

DE L'INFORMATIQUE

ANNEE UNIVERSITAIRE

2014/2015

EPREUVE DE : S.Expl. & Mise en Œuvre UNIX

CONTROLE : Devoir Surveillé

DUREE : 2 heures

DOCUMENTS : non autorisés

: 11 Mars 2015

: II1

DATE

CLASSE

NB. PAGES : 4

ENSEIGNANT : M.S. OUERGHI

NOM & PRENOM :

Groupe : II1G

Questions de cours (5 points = 5*1)

Encercler les bonnes réponses :

1. Quel est l’un des avantages d’utiliser une machine virtuelle ?

A. aller plus vite à l’exécution

B. simplifier la programmation

C. gagner de la place mémoire

D. rendre transparent le support d’exécution

2. Un _____ est _____.

A. processus : un programme

B. processus : une abstraction d’un programme en exécution

C. processus : un programme sur le disque

D. processus : une copie des valeurs des registres

E. aucune des combinaisons précédentes

3. Deux points (..) désigne :

A. le répertoire courant

B. le répertoire père du répertoire courant

C. la racine du système de fichiers

D. le répertoire fils du répertoire courant

4. Les droits d’un fichier Unix peuvent être codés sur une suite de :

A. 6 bits

B. 9 bits

C. 12 bits

D. 15 bits

5. Un système _______ permet à plusieurs utilisateurs _________.

A. à temps partagé : d’exécuter leurs programmes en même temps

B. à temps partagé : de partager la mémoire

C. à temps partagé : d’avoir l’illusion de programmes s'exécutant en même temps

D. de traitement par lots : de faire du temps partagé

E. aucune des combinaisons précédentes

Exercice 1

Vous venez d'ouvrir une session à l'aide du compte d'un utilisateur appelé linuxuser.

(5 points=0,5+0,5+1+ 6*0,5)

1. Dans quel répertoire de connexion vous serez automatiquement situé ? (donnez le chemin absolu) (0.5 pt)

..........................................................................................................................................................................

..........................................................................................................................................................................

2. Quelle commande vous permet d'avoir cette information ? (0.5 pt)

..........................................................................................................................................................................

..........................................................................................................................................................................

1

3. Donnez la séquence de commandes complètes (dans le bon ordre, avec tous les arguments et/ou options

nécessaires) pour créer l'arborescence suivante dans ce répertoire. Les feuilles de cet arbre sont des fichiers

ordinaires vides, le nom du répertoire « Mes Cours » contient un espace. (1 pt)

............................................................................................................................................................................

............................................................................................................................................................................

............................................................................................................................................................................

............................................................................................................................................................................

............................................................................................................................................................................

............................................................................................................................................................................

............................................................................................................................................................................

............................................................................................................................................................................

............................................................................................................................................................................

4. Donnez la commande permettant de créer un lien symbolique vers le fichier TD1 dans le répertoire de

votre connexion. (0.5 pt)

............................................................................................................................................................................

............................................................................................................................................................................

5. Donnez une commande permettant de copier le fichier noteschap1 dans le sous répertoire ExUnix

(respectez les chemins).( 0.5 pt)

............................................................................................................................................................................

...........................................................................................................................................................................

6. L'utilisateur veut connaitre les permissions des éléments de l’arborescence crée. Quelle commande doit-il

exécuter ? (0.5 pt)

............................................................................................................................................................................

............................................................................................................................................................................

7. Il remarque que tous les fichiers qu'il a crée portent les permissions rw-rw-r-- . Quelle commande permet

d'indiquer les permissions initiales par défaut que le système applique automatiquement à la création des

fichiers et des répertoires ? (0.5 pt)

............................................................................................................................................................................

Publicité

............................................................................................................................................................................

8. L'utilisateur veut sécuriser plus ses éléments futurs et veut ainsi que tous les fichiers qu'il créera porteront

les permissions rw-r-----. Donnez la commande complète qu'il faut exécuter avec ses arguments. (0.5 pt)

............................................................................................................................................................................

............................................................................................................................................................................

9. Donnez la commande permettant de donner toutes les permissions à tous les utilisateurs pour le fichier

TD1. (0.5 pt)

............................................................................................................................................................................

............................................................................................................................................................................

2

NOM & PRENOM :

Groupe : II1G

(2 points=2*1)

Exercice 2

1 - Expliquez, en donnant plusieurs exemples en shell, ce qu’est une redirection d’entrée/sortie

standard.

............................................................................................................................................................................

............................................................................................................................................................................

............................................................................................................................................................................

............................................................................................................................................................................

2 - Expliquez le rôle d’un tube (filtre) entre deux commandes. Donnez un exemple d’utilisation de

ce tube, puis son équivalent en n’utilisant que des redirections.

............................................................................................................................................................................

............................................................................................................................................................................

............................................................................................................................................................................

(3 points=2,5*05 + 0,5)

Exercice 3

Commentez les lignes du script shell qui suit qui renferment un "#" puis indiquez à la fin ce qu’il

est censé réaliser.

if

test $# -ne 1

#

then echo nombre de paramètres incorrect

#

#

#

#

elif

test $1 -lt 0

then echo argument non correct

elif

test $1 -eq 0 -o $1 -eq 1

then echo le résultat trouvé est = 1

else

res=1

for i in seq 2 1 $1

do

res=expr $i \* $res

done

echo le résultat trouvé est = $res

fi

ce script est censé calculer …………….

puisque ….

#

3

Exercice 4

(5 points = 10 *0,5)

Ecrire un script shell qui permet de traiter ses arguments d’appel qui sont supposés n’être que des

fichiers ordinaires.

Le script doit vérifier que :

  • le nombre d’arguments d’appel est au moins égal à 1.
  • chaque argument d’appel correspond au nom d’un fichier ayant les caractéristiques suivantes :
  • c’est un fichier ordinaire,
  • c’est un fichier de type ASCII Text,
  • c’est un fichier non vide,
  • c’est un fichier accessible en lecture.

Le script affichera pour chaque fichier ayant les caractéristiques précédentes : son nom, suivi du

nombre de ses lignes, et le contenu de ses 5 premières et 5 dernières lignes séparées par une ligne de

3 points de suspension.

En fin de traitement, le script affichera le nombre total de lignes trouvé pour l'ensemble des fichiers

ayant subis le traitement précédent.

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

Publicité

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

…...........................................................................................................................................................................

4

ECOLE NATIONALE DES SCIENCES

DE L'INFORMATIQUE

ANNEE UNIVERSITAIRE

2014/2015

EPREUVE DE : S.Expl. & Mise en Œuvre UNIX

CONTROLE : Devoir Surveillé

DUREE : 2 heures

DOCUMENTS : non autorisés

: 11 Mars 2015

: II1

DATE

CLASSE

NB. PAGES : 4

ENSEIGNANT : M.S. OUERGHI

Questions de cours (5 points = 5*1)

Encercler les bonnes réponses :

CORRIGE

1. Quel est l’un des avantages d’utiliser une machine virtuelle ?

A. aller plus vite à l’exécution

B. simplifier la programmation

C. gagner de la place mémoire

D. rendre transparent le support d’exécution

2. Un _____ est _____.

A. processus : un programme

B. processus : une abstraction d’un programme en exécution

C. processus : un programme sur le disque

D. processus : une copie des valeurs des registres

E. aucune des combinaisons précédentes

3. Deux points (..) désigne :

A. le répertoire courant

B. le répertoire père du répertoire courant

C. la racine du système de fichiers

D. le répertoire fils du répertoire courant

4. Les droits d’un fichier Unix peuvent être codés sur une suite de :

A. 6 bits

B. 9 bits

C. 12 bits

D. 15 bits

5. Un système _______ permet à plusieurs utilisateurs _________.

A. à temps partagé : d’exécuter leurs programmes en même temps

B. à temps partagé : de partager la mémoire

C. à temps partagé : d’avoir l’illusion de programmes s'exécutant en même temps

D. de traitement par lots : de faire du temps partagé

E. aucune des combinaisons précédentes

Exercice 1

Vous venez d'ouvrir une session à l'aide du compte d'un utilisateur appelé linuxuser.

(5 points=0,5+0,5+1+ 6*0,5)

1. Dans quel répertoire de connexion vous serez automatiquement situé ? (donnez le chemin absolu) (0.5 pt)

/home/linuxuser

2. Quelle commande vous permet d'avoir cette information ? (0.5 pt)

echo $HOME

(on peut également l’obtenir par pwd si on vient d’ouvrir la session de travail)

5

3. Donnez la séquence de commandes complètes (dans le bon ordre, avec tous les arguments et/ou options

nécessaires) pour créer l'arborescence suivante dans ce répertoire. Les feuilles de cet arbre sont des fichiers

ordinaires vides, le nom du répertoire « Mes Cours » contient un espace. (1 pt)

cd

mkdir "Mes Cours"

cd "Mes Cours"

mkdir CoursUnix

mkdir CourUML

touch CoursUnix/noteschap1

touch CoursUML/remarques

cd ~

mkdir Exercices

mkdir Exercices/ExUnix

cd Exercices/ExUnix

touch TD1

cd $HOME

4. Donnez la commande permettant de créer un lien symbolique vers le fichier TD1 dans le répertoire de

votre connexion. (0.5 pt)

ln –s /home/linuxuser/Exercices/ExUnix/TD1 /home/linuxuser/raccourciTD1

5. Donnez une commande permettant de copier le fichier noteschap1 dans le sous répertoire ExUnix

(respectez les chemins).( 0.5 pt)

Publicité

cp $HOME/"Mes Cours"/CoursUnix/noteschap1 $HOME/Exercices/ExUnix/noteschap1

6. L'utilisateur veut connaitre les permissions des éléments de l’arborescence crée. Quelle commande doit-il

exécuter ? (0.5 pt)

ls -lR /home/linuxuser

7. Il remarque que tous les fichiers qu'il a crée portent les permissions rw-rw-r-- . Quelle commande permet

d'indiquer les permissions initiales par défaut que le système applique automatiquement à la création des

fichiers et des répertoires ? (0.5 pt)

umask

8. L'utilisateur veut sécuriser plus ses éléments futurs et veut ainsi que tous les fichiers qu'il créera porteront

les permissions rw-r-----. Donnez la commande complète qu'il faut exécuter avec ses arguments. (0.5 pt)

Pour les fichiers ordinaires, les droits maximum sont 666, par conséquent la valeur de umask à

026 donne les permissions640= 666-026 ; ce qui correspond bel et bien à rw-r-----

9. Donnez la commande permettant de donner toutes les permissions à tous les utilisateurs pour le fichier

TD1. (0.5 pt)

chmod 777 /home/linuxuser/Exercices/ExUnix/TD1

6

(2 points=2*1)

Exercice 2

1 - Expliquez, en donnant plusieurs exemples en shell, ce qu’est une redirection d’entrée/sortie

standard.

Sous Unix/Linux, chaque processus possède 3 flux standards qu'il utilise pour communiquer en

général avec l'utilisateur :

l'entrée standard nommée stdin (identifiant 0) : il s'agit par défaut du clavier,

 a sortie standard nommée stdout (identifiant 1) : il s'agit par défaut de l'écran,

la sortie d'erreur standard nommée stderr (identifiant 2) : il s'agit par défaut de l'écran.

Ces flux peuvent être redirigés afin que le processus interagisse avec un autre au lieu d'interagir

avec l'utilisateur.

Rediriger la sortie standard

Quand on exécute une commande, le shell affiche le résultat sur la console de sortie. On

peut rediriger cette sortie vers un fichier en utilisant le signe > (ou 1>).

ls > resultat_ls

Ex1 :

Si le fichier existe déjà, il est écrasé.

Au lieu de créer un fichier, il est possible d'ajouter les sorties d'un processus à un fichier

existant en utilisant le double signe >>.

Ex2 :

ls >> resultat

Si le fichier résultat existe déjà, les affichages sont concaténés.

Rediriger la sortie d'erreur standard

La redirection du flux de sortie d'erreur standard utilise les même signes(> et >>), mais

précédés de l'identifiant du flux : 2.

Ex3 :

Rediriger l'entrée standard

ls 2> erreurs

Rediriger l'entrée standard permet d'entrer des données provenant d'un fichier au lieu

du clavier.

Ex4 :

cat < monfichier.txt

2 - Expliquez le rôle d’un tube (filtre) entre deux commandes. Donnez un exemple d’utilisation de

ce tube, puis son équivalent en n’utilisant que des redirections.

Un tube redirige la sortie d'une commande vers l'entrée d'une autre commande.

La commande suivante permet d’afficher la taille des fichiers et répertoires, et les trier du plus

grand au plus petit :

du | sort -rn

Un tube entre deux commandes est équivalent à utiliser un fichier temporaire (en réalité en

mémoire centrale) et une double redirection.

La commande précédente est équivalente à :

touch tempo ; du > tempo ; sort –rn <tempo ; rm tempo

7

(3 points=2,5*05 + 0,5)

Exercice 3

Commentez les lignes du script shell qui suit qui renferment un "#" puis indiquez à la fin ce qu’il

est censé réaliser.

test $# -ne 1

if

then echo nombre de paramètres incorrect

#si le nbre d’arguments est différent de 1

elif

test $1 -lt 0

#si le 1er paramètre est inférieur à 0

then echo argument non correct

elif

test $1 -eq 0 -o $1 -eq 1

then echo le résultat trouvé est = 1

else

res=1

for i in seq 2 1 $1

do

res=expr $i \* $res

done

echo le résultat trouvé est = $res

Publicité

fi

#si le 1er paramètre est égal à 0 ou à 1

#Pour i allant de 2 à valeur du 1er paramètre

#affecter à res le résultat de la multiplication

#de la valeur de i par celui de res

ce script est censé calculer la factorielle d’un entier donné en paramètre d’appel

#si ce paramètre est omis ou bien si valeur est négative, on affiche un message d’erreur

#si res correspond à notre factorielle on a :

res(0)=res(1)=1,

res(i)=i*res(i-1) pour i appartenant allant de 2 à valeur du 1er paramètre

Exercice 4

(5 points = 10 *0,5)

Ecrire un script shell qui permet de traiter ses arguments d’appel qui sont supposés n’être que des

fichiers ordinaires.

Le script doit vérifier que :

  • le nombre d’arguments d’appel est au moins égal à 1.
  • chaque argument d’appel correspond au nom d’un fichier ayant les caractéristiques suivantes :
  • c’est un fichier ordinaire,
  • c’est un fichier de type ASCII Text,
  • c’est un fichier non vide,
  • c’est un fichier accessible en lecture.

Le script affichera pour chaque fichier ayant les caractéristiques précédentes : son nom, suivi du

nombre de ses lignes, et le contenu de ses 5 premières et 5 dernières lignes séparées par une ligne de

3 points de suspension.

En fin de traitement, le script affichera le nombre total de lignes trouvé pour l'ensemble des fichiers

ayant subis le traitement précédent.

8

#Ce script teste le type de chaque fichier passé en paramètre et affiche une partie de celui-ci

#si les tests sont concordants (fichier régulier, non vide, de type ASCII text et lisible).

#En fin de traitement : un total du nombre de caractères contenu dans l'ensemble des fichiers

traités est affiché

clear

#on commence par tester le nombre de paramètres passé au script

if test $# -lt 1

then echo "usage : $0 arg..."

exit

fi

#on fait une boucle sur l'ensemble des paramètres

param=0

TotSize=0

for f in $*

do param=expr $param + 1

echo -e "\n\tTraitement du paramètre n°$param"

echo -e "\t----------------------------"

if ! test -e $f

then echo $f : fichier inexistant

continue

fi

#vérifions si le fichier existe ou pas

#faire les autres tests sur le fichier puisqu’il est existant

if test -f $f

then if test -s $f

#fichier régulier

#fichier non vide

then ascii=file $f | grep -c "ASCII text"

if test $ascii -eq 1

if test -r $f

then

then

#calculer et afficher la taille du fichier

#fichier de type ASCII text

#fichier accessible en lecture

Size=cat $f | wc -c

echo -e "nom du fichier: $f \ttaille: $Size"

#afficher le contenu partiel du fichier

echo "contenu partiel :"

head -5 $f

echo " ... "

tail -5 $f

#calculer le total des tailles des fichiers traités

TotSize=expr $TotSize + $Size

else echo fichier $f : non lisible

fi

else echo fichier $f : non ASCII text

fi

else echo fichier $f : vide

fi

else echo fichier $f : non ordinaire ou inexistant

fi

done

#traitement en fin de boucle

echo -e "\n\n"

echo "============================================"

echo "Taille totale des fichiers traités : $TotSize"

echo "============================================"

9