Dark_Schneider Close the World, Open the Net | tiré de man bash.
CONTRÔLE DES JOBS
Le contrôle des jobs permet d'arrêter (suspend) sélectivement l'exécution d'un processus, et de la reprendre (resume) ultérieurement. L'utilisateur bénéficie généralement de cette possibilité grâce à l'action conjointe du pilote de terminal et de bash. L'interpréteur associe un job à chaque tube. Il maintient une table des jobs en cours d'exécution, cette table pouvant être affichée avec la commande jobs. Quand bash lance un job de manière asynchrone (en arrière-plan), il affiche une ligne du genre : [1] 25647 Cette ligne indique que le job est associé au numéro 1, et que le PID du dernier processus dans le tube est 25647. Tous les processus dans un tube simple font partie du même job. Bash utilise la notion de job comme une abstraction pour aider à les contrôler. Pour faciliter l'implémentation d'une interface utilisateur pour le contrôle de job, le système introduit la notion d'ID de groupe de processus associés à un terminal. Les membre de ce groupe de processus (ceux dont le GID est égal au Process Group ID du terminal) recoivent les signaux déclenchés par le clavier, comme SIGINT. Ces processus sont dits en avant-plan. Les processus en arrière-plan sont ceux dont le Process-GID differe de celui du terminal, ceux qui ne reçoivent pas les signaux déclenchés par le clavier. Seuls les processus en avant-plan peuvent lire depuis le terminal ou écrire dessus. Les processus en arrière-plan qui tentent une lecture sur le terminal (ou une écriture dessus), reçoivent les signaux SIGTTIN (SIGTTOU) émis par le pilote de péripherique du terminal, lesquels signaux suspendent l'exécution du processus (sauf interception du signal). Si le système d'exploitation sur lequel bash fonctionne permet le contrôle des jobs, bash vous y donne accès. La frappe d'un caractère suspension (généralement ^Z, Contrôle-Z) pendant l'exécution d'un processus arrête celui-ci, et redonne la main à bash. La frappe d'un caractère suspension différée (généralement ^Y, Contrôle-Y) arrêtera le processus au moment où il tentera de lire depuis le terminal, et la main reviendra à bash. Il est possible de manipuler ces jobs en utilisant la commande bg (background = arrière-plan) pour continuer l'exécution en arrière-plan, fg (foreground) pour la reprendre en avant-plan, ou encore la commande kill pour tuer le processus. Un ^Z prend effet immédiatement, et élimine les sorties en attente. Il y a plusieurs manières de faire référence à un job.
- Le caractère % introduit un nom de job. Le job numéro n peut être noté %n.
- On peut également faire référence à un job en utilisant un préfixe du nom utilise pour le lancer, ou une partie de la ligne de commande. Par exemple, %ce se réfère à un job arrêté nomme ce. Si ce préfixe correspond à plusieurs jobs, bash renverra une erreur. D'autre part, %?ce, fait référence à n'importe quel job contenant la chaîne ce dans sa ligne de commande. Si la sous-chaîne correspond à plusieurs jobs, bash renverra une erreur.
- Les symboles %% et %+ référencent le job courant du shell, c'est à dire le dernier job arrêté alors qu'il se trouvait en avant-plan. Le job précédent peut être mentionné en utilisant %-. Dans les affichages se rapportant aux jobs (par exemple ceux de la commande jobs le job courant est toujours indiqué par un +, et le job précédent avec un -.
Il suffit de nommer un job pour le ramener en avant-plan : %1 est synonyme de ``fg %1'', et ramène le job 1 depuis l'arrière-plan vers l'avant-plan. De même, ``%1 &'' relance le job 1, mais en arrière-plan cette fois, de manière équivalente à ``bg %1''. Le shell est immédiatement prévenu lorsqu'un job change d'état. Normalement bash attend d'être prêt à afficher son symbole d'accueil avant de fournir un rapport sur les changements dans les statut des jobs, afin de ne pas perturber les autres affichages. Avec l'option -b de la commande interne set, bash affichera les modifications immédiatement (Voir aussi la description de la variable notify dans le paragraphe Variables du Shell plus haut.) Si vous essayez de quitter bash alors que des jobs sont suspendus, le shell affichera un message d'avertissement. Vous pouvez alors utiliser la commande jobs pour vérifier leurs états. Une fois cette commande invoquée, ou si vous essayez à nouveau de quitter le shell immédiatement, il n'y aura plus d'avertissement, et les jobs suspendus seront définitivement terminés. ---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
|