Comment mettre en pause et reprendre les scripts Shell sous Linux : Un guide pratique

L’une des fonctionnalités puissantes de Linux est la capacité de mettre en pause l’exécution des scripts shell et de les reprendre plus tard. Ce guide présente les méthodes de base pour contrôler l’exécution des scripts shell, explorant des moyens d’améliorer l’efficacité du travail en tirant parti de ces capacités. Nous couvrons une large gamme de techniques, allant de l’utilisation des commandes de contrôle des tâches aux méthodes de pause au sein des scripts.

Sommaire

Qu’est-ce que les scripts Shell ?

Les scripts Shell sont un type de langage de script utilisé dans les systèmes d’exploitation Linux et de type Unix. Ils permettent d’écrire une série de commandes dans un fichier et de les exécuter comme un seul fichier exécutable. Les scripts Shell permettent l’automatisation des tâches complexes et des tâches d’administration système efficaces. Ils peuvent être exécutés directement via une interface basée sur le texte ou en traitement par lots, et sont largement utilisés à différents niveaux du système.

Les bases de la mise en pause : Utiliser Ctrl+Z

La méthode la plus basique pour mettre en pause un programme exécuté à partir d’un script shell ou de la ligne de commande est d’utiliser le raccourci clavier Ctrl+Z. Cette action met en pause le processus en cours d’exécution en avant-plan et lui attribue un numéro de tâche par le système. Un processus mis en pause peut être déplacé en arrière-plan avec la commande bg, ou repris en avant-plan à l’aide de la commande fg.

Cette méthode est incroyablement utile pour arrêter temporairement des scripts ou des programmes qui prennent beaucoup de temps à s’exécuter, permettant à d’autres tâches de prendre la priorité. Elle sert également de mesure d’urgence pour arrêter en toute sécurité des programmes qui pourraient produire des résultats non souhaités. Utiliser Ctrl+Z pour mettre en pause est la première étape dans l’utilisation des fonctionnalités de contrôle des tâches de Linux, essentielle pour une gestion efficace du système.

Aperçu des commandes de contrôle des tâches

Linux est équipé de fonctionnalités de contrôle des tâches qui permettent une gestion efficace de plusieurs processus. Ces fonctionnalités permettent d’exécuter des processus en arrière-plan ou en avant-plan, et de reprendre des processus mis en pause. Les commandes de contrôle des tâches clés incluent :

  • jobs : Affiche une liste et le statut des tâches liées à la session shell actuelle. Vous pouvez voir si une tâche s’exécute en arrière-plan ou a été arrêtée.
  • bg : Reprend une tâche arrêtée (mise en pause) en arrière-plan. Si aucune tâche n’est spécifiée, la dernière tâche arrêtée est ciblée.
  • fg : Reprend une tâche en arrière-plan ou arrêtée en avant-plan. Cette commande vous permet de saisir à nouveau des données dans la tâche.
  • kill : Termine une tâche ou un processus. Vous pouvez spécifier un numéro de tâche ou un ID de processus pour mettre fin à une tâche ou un processus spécifique.

Maîtriser ces commandes permet un contrôle flexible de plusieurs processus sur un système Linux, surtout dans la gestion de scripts ou de processus de longue durée.

Exécuter en arrière-plan avec la commande bg

La commande bg est utilisée pour reprendre une tâche arrêtée (mise en pause) en arrière-plan. En utilisant cette commande, une tâche peut continuer à s’exécuter sans nécessiter d’entrée de l’utilisateur, permettant de réaliser d’autres travaux en avant-plan.

Pour exécuter une tâche en arrière-plan, commencez par mettre en pause la tâche s’exécutant en avant-plan à l’aide de Ctrl+Z. Ensuite, vous pouvez la reprendre en arrière-plan en spécifiant le numéro de la tâche après la commande bg. Le numéro de la tâche peut être trouvé à l’aide de la commande jobs.

Par exemple, si la sortie de la commande jobs était comme suit :

[1]+  Stopped                 myscript.sh
[2]   Running                 another_script.sh &

Pour reprendre myscript.sh en arrière-plan, vous exécuteriez la commande suivante :

