Как убить процесс с помощью одной команды?


18

Я хочу убить процесс, после нахождения идентификатора за один шаг.

В настоящее время я использую эти две команды:

pidof <name>
kill <#number_which_is_result_of_command>

Как я могу написать одну команду, чтобы сделать это?


Какая оболочка? bash? tcsh? ...?
Левон

2
Вы можете найти подстановку команд в документации вашей оболочки.
deviantkarot

2
Я убиваю вещи визуально, используя: xkill. Просто введите xkill в Терминале, переместите курсор на приложение-нарушитель и нажмите кнопку. Ушел

1
@arochester Это работает, но ограничено средами графического интерфейса, killразличные команды будут работать с консоли (плюс может быть автоматизировано в сценариях и т. д.). Все еще хорошо, чтобы люди знали об этой xkillвозможности наверняка.
Левон

Если один из ответов ниже решил вашу проблему, пожалуйста, примите его, нажав на галочку рядом с ответом. Это вознаградит обе стороны некоторыми точками повторения и пометит эту проблему как решенную.
Левон

Ответы:


18

Вы также можете убить процессы по имени:

Пример:

pkill vim  # kill all processes containing vim in the process name

@ Левон Ты уверен? Подсказка: это сработает, если вы перейдете pkillна kill?
Микель

Это не сработает, Левон. kill -9 убивает процесс по его PID, а pkill -9 убивает процесс по его имени.
fromnaboo

6
Без -oили -n, pkillтакже убивает все процессы сопоставления, а не только один.
Микель

3
-1 за предложение использовать SIGKILL (-9), что является плохой экологией процесса. С SIGKILL данные внутри процесса не сбрасываются, что может привести к повреждению данных.
Arcege

6
Предлагаю killallочень плохой совет. Это делает очень разные вещи в зависимости от того, на каком Unix / Linux вы работаете.
MikeyB

13

Чтобы ответить на ваш конкретный вопрос с помощью набора команд, используйте:

kill `pidof <name>`

Так как pidof <name>дает вам PID процесса, который вы пытаетесь убить, вы можете использовать его с переключателями командной строки, такими как -9etc.

Проверено с bashи tcsh.


9
Кстати, kill $(pidof <name>)более совместим (POSIX) и может использоваться внутри другого блока подстановки команд .
Рудольф Адамкович

@RudolfAdamkovic Я согласен, это лучший вариант, наверняка в сценариях. Однако для быстрой набранной команды я считаю, что проще использовать обратные галочки ... плюс она работает с обоими общими оболочками (bash и tcsh) .. Я не смог заставить $версию работать с tcsh.
Левон

Только что попробовал с tcshи ты прав. Не знал этого. Спасибо за информацию!
Рудольф Адамкович

7

Должен быть комментарий Левона, но мне не хватает представителя здесь, чтобы сделать это:

Riffing на обсуждение в принятом ответе на этот вопрос: /server/397762/how-to-make-folders-00-99-with-a-single-command-in-ubuntu

Я бы сказал, что было бы предпочтительнее (или, по крайней мере, полезно / понятнее для последующих поисковиков) запустить

kill $(pidof <name>)

Дополнительная ссылка на $ () против ``: http://mywiki.wooledge.org/BashFAQ/082


+1 за включение нижней ссылки особенно. Я получил похожий комментарий от @RudolfAdamkovic, смотрите мой ответ ему. Вы знаете версию этого, которая работает с tcsh? (Я до сих пор нахожу, что быстрые команды в оболочке легче вводить обратными галочками :)
Левон

Я работал только с bash (в Linux) и ksh (в HP-UX); еще не пересекались с tcsh, извините.
Гилли Дху

1

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

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