Эквивалент 'End Process' в Linux

2998
John T

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

6

8 ответов на вопрос

14
John T

Вы ищете убить команду

чтобы завершить процесс "полностью", как вы просили, вы можете использовать kill следующим образом:

kill -9 PID 

хотя это может иметь нежелательные последствия и может оставить временные файлы и тому подобное, вам следует сначала попытаться отправить сигнал завершения:

kill -TERM PID 

где PIDидентификатор процесса, который вы хотите убить. Использование ключа -9 убьет процесс, несмотря ни на что, поэтому будьте осторожны с этим. Вы можете определить PID приложения, используя psкоманду. Если процесс зависает, он, вероятно, использует немало ресурсов, поэтому вы также увидите его в верхней части списка с помощью topкоманды. Системный монитор должен даже сказать вам PID.

Вы также можете использовать что-то вроде этого, чтобы определить PID:

ps -ax | grep program_name 

номер слева должен быть PID.

Всегда стоит упомянуть, что сначала нужно попробовать «kill -TERM». Это дает процессу возможность очистить после себя, в то время как «kill -KILL» заставляет ОС быстро завершать процесс. Временные файлы могут быть оставлены, и могут возникнуть другие мелкие неприятности. dmckee 15 лет назад 5
Полностью я предполагаю, что он имел в виду быстро, но это правда. John T 15 лет назад 0
Конечный процесс системного монитора GNOME фактически запускает `kill`. quark 15 лет назад 0
-TERM является значением по умолчанию; Вы можете просто напечатать kill PID bdonlan 15 лет назад 2
В Linux также есть команда killall, которая позволяет вам указать программу по ее имени, а не по ее PID. nos 15 лет назад 0
11
vava

Попробуйте xkill, есть апплет, который вы можете поместить на свою панель. Вы просто нажимаете на него, затем нажимаете на окно приложения, которое хотите убить, и оно мгновенно исчезает. Очень кстати.

+1, `kill -9` может иногда оставлять беспорядок и очень редко необходим. `xkill` и` killall`намного удобнее для повседневного использования и дают процессам возможность поймать сигнал и очистить. jtb 15 лет назад 2
это здорово, большое спасибо. 15 лет назад 0
7
jtimberman

Вы можете использовать kill, чтобы отправить желаемый сигнал идентификатору процесса. Вы можете найти идентификатор процесса с помощью pgrep и отправить сигнал названному процессу с помощью pkill . Шаблон, используемый для поиска процесса с помощью pgrep и pkill, обычно сопоставляется только с именем процесса. Укажите -f, чтобы проверить всю командную строку процесса. Начните с сигнала TERM (это значение по умолчанию, если сигнал не указан) перед использованием KILL ('9'), так как прямое завершение процесса может иметь нежелательные побочные эффекты.

Для примера, я буду использовать процесс dhclient3 в моей системе.

Старый путь, пс | Grep:

$ ps awux | grep dhclient3 root 2539 0.0 0.1 2200 220 ? S<s Jul28 0:00 dhclient3 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0 1000 12734 0.0 0.5 3184 732 pts/3 R+ 21:58 0:00 grep dhclient3 

Убить клиента:

$ kill -9 2539 

С помощью pgrep / pkill:

$ pgrep dhclient 2539 

С -f, чтобы указать шаблон в любом месте командной строки:

$ pgrep -f leases 2539 

Завершите процесс dhclient с помощью pkill (сигнал перед шаблоном -f):

$ pkill -f dhclient3 $ pkill -9 -f dhclient3 

О сигналах (со страницы man kill):

Сигнал по умолчанию для kill - TERM. Используйте -l или -L для просмотра списка доступных сигналов. Особенно полезные сигналы включают HUP, INT, KILL, STOP, CONT и 0. Альтернативные сигналы могут быть заданы тремя способами: -9 -SIGKILL -KILL. Отрицательные значения PID могут использоваться для выбора целых групп процессов; см. столбец PGID в выводе команды ps. PID -1 является особенным; он указывает на все процессы, кроме самого процесса kill и init.

Не пытайтесь использовать kill -9, лучше попросить процесс завершить корректно (сигнал -TERM по умолчанию) nos 15 лет назад 0
ах, pkill - это именно то, что я искал как более мощный киллолл, и поиск киллолла привел меня к этому вопросу. Суперпользовательские породы. Dickon Reed 14 лет назад 1
1
OscarRyz

Я обычно делаю:

ps -feax | grep "TaskNameHere" 

Который возвращает PID задачи

затем

kill -9 the_process_id 
-1 за неиспользование `kill -TERM the_process_id` Andrew Scagnelli 15 лет назад 0
@A. Сканелли :) OscarRyz 15 лет назад 0
1
codeLes

Мне нравится использовать killall, так как он позволяет вам просматривать имена запущенных процессов, а если вы используете zsh, это даст вам хороший список запущенных процессов. Начните с первой буквы процесса, который вы хотите убить, и нажмите Tab.

killall fi 

Если вы нажмете вкладку, то увидите, что у меня есть «Firefox». Повторите команду, и если она говорит, что ни один процесс не был убит, значит, вы выполнили свою задачу.

0
Gnoupi

Обратите внимание, что если зависший процесс является окном, у вас есть «кнопка» для добавления на панели инструментов Gnome, чтобы завершить процесс (вы нажимаете на него, затем в соответствующем окне)

редактировать: " Force Quit " это название

0
William Pursell

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

0
Bryce

Я также хотел бы добавить xkill. При вызове этого из терминала (или из командной строки запуска) курсор изменится на значок черепа или скрещенных костей или значок «X». И затем в следующий раз, когда вы нажмете на окно (любое окно), это приложение будет убито.

Я обнаружил, что эта команда немного более интуитивно понятна и удобна для пользователя.

Похожие вопросы