You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5.0 KiB

TP 4 2/2 - Processus

Ce TP donnera lieu à la remise d'un compte-rendu écrit exclusivement avec l'éditeur VI (On pratique!).

Enchainement conditionné de processus

Le but est d'utiliser l'enchainement conditionné de processus vu en cours pour indiquer si une chaine de caractère est présente dans un fichier. L'enchainement de commande devra afficher « good » si la chaine est présente « bad » sinon. En outre, l'enchainement devra renvoyer le code retour 0 si la chaîne est trouvée, 1 sinon.

  • La commande grep retourne 0 si la chaine est trouvée dans le fichier, 1 sinon ; réalisez une exécution conditionnée qui affiche « good » dans le cas où la chaîne est trouvée dans le fichier (sans afficher la ligne contenant la chaîne à l'écran pour cela, pensez aux redirections ou à l'option du grep qui va bien).

  • Complétez maintenant avec une nouvelle expression conditionnée qui affichera « bad » dans le cas où la chaîne ne serait pas présente dans le fichier.

  • Complétez enfin la commande précédente en ajoutant les codes retours comme demandés ... attention : la commande exit termine le shell courant ... il faut donc créer un sous-shell sans quoi boom.

  • Vérifiez vos codes retour en affichant la valeur retournée dans chaque cas. Votre compte rendu doit contenir les commandes passées et valeurs affichées.

Utilisation des commandes ps, pstree, top

Top

La commande top permet de consulter l'état des principaux paramètres de système.

  • De combien de mémoire dispose votre PC ?
  • Combien de cette mémoire est libre ?
  • Combien de mémoire est occupée par des données de cache ?
  • Depuis combien de temps votre machine est-elle démarrée ?
  • Répondre à ces mêmes questions en vous connectant sur le serveur londres par ssh (note : helens pour les RT).

ps

La commande « ps » permet de consulter les informations relatives aux processus

  • Affichez l'arbre des processus à l'aide de pstree puis de ps en utilisant les options « axjf »
  • Recherchez le processus correspondant à votre shell courant (pour cela, recherchez le père du processus « ps » lui-même. Quel est son PID ? Vérifiez en recherchant le PID trouvé.
  • Indiquez la taille mémoire (SZ) de ce processus et le temps depuis lequel il tourne (etime) (regardez du coté de l'option -eo )

Manipulation de l'ordonnanceur

  • Vous trouverez dans le manuel de ps la correspondance entre les codes et l'état des processus. Quels sont les processus running au moment de l'exécution de la commande ps ?

  • Recherchez les processus en attente d'évènements si vous reconnaissez certains processus, imaginez ce qu'ils peuvent attendre ...

  • Lancez un processus «xeyes» dans un second terminal, identifiez son PID. Nous allons maintenant lui envoyez des signaux.

  • Envoyez vers le processus xeyes le signal SIGSTOP constatez ce qu'il se passe dans le terminal utilisé pour lancer xeyes et ce qu'il se passe avec le programme lui-même. Vérifiez le statut du processus retourné par la commande ps .

  • Envoyez maintenant le signal SIGCONT constatez ce qu'il se passe dans le terminal utilisé pour lancer xeyes et ce qu'il se passe avec le programme lui-même. Quel est le nouveau status retourné par ps ?

  • Vous avez constaté que le processus est passé en arrière-plan (vous pouvez de nouveau utiliser le terminal utilisé pour lancé xeyes ). Dans ce terminal, tapez la commande « fg » qui permet de passer le dernier programme au premier plan. Que se passe-t-il dans le terminal ? quel est le nouvel état du processus ?

  • Envoyez maintenant le signal SIGQUIT. Ensuite, relancez le programme xeyes puis appuyez sur les touches CTRL + Z (CTRL et en même temps Z). Vérifiez que cela correspond à l'émission d'un signal SIGSTOP. Repassez le programme au premier plan puis envoyez un CTRL+C.

Filiation des processus

  1. Sauvez les scripts-shells pere.sh et fils.sh dans un de vos répertoires.
  2. Décrivez ce que réalisent les scripts-shells pere.sh et fils.sh (une phrase pour chacun).
  3. Mettez les droits d'exécution sur ces deux scripts.
  4. Lancez le processus pere et déterminez à l'aide de la commande ps l'état des processus créés. Indice : un ps axjf peut vous donner un bon affichage dans ce cas.
  5. Le processus fils devient orphelin lorsque le père meurt sans attendre la fin de son fils. Quel processus adopte le processus fils si vous tuez (émission du signal SIGKILL) le processus père ?
  6. Si vous stoppez le père (émission du signal SIGSTOP) :
  • Dans quel état passe le fils à sa terminaison ?
  • Le père récupère-t-il le code de retour de son fils lorsque vous le relancez (émission du signal SIGCONT) ?
  1. Si vous tuez le fils, que constatez-vous en ce qui concerne le code de retour récupéré par le père ?