bg %1

Cette commande reprend myscript.sh, numéro de tâche 1, en arrière-plan. Puisque les tâches en arrière-plan n’acceptent pas d’entrée utilisateur, il est recommandé de rediriger la sortie vers un fichier journal ou d’utiliser la commande jobs pour vérifier leur statut et sortie.

Retour en avant-plan avec la commande fg

La commande fg est utilisée pour ramener une tâche en arrière-plan ou arrêtée en avant-plan et la reprendre. Utiliser cette commande permet à un processus qui s’exécute en arrière-plan ou est en pause de revenir en avant-plan pour une saisie directe de l’utilisateur et un suivi.

Pour reprendre une tâche en avant-plan, commencez par identifier le numéro de la tâche en vérifiant l’état actuel des tâches avec la commande jobs. Ensuite, exécutez la commande fg suivie du numéro de la tâche. Notez que le numéro de la tâche doit être précédé d’un signe %.

Par exemple, si les tâches suivantes s’exécutaient en arrière-plan :

[1]-  Running                 background_task.sh &
[2]+  Stopped                 paused_script.sh

Pour reprendre paused_script.sh (numéro de tâche 2) en avant-plan, utilisez la commande suivante :

fg %2

Cette opération ramène paused_script.sh en avant-plan pour interaction avec l’utilisateur. La commande fg est particulièrement efficace pour les processus qui s’exécutent pendant une longue période ou nécessitent des opérations détaillées sous surveillance de l’utilisateur. La reprise de l’exécution en avant-plan permet un suivi en temps réel des progrès et une intervention directe si nécessaire.

Afficher les listes de tâches avec la commande jobs

La commande jobs est utilisée pour afficher une liste et le statut des tâches liées à la session shell actuelle. Elle permet aux utilisateurs de voir les processus s’exécutant en arrière-plan, ceux qui sont en pause (arrêtés), et d’autres états de tâches.

L’exécution de la commande jobs attribue un numéro de tâche unique à chaque tâche, affiché à côté de son statut (en cours d’exécution, arrêté, etc.). Cela facilite la spécification de la tâche à contrôler à l’aide des commandes bg, fg, ou kill.

Par exemple, si le résultat de l’exécution de la commande jobs est affiché comme suit :

[1]   Running                 ./long_running_script.sh &
[2]-  Stopped                 ./paused_script.sh
[3]+  Running                 ./background_task.sh &

À partir de cette sortie, vous pouvez dire que le numéro de tâche 1 s’exécute en arrière-plan, le numéro de tâche 2 est arrêté (en pause), et le numéro de tâche 3 s’exécute également en arrière-plan. Sur la base de ces informations, vous pouvez choisir de ramener une tâche spécifique en avant-plan, de la reprendre, ou de la terminer.

La commande jobs est un outil vital pour améliorer l’efficacité du travail sous Linux, essentielle pour gérer et surveiller les processus. Elle est particulièrement utile lors de l’exécution de multiples tâches simultanément ou de la gestion de scripts de longue durée.

Contrôler les scripts Shell avec la commande kill

La commande kill est un outil puissant pour mettre fin aux processus. Elle permet de contrôler les scripts shell et tout processus en spécifiant un ID de processus (PID) particulier ou un numéro de tâche, mettant fin à ce processus. Cette commande est incroyablement utile lorsqu’un programme devient non réactif ou doit être terminé sous certaines conditions.

L’utilisation de base pour mettre fin à un processus implique de spécifier le PID du processus que vous souhaitez terminer après la commande kill. Le PID peut être trouvé à l’aide de commandhcb/code-block {« langType »: »bash », »langName »: »Bash »} –>

bg %1

Cette commande reprend myscript.sh, numéro de tâche 1, en arrière-plan. Étant donné que les tâches en arrière-plan n’acceptent pas d’entrée de l’utilisateur, il est recommandé de rediriger la sortie vers un fichier journal ou d’utiliser la commande jobs pour vérifier leur statut et leur sortie.

Retourner en avant-plan avec la commande fg

