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

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

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

13 ответов

Решение

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

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

Использование sudo kill <pid> или же sudo killall <process-name>

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

ps -ax | grep application name 

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

kill -9 1317

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

sudo apt-get install htop 

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

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

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

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

Я бы разбил вашу проблему на 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

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

pkill -U username

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

установить htop

sudo apt-get install htop

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

Я написал небольшой сценарий, который я написал, чтобы убить (в моем случае) 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 приказ убить его.

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

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

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

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

kill PID_of_target_process

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

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

kill -KILL PID_of_target_process

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

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

Вот простой скрипт на 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));

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/

Я использовал следующую процедуру, чтобы убить процесс в 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
Другие вопросы по тегам