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