La commande fg est utilisée pour ramener une tâche en arrière-plan ou arrêtée en avant-plan et la reprendre. Utiliser cette commande permet à un processus qui s’exécute en arrière-plan ou est en pause de revenir en avant-plan pour une saisie directe de l’utilisateur et une surveillance.

Pour reprendre une tâche en avant-plan, identifiez d’abord le numéro de la tâche en vérifiant le statut des tâches actuelles avec la commande jobs. Ensuite, exécutez la commande fg suivi du numéro de la tâche. Notez que le numéro de la tâche doit être précédé d’un signe %.

Par exemple, si les tâches suivantes étaient exécutées en arrière-plan :

[1]-  Running                 background_task.sh &
[2]+  Stopped                 paused_script.sh

Pour reprendre paused_script.sh (numéro de tâche 2) en avant-plan, utilisez la commande suivante :

fg %2

Cette opération ramène paused_script.sh en avant-plan pour une interaction avec l’utilisateur. La commande fg est particulièrement efficace pour les processus qui s’exécutent pendant une longue période ou nécessitent des opérations détaillées sous surveillance de l’utilisateur. La reprise de l’exécution en avant-plan permet un suivi en temps réel des progrès et une intervention directe si nécessaire.

Afficher les listes de tâches avec la commande jobs

La commande jobs est utilisée pour afficher une liste et le statut des tâches liées à la session shell actuelle. Elle permet aux utilisateurs de voir les processus s’exécutant en arrière-plan, ceux qui sont en pause (arrêtés) et d’autres états de tâches.

L’exécution de la commande jobs attribue un numéro de tâche unique à chaque tâche, affiché à côté de son statut (en cours d’exécution, arrêté, etc.). Ceci facilite la spécification de la tâche à contrôler à l’aide des commandes bg, fg, ou kill.

Par exemple, si le résultat de l’exécution de la commande jobs est affiché comme suit :

[1]   Running                 ./long_running_script.sh &
[2]-  Stopped                 ./paused_script.sh
[3]+  Running                 ./background_task.sh &

À partir de cette sortie, vous pouvez dire que le numéro de tâche 1 s’exécute en arrière-plan, le numéro de tâche 2 est arrêté (mis en pause) et le numéro de tâche 3 s’exécute également en arrière-plan. Sur la base de ces informations, vous pouvez choisir de ramener une tâche spécifique en avant-plan, de la reprendre ou de la terminer.

La commande jobs est un outil vital pour améliorer l’efficacité du travail sous Linux, essentielle pour gérer et surveiller les processus. Elle est particulièrement utile lors de l’exécution de plusieurs tâches simultanément ou de la gestion de scripts de longue durée.

Contrôler les scripts Shell avec la commande kill

La commande kill est un outil puissant pour terminer les processus. Elle permet de contrôler les scripts shell et tout processus en spécifiant un ID de processus (PID) particulier ou un numéro de tâche, mettant fin à ce processus. Cette commande est incroyablement utile lorsqu’un programme devient non réactif ou doit être terminé sous certaines conditions.

L’utilisation de base pour terminer un processus consiste à spécifier le PID du processus que vous souhaitez terminer suivant la commande kill. Le PID peutêtre trouvé à l’aide de commandes comme ps ou top.

Exemple :

kill 12345

Cette commande termine le processus avec le PID 12345.

De plus, la commande kill peut opérer sur les tâches contrôlées par le shell en utilisant le contrôle des tâches. Pour terminer une tâche spécifique en utilisant son numéro de tâche, préfixez le numéro de la tâche avec un %.

Exemple :

kill %1

Cette commande termine le processus avec le numéro de tâche 1.

De plus, la commande kill peut envoyer des signaux à un processus, permettant divers effets, tels que la terminaison immédiate (SIGKILL ou -9) ou la demande de terminaison du programme (SIGTERM ou -15).

Exemple :

kill -9 12345

Cette commande force immédiatement la terminaison du processus avec le PID 12345.

La commande kill, étant très puissante, nécessite de la prudence dans son utilisation. Terminer accidentellement des processus système essentiels peut affecter la stabilité du système.

