Exercices complémentaires systèmes Unix

Ivan KURZWEG

Fremens Inst.
La Possession, Ile de la Réunion


1. Petits rappels
2. Processus
2.1. Priorité
3. Exécution différée et planifiée
3.1. Vidage de la corbeille
3.2. Connexions en "temps réel"

Les exercices doivent être réalisés dans un sous répertoire : ~/exoscomp/. Gardez trace des commandes dans un fichier texte.

1. Petits rappels

Toute une série de petits exercices, histoire d'en remettre une couche !! Tous les scripts doivent être réalisés dans le répertoire ~/exoscomp/scripts/

  1. Ecrivez un script renomme.sh pour renommer un fichier (avec vérification de l'existence de l'ancien et du nouveau fichier)

  2. Ecrivez un script 'lsd.sh' qui vous permet de lister uniquement les répertoires contenus dans un répertoire.

  3. Ecrivez un script disques.sh qui vous permet de connaître l'espace disque que vous utilisez (basez-vous sur la commande du) ainsi que l'espace total disponible sur la partition occupée (basez-vous sur la commande df).

  4. La notion de "poubelle" n'existe pas sous Unix. Ecrivez un script shell delete.sh vous permettant d'envoyer les fichiers "supprimés" vers le répertoire de votre choix. Ecrivez également un script empty_trash.sh vidant la corbeille.

  5. Faites en sorte que vos scripts soient maintenant disponibles directement sous le shell, sans indiquer leur chemin complet. Comment faire pour que la commande rm envoient les fichiers vers votre "poubelle" ?

Question subsidiare :

Quelle est la différence entre cat ref et cat < ref ?

2. Processus

2.1. Priorité

  1. Ecrivez un script shell infini.sh qui affiche des nombres de 1 à l'infini.

  2. Lancez infinite. Stoppez le à l’aide de Ctrl-Z. Contrôlez son état avec jobs. Repassez infinite en avant-plan avec la commande fg. Le programme affiche-t-il les nombres depuis 1 ? Pourquoi ? Tuez infinite avec Ctrl-C.

  3. Lancez votre merveilleux programme infinite en silencieux et en arrière plan (rediriger sa sortie vers /dev/null). Contrôlez que infinite tourne effectivement avec top. Quel est son ‘nice level’ ?

  4. Nous avons vu que la commande yes permet d'afficher en boucle un texte. Lancez un yes en silencieux et en arrière-plan avec un ‘nice level’ de +10 (commande nice). Relancez top. Quel est le niveau de priorité du yes par rapport à infinite ?

  5. Lancez un autre yes en silencieux et en arrière-plan avec un ‘nice level’ de +19. Contrôlez avec top : quels sont les niveaux de priorité des 3 processus ?

  6. Modifiez le ‘nice level’ de infinite à +10 (commande renice). Faites un top. Observez bien les 2 processus de même ‘nice level’ (à +10). L’un est-il plus prioritaire que l’autre ?

  7. Modifiez le ‘nice level’ de infinite à +10 (commande renice). Faites un top. Observez bien les 2 processus de même ‘nice level’ (à +10). L’un est-il plus prioritaire que l’autre ?

3. Exécution différée et planifiée

3.1. Vidage de la corbeille

Indiquez comment exécuter le script empty_trash.sh vu au premier exercice

  • Ce Vendredi à 17h00

  • La semaine prochaine au même moment

  • Deux jours plus tard

Indiquez maintenant comment faire pour vider cette corbeille tous les vendredi soirs à 16h15.

3.2. Connexions en "temps réel"

Vous souhaitez visualiser régulièrement les sessions ouvertes sur votre poste :

  1. Créer un script con_spy.sh qui permet d'afficher les sessions ouvertes.

  2. Faites en sorte que ce script s'excéute toutes les minutes.

  3. Modifier le script de manière à ce qu'il ajoute ses résultats dans un fichier. Quelle est la commande qui permet de visualiser les modifications de ce script en direct ? Vérifiez.

  4. Un port, root-tail, permet de visualiser le contenu d'un fichier en l'affichant directement sur le fond d'écran. Installez le et configurez le pour qu'il affiche également le résultat de votre script.