191 votes

linux : tuer la tâche de fond

Comment tuer la dernière tâche d'arrière-plan sous linux ?

Exemple :

doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????

288voto

John Kugelman Points 108754

Vous pouvez tuer par numéro de poste. Quand vous mettez une tâche en arrière-plan, vous verrez quelque chose comme :

$ ./script &
[1] 35341

Ce [1] est le numéro du travail et peut être référencé comme suit :

$ kill %1
$ kill %%  # Most recent background job

Pour voir une liste de numéros de travail, utilisez le bouton jobs commande. Plus de man bash :

Il existe plusieurs façons de faire référence à un travail dans le shell. Le caractère % introduit un nom de travail. Numéro de travail n peut être appelé %n . On peut également faire référence à une tâche en utilisant un préfixe du nom utilisé pour la démarrer, ou en utilisant une sous-chaîne qui qui apparaît dans sa ligne de commande. Par exemple, %ce fait référence à un arrêt ce travail. Si un préfixe correspond à plus d'un travail, bash signale une erreur. Utilisation de %?ce d'autre part, fait référence à tout travail contenant la chaîne de caractères suivante ce dans sa ligne de commande. Si la sous-chaîne correspond à plus d'un travail, bash signale une erreur. Les symboles %% y %+ fait référence à la notion de travail en cours du shell, qui est le dernier travail arrêté alors qu'il était au premier plan ou lancé en arrière-plan. Le travail précédent peut être référencée en utilisant %- . Dans les sorties relatives aux travaux (par exemple, la sortie de la commande jobs), le travail en cours est toujours marqué d'un + et le travail précédent avec un - . Un seul % (sans spécification de poste) fait également référence à la emploi actuel.

230voto

falstro Points 16545

Il y a une variable spéciale pour cela dans bash :

kill $!

$ ! se développe vers le PID du dernier processus exécuté en arrière-plan.

45voto

Dave Vogt Points 3861

La commande suivante vous donne une liste de tous les processus d'arrière-plan de votre session, ainsi que leur pid. Vous pouvez ensuite l'utiliser pour tuer le processus.

jobs -l

Exemple d'utilisation :

$ sleep 300 &
$ jobs -l
[1]+ 31139 Running                 sleep 300 &
$ kill 31139

25voto

Prabhu Are Points 70

Cela devrait tuer tous les processus d'arrière-plan :

jobs -p | xargs kill -9

0voto

jldupont Points 31331

Vous avez besoin de son pid... utilisez "ps -A" pour le trouver.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X