1 P SYSTEME D’EXPLOITATION II TP 1 : Rappels Dans ce TP, vous allez devoir réutiliser un peu tout ce que vous avez appris sur bash et sur Linux en général. Exercice 1 : Créer un script Bash qui fournit des statistiques sur l'utilisation des lettres dans une langue. Pour cela, vous allez devoir vous baser sur un fichier de dictionnaire dico.txt contenant tous les mots de la langue française : ABAISSA ABAISSABLE ABAISSABLES ABAISSAI ABAISSAIENT [...] Le fichier, tout en majuscules, contient un mot par ligne. 1- Extraire le nombre de mots utilisant (au moins une fois) chaque lettre de l'alphabet de A à Z. Le script que vous allez créer (langstat.sh) prendra en paramètre le nom du fichier dictionnaire à analyser. Le résultat affiché dans la console devrait ressembler à ceci, (trié en ordre alphabétique) : 229938 mots contenant la lettre : A 43471 mots contenant la lettre : B 98832 mots contenant la lettre : C 72481 mots contenant la lettre : D [...] 2- Ajouter une fonctionnalité supplémentaire dans votre script, permettant de trier le résultat affiché dans la console de la lettre la plus utilisée à la moins utilisée : 278814 mots contenant la lettre : E 229938 mots contenant la lettre : A 219131 mots contenant la lettre : I 210391 mots contenant la lettre : R [...] Cette fonctionnalité doit être activée par la présence d'un second paramètre. 3- Avec le minimum de code possible, modifier le scripte langstat.sh pour qu’il reste valable si le fichier dico.txt contient des lettres en minuscules et en majuscules. (le script doit rester sensible à la casse ; ne pas fusionner a et A : donner le nombre de mots contenant chacune des deux lettres à part). Université Abdelmalek Essaadi Faculté Polydisciplinaire à Larache Département Informatique Année universitaire 2020/2021 SMI – S4 Prof. M. Achkari Begdouri
2 4- Ajouter une autre fonctionnalité dans votre script, qui permet cette fois-ci de trouver le nombre d’occurrence de chaque lettre de l’alphabet dans l’ensemble des mots du fichier dico.txt. La lettre ‘E’ : apparait 483072 fois dans la langue française La lettre ‘S’ : apparait 336602 fois dans la langue française La lettre ‘A’ : apparait 320055 fois dans la langue française [...] Cette fonctionnalité doit être activée par la présence d'un autre paramètre. Exercice 2 : L’objectif de cet exercice est de créer une page web présentant une galerie d'images en fonction des fichiers présents dans un dossier. Nous allons réaliser alors un générateur de galerie d'images en bash. Le script s'appellera galerie.sh. Pour sa première version, il faudra le placer dans un dossier contenant des images ; il générera des miniatures à partir de ces dernières et un fichier HTML présentant toutes les images du dossier. Concrètement, le script devra donc : créer une miniature de chaque image du dossier ; générer un fichier HTML et y insérer ces miniatures ; faire un lien vers les images en taille originale. Rendu final : La page web que vous devez arriver à générer devrait ressembler à la figure suivante. Bien entendu, c'est un exemple minimal. Il est possible de faire quelque chose de beaucoup plus joli : commencez déjà par faire en sorte que cela fonctionne. Le code HTML de base
3 Pour vous aider, je vous propose de partir du code HTML (minimaliste) suivant :
Ma galerie
Vous pourrez réutiliser le début et la fin de ce code source pour le fichier HTML de galerie que vous créerez. Par contre, au milieu (les images
et les liens
), il faudra adapter automatiquement le code en fonction des images présentes dans le dossier. Vous afficherez des miniatures sur la page et ferez un lien vers leur version agrandie. Comment générer des miniatures d'images ? La commande convert permet d'effectuer de nombreuses opérations sur des images (vous pouvez afficher le manuel et de comprendre comment on l'utilise). Pour créer une miniature à l’aide de convert on utilise le paramètre - thumbnail (miniature en anglais). Les paramètres Le programme devra accepter un paramètre optionnel : le nom du fichier HTML à générer. S'il n'est pas présent, on générera un fichier galerie.html par défaut. Améliorations Pour améliorer davantage le script, on vous propose de mettre en place les fonctionnalités suivantes : Améliorer le design de la galerie avec un peu de CSS Permettre de choisir le dossier contenant les images dont on veut générer une galerie. Actuellement, il faut que galerie.sh soit dans le bon dossier pour que cela fonctionne ! Utiliser un paramètre pour définir la taille des miniatures à générer. Afficher le nom de l'image sous chaque image. Afficher d'autres informations, comme les dimensions de l'image originale, sous chaque miniature. Il faudra faire appel à l'outil convert pour obtenir ces informations. Afficher la date de dernière modification sous chaque image.
1 P SYSTEME D’EXPLOITATION II TP 2 : Les processus Exercice 1 : En bash, la commande trap permet d'inhiber ou activer la réaction associé un signal dans un terminal (c’est-à-dire l’effet de trap sera visible sur les processus lancés dans la même console dans laquelle on a exécuté trap). Certains signaux, comme le signal de terminaison SIGKILL (signal numéro 9) ne peuvent pas être inhibés. La commande trap -l affiche la liste des signaux avec leur nom (comme kill -l). La commande trap ' ' numéro de signal permet d'inhiber, si possible, la réaction associée au signal cité. Pour activer la réaction il suffit de taper la commande : trap numéro du signal. Soit le script bash suivant : #!/bin/bash i=0 while [ true ] do echo "Valeur: $((i++))" sleep 2 done 1- Éditer ce script dans un fichier nommée ex et exécuter le. Que fais ce script ? 2- Dans un shell bash, inhiber le signal 2 puis exécuter le programme ex. Essayer d'interrompre le programme par les touches CTRL+C. Quelle est la réponse du système ? Essayer les touches CTRL+Z. Quelle est la réponse du système ? 3- Activer la réaction associée au signal 2 et refaire la question 2. 4- Tester maintenant avec le signal 15 (Arrête le processus), et essayer de killer un processus à partir d’une autre console. Refaire les questions 2 et 3. 5- Dans un shell bash lancer le programme ex puis interrompre l'exécution en tapant CTRL+Z. Donner deux manières pour tuer le processus suspendu (celui correspondant au programme) en utilisant la commande kill. Université Abdelmalek Essaadi Faculté Polydisciplinaire à Larache Département Informatique Année universitaire 2020/2021 SMI – S4 Prof. M. Achkari Begdouri