Как убить процессы в Ubuntu?


149

Как убить все процессы, запущенные моей учетной записью без полномочий root?

У меня есть несколько вращающихся процессов smbd, которые я вызвал на своей машине с Windows, и поэтому я подключился к серверу linux и хочу уничтожить эти вращающиеся процессы. У меня нет прав для перезапуска служб или перезагрузки компьютера.

Ответы:


172

Чтобы убить все процессы, на которые у вас есть разрешение, просто запустите команду

kill -15 -1или в kill -9 -1зависимости от желаемого поведения (используйте man killдля деталей)

Чтобы убить определенный процесс, скажем, Firefox, просто запустите

pkill firefoxили в killall firefoxзависимости от желаемого поведения: в чем разница между killall и pkill?

Если вы хотите увидеть, какие процессы запущены, используйте команду

ps -ef

Если вы хотите посмотреть все процессы пользователя bob, это может помочь

pgrep -l -u bob

или же

ps -ef | grep bob

4
Я бы начал с того kill -15 -1, что переходил, только kill -9 -1если есть упрямые процессы, и я знаю, что делаю . Случайное уничтожение процессов, которые могут находиться в середине транзакции базы данных, - это не то, что нужно делать так небрежно, как вы предлагаете.
Саймон Рихтер

Кроме того, процесс Firefox назван firefox-bin.
Саймон Рихтер

Нет, вы можете попробовать запустить killall firefoxи killall firefox-binувидеть , что работает. Я согласен с вашим первым комментарием.
ste_kwr

Спасибо @ste_kwr, работал с вашими инструкциями, после двух дней борьбы ...
Java.beginner

Преимущество отсутствия необходимости в PID заключается в работе cron. Использование имен работает чисто.
SDsolar

56

Используйте sudo kill <pid>илиsudo killall <process-name>


3
Я не думаю, что это имеет отношение к этому вопросу, вы используете sudo - у OP нет таких привилегий, как упомянуто в вопросе.
pl1nk

ОП не имеет привилегий, пожалуйста, отредактируйте свой ответ, или он может быть удален или преобразован в комментарий как «не ответ».
Иш

Если у него нет привилегий, ему просто нужно сделать kill <pid> или killall <process-name>. Я просто использовал его в своей учетной записи без полномочий root, я бы не смог этого сделать, если бы не этот ответ. ,
Шайлин Ортиз

21

Давайте попробуем что-то еще:

sudo apt-get install htop 

Команда topявляется традиционным способом просмотра использования ресурсов вашей системы и просмотра процессов, которые занимают большинство системных ресурсов. В верхней части отображается список процессов, причем те, которые используют наибольшее количество процессоров, находятся вверху.

htopотображает ту же информацию в более понятном формате. Он также позволяет выбирать процессы с помощью клавиш со стрелками и выполнять действия, такие как их уничтожение или изменение их приоритета, с помощью Fклавиш.


16

Вы можете использовать

ps -ax | grep application name 

Если ваш поиск типа firefox в терминале нравится ps -ax | grep firefox, он показывает идентификатор процесса соответствующего приложения. Вы можете остановить это приложение по killкоманде, если идентификатор процесса = 1317,

kill -9 1317

13

Я бы использовал xkill. Войдите xkillв терминал и нажмите в окне, или введите xkillи идентификатор процесса, и он будет завершен.

Узнайте больше о xkillна x.org.


1
Используйте его вторым по частоте после pkill и любите его. +1
Сергей Колодяжный

xkill не работает в этом случае ...
PythoNic

@PythoNic в каком случае это?
Алвар

1
Он хочет убить неоконный процесс, который также не связан с X-сервером, как мне кажется ... (В любом случае, хороший инструмент.)
PythoNic

9

Чтобы попытаться уничтожить все процессы, принадлежащие пользователю username, выполните:

pkill -U username

7

Я бы разбил вашу проблему на 2 части:

1) Как мне найти процессы, запущенные мной? Запустите это:

ps -u `whoami`

На whoamiтот случай, если вы не знаете имя учетной записи, которую вы используете, в противном случае просто введите имя учетной записи без обратных кавычек.

Это перечислит все процессы, которые могут быть удалены вашей учетной записью.