Mettre en pause au sein des scripts : La commande sleep

Pour mettre temporairement en pause un processus au sein d’un script shell, utilisez la commande sleep. Cette commande retarde l’exécution du script pour un nombre spécifié de secondes, mettant en pause le processus pendant cette période. La commande sleep est particulièrement utile pour gérer des tâches dépendantes du temps au sein des scripts ou introduire une période d’attente fixe entre des opérations consécutives.

L’utilisation de base est simple : suivez sleep avec le nombre de secondes que vous souhaitez mettre en pause. Par exemple, pour mettre en pause l’exécution du script pendant 5 secondes, vous écririez :

sleep 5

Outre les secondes, la commande sleep peut également spécifier des minutes (m), des heures (h) et des jours (d). Par exemple, pour mettre en pause un processus pendant 2 minutes, vous utiliseriez :

sleep 2m

En tirant parti de la commande sleep, vous pouvez atteindre un contrôle plus fin sur la gestion des processus au sein des scripts shell. Par exemple, lors de la création d’un script pour sauvegarder des données sans surcharger le serveur, insérer des commandes sleep entre les opérations de sauvegarde peut aider à gérer l’utilisation des ressources système.

Scénarios pratiques et exemples

Apprendre à mettre en pause et à reprendre les scripts shell sous Linux peut considérablement améliorer votre efficacité au travail. Ici, nous introduisons des scénarios pratiques utilisant le contrôle des tâches.

Scénario 1 : Tâches de longue durée en arrière-plan

Vous exécutez un script pour traiter une grande quantité de données mais devez également effectuer d’autres tâches simultanément. Dans ce cas, vous pouvez exécuter le script en arrière-plan et vérifier son statut selon le besoin.

  1. Exécutez le script en arrière-plan.
   ./data_processing_script.sh &
  1. Vérifiez les tâches en cours avec la commande jobs.
   jobs
  1. Vérifiez si le travail est terminé, et si nécessaire, ramenez-le en avant-plan.
   fg %1

Scénario 2 : Ajustement des ressources système

Pour gérer correctement les ressources système tout en exécutant plusieurs tâches, vous pourriez temporairement arrêter une tâche spécifique pour réduire la charge du système.

  1. Mettez en pause la tâche que vous jugez être à l’origine d’une charge élevée.
   kill -STOP %1
  1. Une fois la charge du système diminuée, reprenez la tâche.
   kill -CONT %1

Scénario 3 : Automatisation des tâches périodiques

Lorsque vous devez exécuter un script à des intervalles spécifiques, utilisez la commande sleep pour introduire des périodes d’attente, automatisant ainsi l’exécution du script.

  1. Exécutez le script puis attendez 5 minutes après sa fin.
   ./routine_task.sh
   sleep 5m
  1. Répétez cette étape pour automatiser les tâches périodiques.

Ces scénarios montrent des exemples basiques d’utilisation des fonctionnalités de contrôle des tâches de Linux et de la commande sleep pour rationaliser les tâches quotidiennes et gérer efficacement les ressources système. Maîtriser ces techniques permet de gérer facilement des tâches complexes, améliorant ainsi la productivité dans votre travail.

Conclusion

Maîtriser comment mettre efficacement en pause et reprendre les scripts shell sous Linux est crucial pour augmenter la flexibilité de votre travail et gérer efficacement les tâches. Mettre en pause avec Ctrl+Z, gérer les processus en arrière-plan et en avant-plan avec les commandes bg et fg, afficher les listes de tâches avec jobs, contrôler les processus avec la commande kill, et mettre en pause au sein des scripts avec sleep sont des techniques fondamentales que chaque utilisateur de Linux devrait connaître. En utilisant ces commandes de manière appropriée, vous pouvez contrôler efficacement plusieurs processus et tâches, améliorant la productivité dans votre travail. Apprendre à utiliser ces techniques à travers des scénarios pratiques vous permet d’atteindre une plus grande flexibilité et efficacité dans vos tâches quotidiennes. Embrassons ces compétences pour rationaliser notre travail et gérer les tâches plus efficacement sous Linux.

Sommaire