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 dugrep
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 lancerxeyes
et ce qu'il se passe avec le programme lui-même. Vérifiez le statut du processus retourné par la commandeps
. -
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 touchesCTRL + Z
(CTRL
et en même tempsZ
). Vérifiez que cela correspond à l'émission d'un signal SIGSTOP. Repassez le programme au premier plan puis envoyez unCTRL+C
.
Filiation des processus
- Sauvez les scripts-shells pere.sh et fils.sh dans un de vos répertoires.
- Décrivez ce que réalisent les scripts-shells
pere.sh
etfils.sh
(une phrase pour chacun). - Mettez les droits d'exécution sur ces deux scripts.
- Lancez le processus pere et déterminez à l'aide de la commande
ps
l'état des processus créés. Indice : unps axjf
peut vous donner un bon affichage dans ce cas. - 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 ? - 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) ?
- Si vous tuez le fils, que constatez-vous en ce qui concerne le code de retour récupéré par le père ?