Comment gérer la suspension des tâches (jobs) du terminal

LinuxBeginner
Pratiquer maintenant

Introduction

Le terminal Linux est un outil puissant qui permet aux utilisateurs d'interagir avec le système d'exploitation via une interface en ligne de commande. L'une des fonctionnalités clés du terminal Linux est la capacité à gérer et à contrôler les tâches (jobs), qui sont essentiellement des processus en cours d'exécution. Ce tutoriel explorera les concepts de base des tâches du terminal Linux, leurs applications, et démontrera les techniques pour suspendre et reprendre les tâches du terminal.

Comprendre les tâches (jobs) du terminal Linux

Le terminal Linux est un outil puissant qui permet aux utilisateurs d'interagir avec le système d'exploitation via une interface en ligne de commande. L'une des fonctionnalités clés du terminal Linux est la capacité à gérer et à contrôler les tâches (jobs), qui sont essentiellement des processus en cours d'exécution. Dans cette section, nous explorerons les concepts de base des tâches du terminal Linux, leurs applications, et présenterons quelques exemples de code.

Qu'est-ce que les tâches (jobs) du terminal Linux ?

Dans le terminal Linux, une tâche (job) désigne un processus qui s'exécute en premier plan (foreground) ou en arrière-plan (background). Lorsqu'un utilisateur exécute une commande dans le terminal, le shell crée un nouveau processus pour exécuter cette commande, et ce processus est considéré comme une tâche. Les tâches peuvent être interactives, où l'utilisateur fournit des entrées au processus en cours d'exécution, ou non interactives, où le processus s'exécute sans intervention de l'utilisateur.

Afficher et contrôler les tâches (jobs)

Le terminal Linux propose plusieurs commandes pour afficher et contrôler les tâches :

  • jobs : Cette commande répertorie toutes les tâches qui sont actuellement en cours d'exécution dans la session shell actuelle.
  • fg : Cette commande ramène une tâche suspendue en premier plan, permettant à l'utilisateur d'interagir avec elle.
  • bg : Cette commande reprend une tâche suspendue en arrière-plan.

Voici un exemple d'utilisation de ces commandes :

## Start a long-running process in the background
$ sleep 60 &
[1] 12345

## List the running jobs
$ jobs
[1]+ Running sleep 60 &

## Suspend the job by pressing Ctrl+Z
^Z
[1]+ Stopped sleep 60

## Resume the job in the background
$ bg
[1]+ sleep 60 &

## Bring the job to the foreground
$ fg
sleep 60

Dans cet exemple, nous démarrons une commande sleep 60 de longue durée en arrière-plan, la suspendons en utilisant Ctrl+Z, la reprenons en arrière-plan en utilisant bg, puis la ramenons en premier plan en utilisant fg.

Contrôle des tâches (jobs) et hiérarchie des processus

Les tâches du terminal Linux font partie d'une hiérarchie de processus, où chaque tâche est un processus enfant du processus shell. Cette hiérarchie permet des techniques avancées de contrôle des tâches, telles que :

  • Terminer une tâche et tous ses processus enfants
  • Surveiller l'état et l'utilisation des ressources d'une tâche
  • Rediriger les entrées/sorties des tâches

L'hiérarchie des processus peut être visualisée à l'aide d'un arbre de processus, qui peut être généré à l'aide de la commande pstree.

graph TD
    shell[Shell Process]
    job1[Job 1]
    job2[Job 2]
    job3[Job 3]

    shell --> job1
    shell --> job2
    shell --> job3

Dans cet exemple, le processus shell est le parent des trois processus de tâches.

En comprenant les concepts des tâches du terminal Linux et de l'hiérarchie des processus, les utilisateurs peuvent gérer et contrôler efficacement l'exécution de leurs commandes et applications, ce qui conduit à des flux de travail plus efficaces et productifs.

Suspendre et reprendre les tâches (jobs) du terminal

Dans le terminal Linux, la capacité à suspendre et reprendre les tâches (jobs) est une fonctionnalité puissante qui permet aux utilisateurs de gérer plus efficacement leurs processus en cours d'exécution. Cette section explorera les concepts et les techniques liés à la suspension et à la reprise des tâches du terminal.

Suspendre les tâches (jobs)

Suspendre une tâche dans le terminal Linux signifie mettre en pause son exécution, permettant à l'utilisateur de la reprendre plus tard ou de la déplacer en arrière-plan. Cela se fait généralement en utilisant le raccourci clavier Ctrl+Z, qui envoie un signal SIGTSTP à la tâche en cours d'exécution, la faisant s'arrêter.

Une fois qu'une tâche est suspendue, elle peut être listée à l'aide de la commande jobs, qui affichera l'état de la tâche comme "Stopped" (Arrêtée). À ce stade, l'utilisateur peut soit reprendre la tâche en premier plan en utilisant la commande fg, soit la déplacer en arrière-plan en utilisant la commande bg.

