211 votes

Comment tuer les processus dans Ubuntu ?

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

J'ai quelques processus smbd tournants que j'ai provoqués à partir de ma machine Windows. Je me suis connecté par telnet au serveur linux et je veux tuer ces processus tournants. Je n'ai pas le droit de redémarrer les services ou la machine.

10voto

Alexandre Santos Points 495

Je diviserais votre problème en deux parties :

1) Comment puis-je trouver les processus que j'ai lancés ? Exécutez ceci :

ps -u `whoami`

El whoami est 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.

Vous obtiendrez la liste de tous les processus qui peuvent être supprimés par votre compte.

2) Le ps affichera le numéro du processus, le TTY, l'heure et le CMD. L'ID du processus est la première colonne. Utilisez ce numéro pour tuer le processus. Faites attention en tuant le processus. Vous pouvez casser quelque chose si vous tuez le mauvais processus. Pour tuer un processus, vous utiliserez la commande kill qui envoie un SIGNAL au processus. Le signal indique ce que le processus devrait faire. Par exemple, l'envoi d'un -1 au processus lui demandera de recharger le fichier de configuration ; l'envoi d'une commande de type -2 équivaut à appuyer sur la touche Control+C sur ce processus ; -9 provoquera l'abandon du processus par le noyau, sans le communiquer au processus.

Supposons que ps -u whoami a retourné 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 firefox par son identifiant de processus, alors vous le feriez :

kill -1 7667

Puis vous réexécuterez la même ps et vérifier si le processus est toujours en cours. S'il est toujours en cours d'exécution, faites un

kill -2 7667

en travaillant jusqu'à -9 .

Pour tuer tous les processus lancés par votre compte, entrez kill <level> -1 . Même chose que précédemment : travailler jusqu'à -9 .

Si vous connaissez le nom du processus, vous pouvez simplement aller à killall <processname> où le est ce que vous essayez de tuer. Par exemple : killall fish (le poisson, en ce sens, est l'Ami Interactif Shell).

Documentation pour killall peuvent être trouvés ici : http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html

9voto

Roel Van de Paar Points 237

Pour essayer de tuer tous les processus appartenant à un utilisateur username , cours :

pkill -U username

4voto

Reza Bojnordi Points 251

Cette application vous permet de consulter la liste des programmes

installer htop

sudo apt-get install htop

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

enter image description here

3voto

justingiffard Points 31

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 constaté que si cela fonctionnait à l'époque, cela ne fonctionnait pas le lendemain parce que le pid était d'une longueur différente et que le nombre d'espaces était différent.

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

pgrep -l -u justin

qui produit commodément des processus au format

[pid] [name]

J'ai donc modifié mon code dans le script comme suit :

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

Ce que ça fait, c'est que tous les processus justin est en cours d'exécution (qui peut être changé en n'importe quel nom d'utilisateur) pour grep qui recherche skype (ceci peut être modifié en fonction de votre processus) et passe ensuite cette ligne dans le fichier cut qui ne lit ensuite que le PID et utilise finalement ce PID dans le fichier kill pour le tuer.

2voto

jackal404258 Points 21

...Tous les processus sous Linux répondent à des signaux. Les signaux sont une façon de dire aux programmes de se terminer ou de modifier leur comportement.

Comment envoyer des signaux de processus par PID ?

La façon la plus courante de transmettre des signaux à un programme est d'utiliser la commande kill.

Comme vous pouvez vous y attendre, la fonctionnalité par défaut de cet utilitaire est de tenter de tuer un processus :

kill PID_of_target_process

Cela envoie le signal TERM au processus. Le signal TERM indique au processus de se 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 termine pas lorsqu'on lui donne le signal TERM, nous pouvons intensifier le signal en passant le signal KILL :

kill -KILL PID_of_target_process

Il s'agit d'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 arrête le processus. Ceci est utilisé pour contourner les programmes qui ignorent les signaux qui leur sont envoyés...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X