2) Команда psперечислит номер процесса, TTY, Time и CMD. Идентификатор процесса - это первый столбец. Используйте этот номер, чтобы убить процесс. Будьте осторожны, убивая процесс. Вы можете что-то сломать, если убьете неправильный процесс. Чтобы убить процесс, вы будете использовать killкоманду, которая отправляет сигнал в процесс. Сигнал указывает, что должен делать процесс . Например, отправка -1в процесс попросит его перезагрузить файл конфигурации; отправка -2эквивалентна нажатию Control + C в этом процессе; -9заставит ядро ​​отказаться от процесса, не сообщая об этом процессу.

Предположим, что ps -u whoamiвернул что-то вроде

  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

И вы хотите убить firefoxпроцесс по его идентификатору процесса, тогда вы должны сделать:

kill -1 7667

Затем вы повторно запустите ту же psкоманду и проверите, запущен ли еще процесс. Если он все еще работает, то сделайте

kill -2 7667

пробираюсь до -9.

Чтобы убить все процессы, запущенные вашей учетной записью, введите kill <level> -1. То же, что и раньше: продвигайся до -9.

Если вы знаете название процесса, вы можете просто пойти туда killall <processname>, где вы пытаетесь убить. Например: killall fish(рыба в этом смысле - Дружественная Интерактивная Оболочка).

Документацию для killallможно найти здесь: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html


3

С помощью этого приложения вы можете просматривать списки программ

установить htop

sudo apt-get install htop

Вы можете установить его и просто удалить.

введите описание изображения здесь


2

... Все процессы в Linux реагируют на сигналы. Сигналы - это способ информирования программ о прекращении или изменении их поведения на уровне ОС.

Как отправлять сигналы процессов по PID

Наиболее распространенный способ передачи сигналов программе - команда kill.

Как и следовало ожидать, по умолчанию эта утилита пытается убить процесс:

kill PID_of_target_process

Это отправляет сигнал TERM процессу. Сигнал TERM сообщает процессу прекратить. Это позволяет программе выполнять операции очистки и плавно завершать работу.

Если программа работает неправильно и не выходит из системы при получении сигнала TERM, мы можем увеличить сигнал, передав сигнал KILL:

kill -KILL PID_of_target_process

Это специальный сигнал, который не отправляется в программу.

Вместо этого оно передается ядру операционной системы, которое завершает процесс. Это используется для обхода программ, которые игнорируют отправленные им сигналы ...


2

Я написал небольшой сценарий, который я написал, чтобы убить (в моем случае) Skype:

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

Но я обнаружил, что столько, сколько это работало тогда, это не сработало на следующий день, потому что pid был другой длины, а количество пробелов там было другим

Потом наткнулся на этот сайт и попробовал

pgrep -l -u justin

который удобно выводит процессы в формате

[pid] [name]

Поэтому я настроил свой код в скрипте так:

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

То, что это делает, - передает все процессы justin, запущенные (которые могут быть изменены на любое имя пользователя), к grepкоторым выполняется поиск skype(это можно изменить для вашего процесса), а затем передает эту строку, в cutкоторую затем читает только PID, и, наконец, использует это PID в killкоманде, чтобы убить его.


Вы могли бы бросить -l, и бежать pgrep -u justin skype, и убить: pkill -u justin skype(или pkill -KILL -u justin skypeотправить SIGKILL).
Муру

Это определенно путь Unix. Молодцы вы оба. Я буду использовать это.
SDsolar

1

Вот простой скрипт на python, который я написал, killProcess.py, который будет принимать все в качестве входных данных и уничтожать их.

Я написал этот сценарий, потому что у меня есть много процессов на Python или узлах, которые я хочу уничтожить индивидуально и программно. Я не могу использовать «killall python», потому что он остановит процессы, которые мне нужны для продолжения работы.

Назовите файл «killProcess.py», затем добавьте имя скрипта, который вы хотите остановить. Например: python killProcess.py runnablePoller.py уничтожит файл 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));

0

Я использовал следующую процедуру, чтобы убить процесс в Ubuntu:

Шаг 1: Получить pid процесса с помощью grep или вы также можете использовать -C также:

ps aux | -C 'filename'

или же

ps -ef | -C 'filename'

или же

ps aux | grep 'filename'

или же

ps -ef | grep 'filename' 

Шаг 2: Запишите номер пида.

Шаг 3: Используйте команду kill вместе с номером pid как:

kill pidnumber

0

Ctrl+ Alt+ Deleteможет быть установлен, чтобы дать вам доступ к диспетчеру задач, откуда легко убить процессы с помощью пары щелчков, и для меня, меньше требований для запоминания команд, которые могут быть повреждены, если сделано неправильно:

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/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.