Comment puis-je tuer les processus dans Ubuntu?

149

Comment puis-je tuer tous les processus exécutés par mon propre compte non root?

J'ai quelques processus smbd en rotation que j'ai créés à partir de ma machine Windows et je me suis donc connecté telnet au serveur Linux et je veux arrêter ces processus en rotation. Je n'ai pas le droit de redémarrer des services ou de redémarrer la machine.

djangofan
la source

Réponses:

172

Pour tuer tous les processus que vous êtes autorisé à tuer, lancez simplement la commande

kill -15 -1ou en kill -9 -1fonction du comportement souhaité (utiliser man killpour plus de détails)

Pour tuer un processus spécifique, par exemple, firefox, exécutez simplement

pkill firefoxou killall firefoxselon le comportement que vous souhaitez: quelle est la différence entre 'killall' et 'pkill'?

Si vous voulez voir quels processus sont en cours, utilisez la commande

ps -ef

Si vous voulez rechercher tous les processus par utilisateur bob, cela pourrait aider

pgrep -l -u bob

ou

ps -ef | grep bob
ste_kwr
la source
4
Je commencerais par kill -15 -1, et je passerais à autre chose kill -9 -1s’il ya des processus obstinés et que je sais ce que je fais . Tuer au hasard des processus qui peuvent se trouver au milieu d’une transaction de base de données n’est pas une chose à faire de façon aussi décontractée que vous le suggérez.
Simon Richter
En outre, le processus de Firefox est nommé firefox-bin.
Simon Richter
Non, vous pouvez essayer d' exécuter killall firefoxet killall firefox-binvoir ce qui fonctionne. Je suis d'accord avec votre premier commentaire.
ste_kwr
Merci @ste_kwr, a travaillé avec vos instructions, après avoir lutté pendant deux jours ...
Java.beginner
L'avantage de ne pas avoir besoin de PID est dans les tâches cron. Utiliser des noms fonctionne proprement.
SDsolar
56

Utiliser sudo kill <pid>ousudo killall <process-name>

Chris Wayne
la source
3
Je ne pense pas que cela soit pertinent pour cette question, vous utilisez sudo - le PO n'a pas de tels privilèges, comme mentionné dans la question.
Pl1nk
Le PO n'a pas de privilèges. Veuillez éditer votre réponse. Elle pourrait également être supprimée ou convertie en un commentaire "pas une réponse".
Ish
S'il n'a pas les privilèges, il doit juste tuer <pid> ou killall <nom-processus> Je viens de l'utiliser dans mon compte non root, je ne serais pas en mesure de le faire s'il n'y avait pas eu cette réponse. .
Shailyn Ortiz
21

Essayons quelque chose de plus:

sudo apt-get install htop 

La topcommande est le moyen traditionnel de visualiser l'utilisation des ressources de votre système et de voir les processus qui utilisent le plus de ressources système. Top affiche une liste de processus, ceux qui utilisent le plus de ressources CPU en haut.

htopaffiche les mêmes informations avec une présentation plus facile à comprendre. Il vous permet également de sélectionner des processus avec les touches de direction et d'effectuer des actions, telles que les tuer ou modifier leur priorité, avec les Ftouches.

Fantomas
la source
16

Vous pouvez utiliser

ps -ax | grep application name 

Si vous recherchez le type firefox dans le terminal ps -ax | grep firefox, il affiche l’identifiant du processus de l’application correspondante. Vous pouvez arrêter cette application par killcommande si le processus id = 1317,

kill -9 1317
Xman Classical
la source
13

Je voudrais utiliser xkill. Entrez xkilldans un terminal et cliquez dans la fenêtre, ou entrez xkillet l'ID du processus et il sera terminé.

En savoir plus xkillsur x.org.

Alvar
la source
1
Utilisez-le en seconde en fréquence après avoir aimé. +1
Sergiy Kolodyazhnyy
xkill ne fonctionne pas dans ce cas ...
PythoNic
@ PythoNic dans quel cas s'agit-il?
Alvar
1
Il veut tuer un processus sans fenêtre qui n'est pas non plus lié au serveur X, comme cela me semble ... (En tout cas, un bon outil.)
PythoNic
9

Pour essayer de tuer tous les processus appartenant à un utilisateur username, exécutez:

pkill -U username
utilisateur129146
la source
7

Je diviserais votre problème en 2 parties:

1) Comment puis-je trouver les processus lancés par moi? Lance ça:

ps -u `whoami`

Le whoamiest juste au cas où vous ne connaissez pas le nom du compte que vous utilisez, sinon tapez simplement le nom du compte sans les guillemets.

Ceci listera tous les processus pouvant être supprimés par votre compte.

2) La pscommande listera le numéro du processus, le téléscripteur, l'heure et le CMD. L'ID de processus est la première colonne. Utilisez ce nombre pour tuer le processus. Soyez prudent tout en tuant le processus. Vous pourriez casser quelque chose si vous tuez le mauvais processus. Pour tuer un processus, vous utiliserez la killcommande, qui envoie un signal au processus. Le signal indique ce que le processus devrait faire. Par exemple, envoyer un -1au processus lui demandera de recharger le fichier de configuration; envoyer un -2est équivalent à appuyer sur les touches Ctrl + C sur ce processus; -9obligera le noyau à abandonner le processus sans le communiquer au processus.

En supposant que ps -u whoamiretourne quelque chose comme

  PID TTY          TIME CMD
 4333 pts/1    00:00:00 fish
 4335 ?        00:00:00 fishd
 4816 ?        00:00:00 intellij
 4868 ?        00:50:42 java
 4939 ?        00:00:19 fsnotifier64
 7667 ?        02:49:08 firefox
 7698 ?        00:00:00 unity-webapps-s

