Question

Comment puis-je tuer la dernière tâche en arrière-plan créée sous Linux?

Exemple:

doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
Était-ce utile?

La solution

Il existe une variable spéciale pour cela dans bash:

kill $!

$! passe au PID du dernier processus exécuté en arrière-plan.

Autres conseils

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

$ ./script &
[1] 35341

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

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

Pour afficher une liste des numéros de travail, utilisez la commande jobs . 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. Le numéro de travail n peut être          appelé % n . Il est également possible de faire référence à un travail en utilisant un préfixe du nom utilisé pour le démarrer ou en utilisant une sous-chaîne          apparaît dans sa ligne de commande. Par exemple, % ce fait référence à un travail arrêté ce . Si un préfixe correspond à plusieurs tâches, bash          rapporte une erreur. L’utilisation de %? Ce , quant à elle, fait référence à tout travail contenant la chaîne ce dans sa ligne de commande. Si la          la sous-chaîne correspond à plus d'un travail, bash signale une erreur. Les symboles %% et % + font référence à la notion de shell du travail en cours, qui est le dernier travail arrêté lorsqu'il était au premier plan ou démarré en arrière-plan. L'emploi précédent peut          être référencé avec % - . Dans la sortie relative aux travaux (par exemple, la sortie de la commande jobs), le travail en cours est toujours          marqué avec un + , et le travail précédent avec un - . Un seul % (sans spécification de travail associée) fait également référence à la          emploi actuel.

La commande suivante vous donne la liste de tous les processus d’arrière-plan de votre session, ainsi que le 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

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

jobs -p | xargs kill -9
skill doB

skill est une version de la commande kill qui vous permet de sélectionner un ou plusieurs processus en fonction d'un critère donné.

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

ceci est une réponse hors sujet, mais, pour ceux qui sont intéressés, cela peut être utile.

Comme dans la réponse de @John Kugelman,% est lié à la spécification du travail. comment trouver cela efficacement? use less's & pattern , semble-t-il, man utilise moins de pagette (pas si sûr), dans man bash, tapez & amp;% then, type Entrée affichera uniquement les lignes contenant '%', pour tout afficher, tapez & amp ;. puis entrez.

Utilisez simplement la commande killall:

killall taskname

pour plus d'informations et d'options avancées, tapez "man killall".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top