bash unix - Linux:Tuer la tâche de fond




jobs stop (8)

Utilisez simplement la commande killall:

killall taskname

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

Comment est-ce que je tue la dernière tâche de fond engendrée dans Linux?

Exemple:

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

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

kill $!

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


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


La commande suivante vous donne une liste de tous les processus d'arrière-plan dans votre session, avec 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

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é.


C'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 efficacement cela? utilisez la commande less & pattern , semble que man utilise moins pager (pas si sûr), dans man bash type &% alors taper Enter ne montrera que les lignes qui contiennent '%', pour tout afficher, tapez &. puis entrez.


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

jobs -p | xargs kill -9

La réponse pour exécuter valgrind --tool=callgrind n'est pas tout à fait complète sans certaines options. Habituellement, nous ne voulons pas mettre en ligne 10 minutes de temps de démarrage lent sous Valgrind et nous voulons profiler notre programme quand il effectue une tâche.

Donc c'est ce que je recommande. Exécutez le programme en premier:

valgrind --tool=callgrind --dump-instr=yes -v --instr-atstart=no ./binary > tmp

Maintenant, quand cela fonctionne et que nous voulons commencer le profilage, nous devrions courir dans une autre fenêtre:

callgrind_control -i on

Cela active le profilage. Pour l'éteindre et arrêter toute la tâche, nous pourrions utiliser:

callgrind_control -k

Maintenant, nous avons des fichiers nommés callgrind.out. * Dans le répertoire courant. Pour voir les résultats de profilage, utilisez:

kcachegrind callgrind.out.*

Je recommande dans la fenêtre suivante de cliquer sur l'en-tête de colonne "Self", sinon cela montre que "main ()" est la tâche qui prend le plus de temps. "Self" montre à quel point chaque fonction elle-même a pris du temps, pas avec les personnes à charge.





linux bash unix kill job-control