Et vous vouliez tuer le firefoxprocessus par son identifiant de processus, puis vous le feriez:

kill -1 7667

Vous devrez ensuite réexécuter la même pscommande et vérifier si le processus est toujours en cours d'exécution. Si cela fonctionne toujours, alors faites un

kill -2 7667

travailler votre chemin jusqu'à -9.

Pour supprimer tous les processus lancés par votre compte, entrez kill <level> -1. Comme avant: travaillez votre chemin jusqu'à -9.

Si vous connaissez le nom du processus, vous pouvez simplement aller killall <processname>, où est ce que vous essayez de tuer. Par exemple: killall fish(le poisson, en ce sens, est le shell interactif convivial).

La documentation pour killallpeut être trouvée ici: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html

Alexandre Santos
la source
3

Avec cette application, vous pouvez voir les listes de programmes

installer htop

sudo apt-get install htop

pour voir le processus et tuer le processus Vous pouvez l'installer et simplement supprimer

entrez la description de l'image ici

Reza Bojnordi
la source
2

... Tous les processus sous Linux répondent aux signaux. Les signaux sont un moyen au niveau os de dire aux programmes de mettre fin ou de modifier leur comportement.

Comment envoyer des signaux de processus par PID

Le moyen le plus courant de transmettre des signaux à un programme consiste à utiliser la commande kill.

Comme on pouvait s'y attendre, la fonctionnalité par défaut de cet utilitaire consiste à tenter de tuer un processus:

kill PID_of_target_process

Cela envoie le signal TERM au processus. Le signal TERM indique au processus de bien vouloir terminer. Cela permet au programme d'effectuer des opérations de nettoyage et de sortir en douceur.

Si le programme se comporte mal et ne se ferme pas lorsqu'il reçoit le signal TERM, vous pouvez le faire passer en transmettant le signal KILL:

kill -KILL PID_of_target_process

C'est un signal spécial qui n'est pas envoyé au programme.

Au lieu de cela, il est donné au noyau du système d'exploitation, qui ferme le processus. Ceci est utilisé pour contourner les programmes qui ignorent les signaux qui leur sont envoyés ...

jackal404258
la source
2

J'ai écrit un petit script que j'ai écrit pour tuer (dans mon cas) Skype:

kill -s 9 `ps aux | grep skype | head -n 1 | cut -f4 -d" "`

Mais j’ai trouvé que, dans la mesure où cela fonctionnait à l’époque, cela ne fonctionnait pas le lendemain, car le pid avait une longueur différente et que la quantité d’espaces était différente.

Puis je suis tombé sur ce site et j'ai essayé

pgrep -l -u justin

qui sort commodément les processus dans le format

[pid] [name]

J'ai donc ajusté mon code dans le script à ceci:

kill -s 9 `pgrep -l -u justin | grep skype | cut -f1 -d" "`

Cela signifie que tous les processus en justincours sont en cours d'exécution (ils peuvent être remplacés par n'importe quel nom d'utilisateur), puis greprecherchés skype(ceci peut être modifié en votre processus), puis est dirigée vers cette ligne, cutqui lit ensuite uniquement le PID et l'utilise enfin. PID dans la killcommande pour le tuer.

justingiffard
la source
Vous auriez pu laisser tomber le -l, et couru pgrep -u justin skype, et tuer: pkill -u justin skype(ou pkill -KILL -u justin skypeenvoyer SIGKILL).
muru
C'est vraiment la manière Unix. Bravo à vous deux. Je vais utiliser celui-ci.
SDsolar
1

Voici un script python simple que j'ai écrit, killProcess.py, qui accepte n'importe quoi en entrée et le tue.

J'ai écrit ce script parce que j'ai beaucoup de processus de python ou de nœuds que je veux tuer individuellement et par programme. Je ne peux pas utiliser "killall python" car cela arrêtera les processus dont j'ai besoin pour continuer à fonctionner.

Nommez le fichier "killProcess.py", puis ajoutez le nom du script que vous souhaitez arrêter. Exemple: python killProcess.py runnablePoller.py va tuer le fichier runnablePoller.py.

import os;
import sys;
for arg in sys.argv:
    if(arg!="killProcess.py"):
        process=arg;
        print(process);
processes =os.popen("ps -ef | grep "+process).read();
processes=processes.split("\n");
processes=processes[0].split(" ");
#print(processes);
for p in processes:
    try:
        pid=int(p);
        print(pid); 
        break;
    except:
        continue;

os.system("kill "+str(pid));
Nick Carraway
la source
0

J'ai utilisé la procédure suivante pour tuer un processus dans Ubuntu ::

Étape 1: Obtenez le pid du processus en utilisant grep ou vous pouvez utiliser -C also ::

ps aux | -C 'filename'

ou

ps -ef | -C 'filename'

ou

ps aux | grep 'filename'

ou

ps -ef | grep 'filename' 

Étape 2: notez le numéro de pid.

Étape 3: Utilisez la commande 'kill' avec le numéro de pid:

kill pidnumber
Akash Kandpal
la source
0

Ctrl+ Alt+ Deletepeut être configuré pour vous donner accès au gestionnaire de tâches, d'où il est facile de tuer des processus en quelques clics, et pour moi, moins d'exigences pour se souvenir des commandes qui pourraient être dommageables si elles sont mal faites:

http://ubuntuhandbook.org/index.php/2013/07/use-ctrl-alt-del-task-manager-ubuntu/

https://www.itsmarttricks.com/a-guide-to-kill-pkill-and-killall-commands-to-stop-the-process-in-linux-kill-process-linux/

Cedric Eveleigh
la source