Terminer des tâches en arrière-plan
Dans cette étape, vous apprendrez différentes méthodes pour terminer des tâches en arrière-plan lorsqu'elles ne sont plus nécessaires. La terminaison appropriée des tâches est importante pour libérer les ressources système et maintenir les performances du système.
Identifier les tâches à terminer
Tout d'abord, vérifions quelles tâches sont actuellement en cours d'exécution :
jobs
Vous devriez voir votre tâche en arrière-plan en cours d'exécution :
[1] + running ~/project/background_task.sh
Si vous souhaitez des informations plus détaillées, y compris l'identifiant de processus (PID), utilisez :
jobs -l
Cela affichera une sortie similaire à :
[1] + 1456 running ~/project/background_task.sh
Notez le PID (le nombre après le numéro de tâche), car il peut être utilisé pour terminer le processus.
Méthode 1 : Terminer une tâche en utilisant son numéro de tâche
La méthode la plus directe pour terminer une tâche en arrière-plan consiste à utiliser la commande kill
avec le numéro de tâche :
kill %1
Vérifiez si la tâche a été terminée :
jobs
Vous pourriez voir :
[1] + terminated ~/project/background_task.sh
Si la tâche est toujours en cours d'exécution (certains processus peuvent nécessiter un signal de terminaison plus puissant), vous pouvez utiliser :
kill -9 %1
Le flag -9
envoie un signal SIGKILL, qui termine forcément le processus sans lui permettre de nettoyer.
Méthode 2 : Terminer une tâche en utilisant son PID
Démarrons une autre instance de notre script en arrière-plan :
~/project/background_task.sh &
Vous devriez voir une sortie montrant le numéro de tâche et le PID :
[1] 1567
Pour terminer cette tâche en utilisant son PID, utilisez :
kill 1567
Remplacez 1567
par le PID réel de votre tâche.
Vérifiez que la tâche a été terminée :
jobs
Méthode 3 : Utiliser le nom du processus avec killall
Démarrons encore une autre instance de notre script :
~/project/background_task.sh &
Si vous avez plusieurs instances du même processus en cours d'exécution, vous pouvez les terminer toutes à la fois en utilisant la commande killall
:
killall background_task.sh
Cette commande termine tous les processus ayant le nom background_task.sh
.
Vérifiez qu'aucune tâche n'est en cours d'exécution :
jobs
Il ne devrait y avoir aucune sortie, indiquant que toutes les tâches en arrière-plan ont été terminées.
Comprendre les signaux de terminaison
Lorsque vous utilisez la commande kill
, vous envoyez un signal au processus. Par défaut, kill
envoie le signal SIGTERM (signal 15), qui demande au processus de se terminer proprement. Si un processus ne répond pas au SIGTERM, vous pouvez utiliser SIGKILL (signal 9) pour forcer la terminaison :
kill -TERM %1 ## Identique à kill %1
kill -KILL %1 ## Identique à kill -9 %1
D'autres signaux utiles incluent :
- SIGHUP (signal 1) : Souvent utilisé pour recharger les fichiers de configuration
- SIGINT (signal 2) : Identique à appuyer sur Ctrl+C
- SIGSTOP (signal 19) : Met en pause un processus (ne peut pas être capturé ou ignoré)
- SIGCONT (signal 18) : Reprend un processus arrêté
Pour une dernière démonstration, démarrons notre tâche en arrière-plan à nouveau, puis terminons-la :
~/project/background_task.sh &
jobs
kill %1
jobs
Cette séquence démarre la tâche, confirme qu'elle est en cours d'exécution, la termine, puis vérifie qu'elle n'est plus en cours d'exécution.