Premiers traitements sous Linux


Objectifs

A l'issue de ce TP vous montrerez que vous êtes capable :

Présentation

Ce troisième TP va vous permettre d'ppréhender la notion de multi-tâches en visualisant les processus (ou programmes) qui sont exécutées sur votre machine. Vous pourrez ensuite effectuer les premiers traitements sur le (ou les) résultat(s) de commande(s) de base sur l'arborescence, les fichiers et les processus. En outre, vous manipulerez les commandes pour imprimer ou sauvegarder les données fournies par le serveur web ou celles enregistrées sur votre compte personnel.

 Vous rédigerez un compte rendu dans lequel vous justifierez les options des commandes que vous avez utilisé pour réaliser les actions demandées et repérées par =>.

Outils

 Rappel : Les contenus des cours, des TD et des TP précédents sont nécessaires pour faire les TP. Vous devez impérativement les avoir avec vous et les connaitre pour chaque séance de TP (et avoir revu les TP précédents).

1 machine sous LINUX

Travail Demandé 

1. Notion de processus et de priorités

Le système Linux est un système multi-utilisateurs et multi-processus. Chaque utilisateur peut exécuter plusieurs programmes en même temps.
Le temps de calcul et l'ordonnancement entre les programmes seront affectés automatiquement par le système. Cependant, en tant qu'utilisateur, vous pouvez visualiser l'ensemble des processus (programmes + environnement) exécutés sur une machine. De plus, vous pouvez agir sur les processus dont vous êtes propriétaire en envoyant des signaux ou en précisant une priorité.

       => Testez et commentez les commandes : ps, top, kill, nice
       => Exécutez en tâche de fond emacs et mozilla, notez leur propriétés et supprimez le processus lié à emacs,

       => Exécutez le même traitement à l'aide de l'interface graphique : Menu/Outils Système/Moniteur Système,
       => Si cette commande est disponible sur votre système, lancez la commande gkrellm,

       => Supprimez le processus lié au navigateur mozilla (attention : tuez le bon processus, sinon ... à tout à l'heure !).
       => Lancez la calculatrice par la commande xcalc. Pour une raison inconnue, imaginons que cette application ne réponde plus. Plutôt que de redémarrer le système, vous pouvez "tuer" le processus lié à cette application graphique par la commande :
xkill
        appliquée à la fenêtre.

rem : pensez à sauver le travail en cours avant toute utilisation de cette commande !

2. Utilisation du périphérique d'impression

Tout travail d'impression est d'abord stocké dans une file d'attente avant d'être récupéré par le processus serveur d'impression nommé "lpd".
Pour partager les ressources imprimantes, l'ensemble des travaux sont centralisés au niveau du serveur iut-gtr2.
Pour ajouter un travail dans la file d'attente d'impression (donc, pour imprimer...), vous utiliserez les commandes suivantes : a2ps (pour les fichiers texte) ou lpr (pour les fichiers postscript uniquement) ou directement à partir de l'application pour les autres types de fichiers (ex. OpenOffice)

       => Utilisez l'aide pour préciser l'imprimante qui reçoit le travail d'impression,
       => Testez et commentez les commandes : a2ps, lpr,
       => Pour connaître l'état de votre impression (en cours, en attente) ou supprimer un travail en cours, vous utiliserez les commandes : lpq, lpstat, lprm.        => Testez et commentez ces commandes avec leurs options éventuelles.

rem : les fichiers temporaires nécessaires à l'impression sont stockés dans une file d'attente dans le répertoire /var/spool; seul le propriétaire lp a accès aux fichiers de cette file d'attente.


3. Les filtres simples

Les filtres vont vous permettre d'effectuer un traitement sur les données ou sur les fichiers, i.e. ajouter, trier, supprimer des lignes, des colonnes de données.

A l'aide des commandes head, tail et cut, vous effectuerez les traitements suivants :

       => Afficher les 5 premières lignes du fichier <N° de binôme>.txt de la disquette,
       => Afficher les 5 dernières lignes du fichier <N° de binôme>.txt,
       => Afficher seulement la 2 ème lignes du fichier <N° de binôme>.txt,
       => Afficher de la 2 à la 5 lignes incluses du fichier <N° de binôme>.txt,
       => Afficher les 20 premiers caractères de la premiere ligne du fichier <N° de binôme>.txt,
       => N'afficher que les noms contenus dans le fichier <N° de binôme>.txt.

A l'aide de la commandes sort et uniq, vous effectuerez les traitements suivants :

       => Trier la liste des processus par ordre croissant d'occupation CPU,
       => Afficher la liste des dix processus qui consomment le plus de CPU,
       => Afficher uniquement les numéros de processus (PID) classés par ordre décroissant,
       => Donner la liste des utilisateurs (sans doublons) qui ont un processus en cours.


4. Le traitement du texte

A l'aide des commandes comp, diff et patch, vous effectuerez les traitements suivants :

       => Mettez en valeur les différences et les points communs des fichiers <N° de binôme>lnx.txt et <N° de binôme>2.txt,
       => A partir d'un fichier java du TP1 langage faites modifier (améliorer ce source) par votre voisin ce fichier puis détectez les changements à l'aide des commandes comp et diff,
       => Patchez votre source avec les améliorations de votre voisin.


5. Tissons des liens...

Liens physiques :

       => Copiez le fichier <N° de binôme>.txt en <N° de binôme>3.txt,
       => Créez un lien physique depuis votre répertoire racine nommé lien_phys vers <N° de binôme>3.txt,
       => Constatez les changements sur le nombre de liens,
       => Que faut-il faire pour supprimer le fichier <N° de binôme>3.txt ? Faites-le !
       => Est-il possible d'accéder aux informations contenues dans le fichier et/ou le lien ?
       => Constatez les changements sur le nombre de liens ?
       => Refaire la manipulation en supprimant le lien lien_phys,
       => Est-il possible d'accéder aux informations contenues dans le fichier et/ou le lien ?

Liens symboliques :

       => Creez un répertoire binôme dans .../Systeme1
       => Creez un lien symbolique nommé lien_symb depuis ~ vers ce répertoire binôme puis :
            copiez des fichiers vers .../Systeme1/binôme,
            listez le contenu de ~/lien_symb,
            renomez binôme en binôme2 et essayez de lister ~/lien_symb,
            commentez.

       => Que faut-il définir pour échanger facilement des fichiers entre binôme ?

6. Gestion de l'espace disque

       => Recherchez sur votre compte les fichiers (ou répertoires) modifiés depuis ce jour
       => Recherchez les sous-répertoires de votre répertoire de login (avec et sans find) et uniquement les sous-répertoires (pas les sous-sous répertoires)
       => Affichez la taille des fichiers dont le groupe possède les droits de lecture (format d'affichage : nom taille)
       => Reprenez la question précédente et triez le résultat dans l'ordre ionverse selon la taille
       => Testez et commentez les commandes df, quota et du,
       => Vous vérifierez, à l'aide d'une commande, sur chacun des volumes montés, que l'espace disponible plus l'espace utilisé est égal à l'espace total.


7. Archivage et sauvegarde

       => Testez et commentez les commandes tar, xargs et gzip,
       => A partir de votre répertoire de login, archivez (en ligne de commande) tous les fichiers sources java de votre compte dans un fichier sourcesjava.tgz,
       => Modifiez un de vos fichiers sources puis mettez à jour votre archive,
       => Transmettez ce fichier archive sur le compte de votre binôme, qui en visualisera le contenu puis le décompressera dans un répertoire temporaire de son compte.



    [ Noubliez pas d'envoyer votre compte-rendu et de le compléter pour la séance suivante ]