linux: tuer la tâche en arrière-plan
-
06-07-2019 - |
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
????
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 travailn
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înece
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".