Aller au contenu

Administration Unix - TP séance 03

À la fin de la séance, déposez votre fichier de réponses sur la page Ametice en suivant bien les instructions, même si vous n'avez pas fini la planche ; lorsque vous aurez terminé, vous pourrez re-déposer la version finale.

Exercice 1 : la commande ps, manipulation des processus

a) Quelles options de la commande ps permettent de voir tous les processus en cours dans le système, et de connaître le nom de leur propriétaire ?

b) Citez une combinaison d'options de la commande ps qui permet d'afficher la filiation des processus.

c) Repérez 1 processus dont vous n'êtes pas propriétaire. Essayez de le tuer avec la commande kill. Que se passe t'il ?

d) Ouvrez deux terminaux, puis lancez une commande top dans le premier. Observez dans le second la filiation des 2 shells, en vous servant de b), puis notez les PID et PPIDs des 2 shells et de top. (Remarque : la variable BASHPID donne le PID du shell courant)

e) Même expérience avec la commande top dans le premier shell. Dans le second, tuez le premier shell ; que devient le processus top ?

f) Essayez avec un processus en arrière plan (lancé avec &), par exemple xclock & ; disparaît-il quand on tue le shell père ? (Note : si vous utilisez WSL, voir d'abord Annexe A).

Exercice 2 : Explorations du shell

a) Dans la séquence suivante, pourquoi les résultats de la commande sont ils différents ?

$ cd /tmp
/tmp$ mkdir testls 
/tmp$ cd testls/
/tmp/testls$ echo a*
a*
/tmp/testls$ touch ab 
/tmp/testls$ echo a*
ab
/tmp/testls$ touch acdc
/tmp/testls$ echo a* 
ab acdc

Que peut-on faire pour éviter ce comportement ?

b) Comptez, à partir de l'historique de votre session, le nombre de fois ou vous avez utilisé la commande ls.

c) Dans la séquence suivante, quelle est l'action réalisée (surtout à la fin) ?

$ cd /tmp 
/tmp$ mkdir testtar
/tmp$ cd testtar/
/tmp/testtar$ echo Contenu > file1
/tmp/testtar$ ln file1 copie
/tmp/testtar$ ln file1 2emecopie

/tmp/testtar$ ls -lai
total 544
733647 drwxrwxr-x  2 thiel thiel   4096 oct.   7 14:13 ./
656643 drwxrwxrwt 38 root  root  536576 oct.   7 14:20 ../
677365 -rw-rw-r--  3 thiel thiel      8 oct.   7 14:13 2emecopie
677365 -rw-rw-r--  3 thiel thiel      8 oct.   7 14:13 copie
677365 -rw-rw-r--  3 thiel thiel      8 oct.   7 14:13 file1

/tmp/testtar$ (cd /tmp ; tar cf - testtar) | 
              (mkdir /tmp/copietar ; cd /tmp/copietar ; tar xf -)

Note : le pipeline de la dernière commande est sur 2 lignes. Un bloc de commandes encadré par des ( ) est exécuté dans un sous-shell ; l'intérêt est que chaque sous-shell a son propre répertoire courant.

Montrez que le contenu du répertoire destination est identique à la source.

d) Quelle différence y a-t-il avec l'utilisation de la commande cp ? Testez, et observez les liens. Existe-t-il une option de cp pour obtenir le même comportement que ce pipeline avec tar ?

Exercice 3 : Les commandes de manipulation des processus en arrière-plan.

a) Que fait la commande sleep 20 ?

b) Que se passe t'il si on tape la commande suivante ?

$ sleep 20 ; echo test1 ; sleep 20 ; echo test2 ; sleep 20 ; echo test3

c) Quelle différence, lors de l'exécution, avec la commande :

$ sleep 20 & echo test1 ; sleep 20 & echo test2 ; sleep 20 & echo test3

d) Comment pouvez vous trouver de la documentation pour les commandes bg et fg ? Indice : ce sont des commandes internes (builtin) du shell. Que devez vous faire pour ramener au premier plan le deuxième processus sleep de la commande du c) ? Indice : pensez aux numéros de jobs.

e) Tapez la commande sleep 5m, puis, alors que le shell attend que la commande se termine, tapez Ctrl+Z. Dans quel état se trouve la commande sleep ? Quelle différence y a-t-il alors entre les commandes fg et bg ?

Annexe A : installer un serveur X11 sur WSL

Si vous utilisez WSL sur Windows, il faut installer un "serveur X11" pour que les commandes telles que xclock puissent faire un affichage graphique : allez sur https://sourceforge.net/projects/vcxsrv/

Après installation, dans le menu Windows, lancez VcXsrv / XLaunch puis acceptez toutes les valeurs par défaut.

Pour tester, tapez dans le terminal Ubuntu :

$ sudo apt install x11-apps
$ xclock