Tuer un emploi dans Ubuntu

22

C'est probablement une question fréquemment posée, mais je n'ai pas pu trouver une bonne documentation.

J'ai des tâches en cours d'exécution sur mon système:

foo@fooBox:~/tmp$ jobs
[1]+  Stopped                 foo bar baz

Comment puis-je tuer ce processus? J'ai essayé différentes commandes kill 1, mais cela n'a pas fonctionné.

Nick Heiner
la source
alternativement, $ fg [enter] [ctrl-c]: p
bubu
@bubu: Cela ne fonctionnera pas pour certains programmes qui interceptent SIGINT, comme vim.
Wuffers le
@Mark Szymanski Je savais, je savais: p
bubu

Réponses:

32

Vous pouvez utiliser la méthode suggérée par @fideli, ou vous pouvez utiliser la killcommande comme ceci:

kill %1

Cela tuera la première commande suspendue. Vous pouvez également trouver une liste de commandes suspendues comme ceci:

jobs

et il fournira une sortie comme celle-ci:

[1]+  Stopped                 yes

Si vous avez plusieurs travaux arrêtés, le nombre entre parenthèses ( [1]) sera le numéro du travail, celui que vous fournissez après la %dans la killcommande.

Wuffers
la source
C'est bien! J'ai appris quelque chose de nouveau kill.
fideli
1
Comment se fait-il que je l'obtienne -bash: kill: (3593) - Operation not permitted. Quand je l'utilise avec sudo, j'obtiens cecikill: %1: invalid process id
CMCDragonkai
1
@CMCDragonkai Vous avez rencontré une situation où la commande que vous avez exécutée appartient maintenant à un autre utilisateur parce que vous l'avez utilisée sudo, vous ne pouvez donc pas la tuer, mais exécuter killavec sudosignifie que vous n'avez plus accès à la liste des tâches de votre utilisateur (essayez courir sudo jobspour voir ce que je veux dire). Au lieu de cela, puisque vous avez maintenant le PID, exécutez simplement sudo kill 3593.
morloch
Comment un processus en arrière-plan peut-il appartenir à un autre utilisateur?
CMCDragonkai
6

Si vous exécutez, ps axvous obtiendrez une liste de tous les processus en cours d'exécution. Recherchez celui que vous voulez tuer et notez le numéro dans la PIDcolonne. Par exemple, si le nombre était 10203, vous exécuteriez alors:

kill 10203

Vous pouvez également exécuter ps ax | grep foopour trouver le programme exact que vous recherchez. Enfin, vous pouvez exécuter:

killall foo

pour tuer toutes les instances de foo.

fideli
la source