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