<Précédent | Table des matières | Suivant>
De plus, Linux est basé sur UNIX, où il est courant d'avoir plusieurs utilisateurs exécutant plusieurs commandes, en même temps et sur le même système. Il est évident que des mesures doivent être prises pour que le CPU gère tous ces processus, et que des fonctionnalités doivent être fournies pour que les utilisateurs puissent basculer entre les processus. Dans certains cas, les processus devront continuer à s'exécuter même lorsque l'utilisateur qui les a démarrés se déconnecte. Et les utilisateurs ont besoin d'un moyen de réactiver les processus interrompus.
Nous expliquerons la structure des processus Linux dans les sections suivantes.
4.1.2. Types de processus
4.1.2.1. Processus interactifs
Les processus interactifs sont initialisés et contrôlés via une session de terminal. En d'autres termes, il doit y avoir quelqu'un connecté au système pour démarrer ces processus ; ils ne sont pas démarrés automatiquement dans le cadre des fonctions du système. Ces processus peuvent s'exécuter au premier plan, occupant le terminal qui a démarré le programme, et vous ne pouvez pas démarrer d'autres applications tant que ce processus s'exécute au premier plan. Alternativement, ils peuvent s'exécuter en arrière-plan, de sorte que le terminal dans lequel vous avez démarré le programme puisse accepter de nouvelles commandes pendant l'exécution du programme. Jusqu'à présent, nous nous concentrions principalement sur les programmes exécutés au premier plan - la durée de leur exécution était trop courte pour être remarquée - mais la visualisation d'un fichier avec le moins command est un bon exemple de commande occupant la session de terminal. Dans ce cas, le programme activé attend que vous fassiez quelque chose. Le programme est toujours connecté au terminal d'où il a été démarré, et le terminal n'est utile que pour entrer des commandes que ce programme peut comprendre. D'autres commandes entraîneront simplement des erreurs ou
non-réactivité du système.
Pendant qu'un processus s'exécute en arrière-plan, cependant, l'utilisateur n'est pas empêché de faire d'autres choses dans le terminal dans lequel il a démarré le programme, pendant son exécution.
Le shell offre une fonctionnalité appelée contrôle des tâches ce qui permet une gestion facile de plusieurs processus. Ce mécanisme fait basculer les processus entre le premier plan et l'arrière-plan. Grâce à ce système, les programmes peuvent également être démarrés immédiatement en arrière-plan.
L'exécution d'un processus en arrière-plan n'est utile que pour les programmes qui n'ont pas besoin d'intervention de l'utilisateur (via le shell). La mise en arrière-plan d'un travail est généralement effectuée lorsque l'exécution d'un travail est censée prendre beaucoup de temps. Afin de libérer le terminal émetteur après avoir entré la commande, une esperluette finale est ajoutée. Dans l'exemple, en mode graphique, nous ouvrons une fenêtre de terminal supplémentaire par rapport à celle existante :
Billy :~> xterm &
[1] 26558
Billy :~> emplois
[1]+ Courir
xterm &
Billy :~> xterm &
[1] 26558
Billy :~> emplois
[1]+ Courir
Les fonctions complètes de contrôle des tâches sont expliquées en détail dans le bash Pages d'informations, de sorte que seules les applications de contrôle des tâches fréquemment utilisées sont répertoriées ici :
Tableau 4-1. Contrôler les processus
(partie de) commande | Sens |
commande_régulière | Exécute cette commande au premier plan. |
commande & | Exécutez cette commande en arrière-plan (relâchez le terminal) |
emplois | Afficher les commandes exécutées en arrière-plan. |
Ctrl+Z | Suspendre (arrêter, mais pas quitter) un processus en cours d'exécution au premier plan (suspendre). |
Ctrl+C | Interrompre (terminer et quitter) un processus en cours d'exécution au premier plan. |
%n | Chaque processus exécuté en arrière-plan reçoit un numéro qui lui est attribué. En utilisant l'expression %, un travail peut être référencé en utilisant son numéro, par exemple fg %2. |
bg | Réactiver un programme suspendu en arrière-plan. |
fg | Remet le travail au premier plan. |
tuer | Mettre fin à un processus (voir également Shell Builtin Commands dans les pages Info de bash) |
Des exemples plus pratiques peuvent être trouvés dans les exercices.
La plupart des systèmes UNIX sont susceptibles de fonctionner à l'écran, ce qui est utile lorsque vous souhaitez réellement qu'un autre shell exécute des commandes. En appelant à l'écran, une nouvelle session est créée avec un shell et/ou des commandes comme spécifié, que vous pouvez ensuite mettre à l'écart. Dans cette nouvelle session, vous pouvez faire ce que vous voulez faire. Tous les programmes et opérations s'exécuteront indépendamment du shell émetteur. Vous pouvez ensuite détacher cette session, tandis que les programmes que vous avez démarrés continuent de s'exécuter, même lorsque vous vous déconnectez du shell d'origine, et choisissez votre à l'écran à nouveau quand vous le souhaitez.
Ce programme est né à une époque où les consoles virtuelles n'étaient pas encore inventées et où tout devait être fait à l'aide d'un seul terminal texte. Pour les accros, cela a toujours un sens sous Linux, même si nous avons des consoles virtuelles depuis près de dix ans.
4.1.2.2. Processus automatiques
Les processus automatiques ou batch ne sont pas connectés à un terminal. Il s'agit plutôt de tâches qui peuvent être mises en file d'attente dans une zone de spouleur, où elles attendent d'être exécutées sur une base FIFO (premier entré, premier sorti). Ces tâches peuvent être exécutées en utilisant l'un des deux critères suivants :
• A une certaine date et heure : fait à l'aide du at commande, dont nous parlerons dans la deuxième partie de ce chapitre.
• À des moments où la charge totale du système est suffisamment faible pour accepter des travaux supplémentaires : effectué à l'aide du lot commander. Par défaut, les tâches sont placées dans une file d'attente où elles attendent d'être exécutées jusqu'à ce que la charge système soit inférieure à 0.8. Dans les grands environnements, l'administrateur système peut préférer le traitement par lots lorsque de grandes quantités de données doivent être traitées ou lorsque des tâches exigeant beaucoup de ressources système doivent être exécutées sur un système déjà chargé. Le traitement par lots est également utilisé pour optimiser les performances du système.
4.1.2.3. Démons