Lorsque vous exécutez un script shell Unix ou une commande qui prend beaucoup de temps, vous pouvez l'exécuter en arrière-plan.
Dans cet article, voyons comment exécuter une tâche en arrière-plan, mettre une tâche au premier plan, afficher toutes les tâches en arrière-plan et supprimer une tâche en arrière-plan.
1. Exécution d'une tâche en arrière-plan
L'ajout d'une esperluette ( &) à la commande exécute le travail en arrière-plan.
Par exemple, lorsque vous exécutez une commande de recherche dont l'exécution peut prendre beaucoup de temps, vous pouvez la placer en arrière-plan, comme indiqué ci-dessous. L'exemple suivant trouve tous les fichiers sous le système de fichiers racine qui ont changé au cours des dernières 24 heures.
# find / -ctime -1 > /tmp/changed-file-list.txt &
2. Envoi du travail de premier plan actuel en arrière-plan à l'aide de CTRL-Z et de la commande bg
Vous pouvez envoyer une tâche de premier plan déjà en cours d'exécution en arrière-plan comme expliqué ci-dessous :
- Appuyez sur "CTRL+Z" pour suspendre la tâche de premier plan en cours.
- Exécutez bg pour que cette commande s'exécute en arrière-plan.
Par exemple, si vous avez oublié d'exécuter une tâche en arrière-plan, vous n'avez pas besoin de tuer la tâche en cours et de démarrer une nouvelle tâche en arrière-plan. Au lieu de cela, suspendez la tâche en cours et placez-la en arrière-plan, comme indiqué ci-dessous.
# find / -ctime -1 > /tmp/changed-file-list.txt # [CTRL-Z] [2]+ Stopped find / -ctime -1 > /tmp/changed-file-list.txt # bg
3. Afficher toutes les tâches en arrière-plan à l'aide de la commande jobs
Vous pouvez lister les tâches en arrière-plan avec la commande jobs . Exemple de sortie de la commande jobs :
# jobs [1] Running bash download-file.sh & [2]- Running evolution & [3]+ Done nautilus .
4. Faire passer une tâche de l'arrière-plan au premier plan à l'aide de la commande fg
Vous pouvez mettre une tâche en arrière-plan au premier plan à l'aide de la commande fg . Lorsqu'il est exécuté sans arguments, il place le travail d'arrière-plan le plus récent au premier plan.
# fg
Si vous avez plusieurs travaux au sol en arrière-plan et que vous souhaitez mettre un certain travail au premier plan, exécutez la commande jobs qui affichera l'ID et la commande du travail.
Dans l'exemple suivant, fg %1 amènera le travail n° 1 (c'est-à-dire download-file.sh) au premier plan.
# jobs [1] Running bash download-file.sh & [2]- Running evolution & [3]+ Done nautilus . # fg %1
5. Arrêtez une tâche d'arrière-plan spécifique à l'aide de kill %
Si vous souhaitez supprimer une tâche d'arrière-plan spécifique, supprimez %job-number. Par exemple, pour tuer le travail 2, utilisez
# kill %2
Pour tuer un travail de premier plan, utilisez l'une des méthodes spécifiées dans notre article précédent 4 façons de tuer un processus — kill, killall, pkill, xkill.