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 causés à partir de ma machine Windows et j’ai donc téléphoné sur le 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.
Pour tuer tous les processus que vous êtes autorisé à tuer, lancez simplement la commande
kill -15 -1
ou kill -9 -1
en fonction du comportement souhaité (utilisez man kill
pour plus de détails)
Pour tuer un processus spécifique, par exemple, firefox, exécutez simplement
pkill firefox
ou killall firefox
en fonction du comportement souhaité: 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
Utilisez Sudo kill <pid>
ou Sudo killall <process-name>
Essayons quelque chose de plus:
Sudo apt-get install htop
La commande top
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 CPU en haut.
htop
affiche les mêmes informations avec une présentation plus facile à comprendre. Il vous permet également de sélectionner des processus avec les touches fléchées et d'effectuer des actions, telles que les tuer ou modifier leur priorité, avec le bouton F clés.
Vous pouvez utiliser
ps -ax | grep application name
Si votre recherche de type firefox dans le terminal, telle que ps -ax | grep firefox
, indique l'ID de processus de l'application correspondante. Vous pouvez arrêter cette application à l'aide de la commande kill
si le processus id = 1317,
kill -9 1317
Je voudrais utiliser xkill
. Entrez xkill
dans un terminal et cliquez sur dans la fenêtre ou entrez xkill
et l'ID du processus pour le terminer.
Plus d'informations sur xkill
sur x.org.
Pour essayer de tuer tous les processus appartenant à un utilisateur username
name__, exécutez:
pkill -U username
Je diviserais votre problème en 2 parties:
1) Comment puis-je trouver les processus commencés par moi? Lance ça:
ps -u `whoami`
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.
Ceci listera tous les processus pouvant être supprimés par votre compte.
2) La commande ps
listera le numéro du processus, le TTY, l'heure et 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 commande kill
name__, qui envoie un signal au processus. Le signal indique ce que le processus doit faire. Par exemple, envoyer un -1
au processus lui demandera de recharger le fichier de configuration; envoyer un -2
équivaut à appuyer sur les touches Ctrl + C de ce processus; -9
amènera le noyau à abandonner le processus sans le communiquer au processus.
Supposons que ps -u whoami
renvoie 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 processus firefox
par son identificateur de processus, puis vous feriez:
kill -1 7667
Ensuite, vous réexécuteriez la même commande ps
et vérifieriez si le processus était toujours en cours d'exécution. Si cela fonctionne toujours, alors faites un
kill -2 7667
en travaillant jusqu'à -9
.
Pour supprimer tous les processus lancés par votre compte, entrez kill <level> -1
. Comme auparavant: travaillez 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 killall
est disponible à l’adresse suivante: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html
... 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 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 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 lorsque le signal TERM est donné, nous pouvons escalader le signal 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 ...
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, même si 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 a pour effet de canaliser tous les processus que justin
est en cours d'exécution (qui peut être remplacé par n'importe quel nom d'utilisateur) vers grep
qui recherche skype
(cela peut être changé en votre processus), puis dirige cette ligne vers cut
qui lit ensuite le PID et utilise finalement ce PID dans la commande kill
pour le tuer.
Voici un simple script python que j'ai écrit, killProcess.py, qui accepte n'importe quoi comme entrée et le tue.
J'ai écrit ce script car j'ai beaucoup de processus python ou de nœuds que je souhaite supprimer 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));
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
Ctrl+Alt+Delete peut être configuré pour vous donner accès au gestionnaire de tâches, à partir duquel il est facile de tuer des processus en quelques clics, et pour moi, moins d’obligation de se souvenir des commandes qui pourraient être dommageables si elles étaient mal faites:
http://ubuntuhandbook.org/index.php/2013/07/use-ctrl-alt-del-task-manager-ubuntu/