Unix et Programmation Shell

Transcription

Unix et Programmation Shell
Unix et Programmation Shell
 janvier 
Vous répondrez aux questions en utilisant deux lignes en moyenne.
Q 1. Pour les 3 premières sections du manuel : 1 Q 10.
Le binaire run.exe ouvre le fichier
Commandes utilisateur, 2 Appels système, 3 Fonc- run.log en écriture. A priori, qui de drm, ken ou
tions de bibliothèque C, citer un exemple de page. pil peut exécuter run.exe sans problème ?
−r−−rw−r−−
−−−x−−s−−x
drwx−−−−−−
drwx−−−−−−
drwx−−−−−−
man (1), getpid (2), putchar (3).
Q 2. Quel hacker est à l’origine du projet GNU ?
Richard Stallman.
Q 3. Préciser la terminologie : LINUX.
1
1
1
1
1
ken
pil
drm
ken
pil
go
go
go
yy
xx
run . l o g
run . exe
/home/drm
/home/ ken
/home/ p i l
Aucun problème d’exécution pour personne
mais ken aura des problèmes avec les droits
d’écriture. Le bit suid sur le groupe permet à pil
Un des standards pour unix : portable opera- et drm d’ouvrir le run.log.
Q 11. Proposer une commande plus courte pour
ting system interface (unix).
réaliser le même travail que :
Q 5. Que signifie : CLI ?
Nom d’un noyau unix dû à Linus Torwald.
Q 4. Préciser la terminologie : POSIX.
$ f i n d . −name ’ ∗ ’ −e x e c
Command Line Interface.
Q 6. Citer un shell populaire.
echo {} \ ;
$ find
sh, bash.
Q 12. Commenter la commande
Q 7. Décrire deux mécanismes fondamentaux du
$ f i n d / −maxdepth 1 −perm +1000
système UNIX.
− p r i n t f ”%p−%m−%M\n”
Parmi les fondamentaux présents au niveau du /tmp−1777−drwxrwxrwt
shell : la redirection de fichier et les tubes de communications.
Recherche à la racine sans descente récursive
Q 8. Que permet de faire la fonction C system ? des fichiers possédant un bit spécial. Typiquement
le fichier /tmp avec son bit collant.
Elle permet de lancer une commande au shell Q 13. Préciser au moins trois variables d’envipar défaut, ce n’est donc pas un appel système !
ronnement initialisées par login.
Q 9. Commenter.
SHELL, PATH, HOME.
$ c a t var . sh
Q 14. Que fait la commande :
c p t=0
$ f i n d −name ’ ∗ . html ’ −e x e c \
( w h i l e [ $ c p t − l t 3 ] ; do
s e d − i ’ s /USTV/UTLN/g ’ ’ { } ’ \ ;
echo −n $ c p t
l e t c p t++
done )
Pour chaque fichier .html de l’arborescence
echo $ c p t
courante, toutes les occurences de USTV sont rem$ . / var . sh
placées par UTLN.
0120
Q 15. Expliquer
$ l s $ ( f i n d . −name ’ l s ’ )
./ ls
La boucle est lancée dans un sous-shell.
1
Nous sommes probablement dans le répertoire $ g r e p −vE ’ ˆ $ ’ s r c > d s t
/bin.
Q 16. Expliquer
copie les lignes non vides de src dans dst.
$ unalias x
Q 22. Que fait la commande
$ x
$ g r e p −r l E ’ ( [ 0 − 9 ] + \ . ) { 3 } [ 0 − 9 ] + ’ \
bash : x : commande i n t r o u v a b l e
−−i n c l u d e=r ∗ . ∗ f /tmp 2>/dev / n u l l
$ source x
$ x
hello
recherche dans l’arborescence tmp les fichiers
dont le nom concorde avec le motif r*.*f conteLe fichier x du répertoire courant contient la
nant une adresse IPv4
ligne :
Q 23. Expliquer
a l i a s x=’ echo h e l l o ’
$ x=$$ ; w h i l e [ $x != 0 ] ; do ; \
Q 17.
Ecrire un script tri.sh pour trier les
ps −−no−h e a d e r s −p$x −opid , cmd ; \
arguments de la ligne de commande en mode
x=$ ( ps −−no−h e a d e r s −p$x −oppid ) ; \
numérique.
done
#!/ b i n / bash
echo $∗ | t r ’ ’ ’ \ n ’ | s o r t −n
Q 18.
2679
2678
2571
2049
1
Proposer une explication
$ f i n d −name x∗
./ x . log
$ touch xxx
$ f i n d −name x∗ 2>/dev / n u l l ;
$ echo $ ?
1
/ b i n / bash
vim upsh−x−ct −13−1. t e x
bash
gnome−t e r m i n a l
/ sbin / i n i t
La commande ps est utilisée pour déterminer
de proche en proche l’ascendance du processus
courant.
Q 24. Expliquer
Le développement de x* provoque une erreur
$ m k f i f o /tmp/ f i f o
du find.
$ t r 123 456 < /tmp/ f i f o &
Q 19. Quel est le résultat de
$ echo 1 2 3 4 5 6 > /tmp/ f i f o
$ echo { 1 . . 3 } \
4 5 6 4 5 6
| awk −F2 ’ { p r i n t $2$1 } ’
31
Q 20.
Le filtre de remplacement de caractères tr est
appliqué à la sortie du tube /tmp/fifo. Le tout
est équivalent à
Que fait la commande
$ s e d −i r E ’ s / [ ]+$ / / ’ f i c h i e r
$ echo 1 2 3 4 5 6
supprime les espaces en fin de ligne de fichier. 4 5 6 4 5 6
Q 21. Que fait la commande
Q 25.
| t r 123 456
Le script ci-dessous a été utilisé pour obtenir les traces de la figure ( 1).
#!/ b i n / bash
s t r a c e − f f −e t r a c e=open , read , w r i t e , dup2 , c l o n e , e x e c v e \
bash −c ” $ ∗” |& s e d ’ s / bash . ∗ / bash . . . / ’ \
| g r e p −vE ’ ( s h a r e | l i b | s t a c k | ˆ Proc | ELF) ’ | c u t −c1 −72 > t r a c e s . t x t
– Combien de processus ont été lancés ?
– Quelle commande a été tracée ?
2 par la commande tracée :
$ c a t < /tmp/ s r c | wc − l > /tmp/ d s t
2
1 e x e c v e ( ” / b i n / bash . . .
2 open ( ” / e t c / l d . s o . c a c h e ” , O RDONLY)
= 3
3 open ( ” / dev / t t y ” , O RDWR|O NONBLOCK| O LARGEFILE) = 3
4 open ( ” / p r o c / meminfo ” , O RDONLY)
= 3
5 r e a d ( 3 , ”MemTotal :
1025748 kB\nMemF ” . . . , 1 0 2 4 ) = 1024
6 c l o n e ( P r o c e s s 3605 a t t a c h e d
7 [ p i d 3 6 0 4 ] c l o n e ( P r o c e s s 3606 a t t a c h e d
8 [ p i d 3 6 0 6 ] dup2 ( 3 , 0 )
= 0
9 [ p i d 3 6 0 6 ] open ( ” / tmp/ d s t ” , O WRONLY|O CREAT|O TRUNC| O LARGEFILE, 0 6 6 6 )
10 [ p i d 3 6 0 6 ] dup2 ( 3 , 1 )
= 1
11 [ p i d 3 6 0 6 ] e x e c v e ( ” / u s r / b i n /wc ” , [ ” wc ” , ”− l ” ] , [ / ∗ 42 v a r s ∗ / ] ) = 0
12 [ p i d 3 6 0 5 ] dup2 ( 4 , 1 )
= 1
13 [ p i d 3 6 0 6 ] open ( ” / e t c / l d . s o . c a c h e ” , O RDONLY) = 3
14 [ p i d 3 6 0 5 ] e x e c v e ( ” / b i n / c a t ” , [ ” c a t ” , ”/tmp/ s r c ” ] , [ / ∗ 42 v a r s ∗ / ] ) = 0
15 [ p i d 3 6 0 5 ] open ( ” / e t c / l d . s o . c a c h e ” , O RDONLY) = 3
16 [ p i d 3 6 0 6 ] < . . . open resumed> )
= 3
17 [ p i d 3 6 0 6 ] r e a d ( 3 , ”# L o c a l e name a l i a s data b a s e . \ n # ” . . . , 4 0 9 6 ) = 2512
18 [ p i d 3 6 0 6 ] r e a d ( 3 , ” ” , 4 0 9 6 )
= 0
19 [ p i d 3 6 0 5 ] open ( ” / tmp/ s r c ” , O RDONLY| O LARGEFILE) = 3
20 [ p i d 3 6 0 5 ] r e a d ( 3 , <u n f i n i s h e d . . . >
21 [ p i d 3 6 0 6 ] < . . . open resumed> )
= 3
22 [ p i d 3 6 0 5 ] < . . . r e a d resumed> ” h e l l o world \n ” , 3 2 7 6 8 ) = 12
23 [ p i d 3 6 0 5 ] w r i t e ( 1 , ” h e l l o world \n ” , 1 2 ) = 12
24 [ p i d 3 6 0 5 ] r e a d ( 3 , ” ” , 3 2 7 6 8 )
= 0
25 [ p i d 3 6 0 6 ] r e a d ( 0 , ” h e l l o world \n ” , 1 6 3 8 4 ) = 12
26 [ p i d 3 6 0 6 ] r e a d ( 0 , ” ” , 1 6 3 8 4 )
= 0
27 [ p i d 3 6 0 6 ] w r i t e ( 1 , ”1\n ” , 2 )
= 2
28 −−− { s i s i g n o=SIGCHLD, s i c o d e=CLD EXITED, s i p i d =3605 , s i s t a t u s =0, s i
Fig. 1 – traces d’une commande.
3