8. Exercices de synthèse

8.1. Lancement différé

Tout processus est lancé par un autre processus. Il a donc un père ! Si le processus père s'arrête, le processus fils disparaît également. Lorsque l'on lance une commande depuis le shell, ce dernier est le père de tous les processus lancés. Comment faire si l'on souhaite quitter le shell sans interrompre les processus en cours d'exécution ? La commande nohup libère le processus de son processus parent.

On peut donc lancer une application (qui va prendre beaucoup de temps) avec nohup et terminer sa séance avant que le travail ne soit terminé. L'application continuera à  tourner sur la machine.

bash$ nohup xcloxk&

  1. Installez le programme blast. Si nécessaire les sources sont ICI.

  2. Lancez un blast et cherchez son PID pour le tuer.

  3. Lancez un blast et fermer le terminal sans qu'il s'arrête de tourner

8.2. Commandes et processus

8.2.1. Manipulations

  1. Démarrez la commande blast.

  2. Essayez maintenant de démarrer une nouvelle fois la commande blast. Est-ce possible ?

  3. Stoppez la commande démarrée en frappant simultanément les touches Ctrl et Z

  4. Redémarrez la commande stoppée en arrière-plan.

  5. Exécutez la ligne de commande suivante : xeyes & xcalc & xlogo & xclock & xload & blast &

  6. En utilisant les messages que l'exécution de cette commande a produit ainsi que la commande ps associez à  chaque numéro de jobs démarré le nom du programme qui s'exécute.

  7. Arrêtez maintenant complètement les processus exécutant les commandes xlogo et xload en utilisant uniquement la commande kill que vous appliquez à  des numéros de jobs (numéros généralement inférieur à  10) c'est-à -dire sans utiliser de PID.

  8. Stoppez maintenant les processus exécutant les commandes xclock et blast en utilisant leur numéro de processus (PID). Pour stopper les processus vous devez envoyer le signal STOP aux processus concernés via la commande kill.

  9. Utilisez la commande jobs pour faire le bilan des processus actuellement attachés à  votre terminal (les jobs). Combien y a-t-il de processus stoppés ? en cours d'exécution ? Lesquels ?

  10. Faites redémarrer le processus exécutant blast en avant plan via l'appel de la commande fg. Comment avez-vous du spécifier le processus : via son PID ou son numéro de job ?

  11. Arrêtez tous les processus démarrés lors de cet exercice en une seule ligne de commande

8.2.2. Pauses

Dans cet exercice, vous devrez utiliser la commande sleep. Consultez le man.

  1. Essayez et comparez les commandes suivantes : sleep 5 ; echo A

    echo A ; sleep 5

    sleep 5 & echo A

    echo A & sleep 5

    (echo A ; sleep 5) &

    (sleep 5 ; echo A) &

  2. Exécutez la commande suivante, puis uniquement à  l'aide des facilités de manipulations des jobs faites en sorte que le message fini2 apparaissent avant le message fini1 : (sleep 60 ; echo fini1) & (sleep 120 ; echo fini2)

8.3. Scripts

8.3.1. Un script assassin

Ecrire un script csh tue.sh permettant de terminer un processus depuis une partie de son nom. L'appel pourra ressembler à  :

./tue.sh 'clock''

Skins :
Transparence
Simple
Page Accueil
Formation