Voici un exemple :

## Start a long-running process
$ sleep 60
^Z
[1]+ Stopped sleep 60

## List the suspended job
$ jobs
[1]+ Stopped sleep 60

## Resume the job in the foreground
$ fg
sleep 60

## Suspend the job again
^Z
[1]+ Stopped sleep 60

## Move the job to the background
$ bg
[1]+ sleep 60 &

Reprendre les tâches (jobs) suspendues

Pour reprendre une tâche suspendue, vous pouvez utiliser la commande fg pour la ramener en premier plan, ou la commande bg pour la reprendre en arrière-plan.

Lorsqu'une tâche est reprise en premier plan, l'utilisateur peut interagir directement avec elle, fournir des entrées ou surveiller sa sortie. Lorsqu'une tâche est reprise en arrière-plan, elle continue de s'exécuter sans intervention de l'utilisateur, et l'utilisateur peut revenir à l'invite du shell pour effectuer d'autres tâches.

Il est important de noter que lorsque une tâche est suspendue et reprise, son état est préservé, permettant à l'utilisateur de continuer la tâche là où elle a été mise en pause.

En comprenant comment suspendre et reprendre les tâches du terminal, les utilisateurs peuvent gérer efficacement leurs flux de travail, mettre en pause les tâches de longue durée et basculer entre plusieurs processus, ce qui conduit à une expérience de terminal plus efficace et productive.

Techniques avancées de contrôle des tâches (jobs)

Bien que les commandes de base pour gérer les tâches (jobs) dans le terminal Linux, telles que jobs, fg et bg, soient essentielles, il existe également des techniques plus avancées que les utilisateurs peuvent exploiter pour avoir un meilleur contrôle sur leurs processus en cours d'exécution. Dans cette section, nous explorerons certaines de ces techniques avancées de contrôle des tâches.

Terminer les tâches (jobs)

En plus de suspendre et de reprendre les tâches, les utilisateurs peuvent également terminer les tâches en cours d'exécution en utilisant la commande kill. Cette commande envoie un signal au processus cible, qui peut être utilisé pour arrêter proprement le processus ou forcer sa terminaison.

## Start a long-running process
$ sleep 60 &
[1] 12345

## Terminate the job
$ kill %1
[1]+ Terminated sleep 60

Dans cet exemple, nous utilisons la commande kill avec le numéro de tâche (%1) pour terminer le processus sleep 60 en cours d'exécution en arrière-plan.

Planification et automatisation des tâches (jobs)

Les utilisateurs Linux peuvent également planifier des tâches pour qu'elles s'exécutent à des moments ou à des intervalles spécifiques en utilisant des outils tels que cron et at. Cela permet d'automatiser les tâches répétitives, telles que les sauvegardes, l'entretien du système ou le traitement des données.

Voici un exemple d'utilisation de cron pour planifier une tâche :

## Edit the crontab
$ crontab -e

## Add a cron job to run a script every weekday at 8 AM
0 8 * * 1-5 /path/to/script.sh

Cette tâche cron exécutera le script script.sh tous les jours de semaine (du lundi au vendredi) à 8 heures du matin.

Surveillance et reporting des tâches (jobs)

Pour surveiller l'état et l'utilisation des ressources des tâches en cours d'exécution, les utilisateurs peuvent exploiter des outils tels que top, htop et ps. Ces outils fournissent des informations détaillées sur les processus en cours d'exécution sur le système, y compris leur utilisation du CPU et de la mémoire, ainsi que l'utilisateur et la commande associés à chaque processus.

$ top
Tasks: 193 total,   1 running, 192 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3921036 total,   226748 free,   641124 used,  3053164 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  2666448 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 12345 user      20   0   10.0m   2.4m   1.4m S   0.3  0.1   0:00.13 sleep

Cette sortie de top montre les processus en cours d'exécution, y compris la tâche sleep que nous avons démarrée précédemment.

En exploitant ces techniques avancées de contrôle des tâches, les utilisateurs Linux peuvent avoir un contrôle plus précis sur leurs processus en cours d'exécution, automatiser les tâches répétitives et surveiller les performances et l'utilisation des ressources de leurs applications, ce qui conduit à une expérience de terminal plus efficace et productive.

Résumé

Dans ce tutoriel, vous avez appris les concepts fondamentaux des tâches (jobs) du terminal Linux, notamment comment les afficher et les contrôler à l'aide de commandes telles que jobs, fg et bg. Vous avez également exploré le contrôle des tâches et la hiérarchie des processus dans le terminal Linux, qui permet des techniques avancées de gestion des tâches. En comprenant et en appliquant ces compétences, vous pouvez améliorer votre productivité en ligne de commande et gérer efficacement vos processus en cours d'exécution dans l'environnement Linux.