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

18

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

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

pidof <name>
kill <#number_which_is_result_of_command>

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

Cuil Yahoo
источник
Какая оболочка? bash? tcsh? ...?
Левон
2
Вы можете найти подстановку команд в документации вашей оболочки.
deviantkarot
2
Я убиваю вещи визуально, используя: xkill. Просто введите xkill в Терминале, переместите курсор на приложение-нарушитель и нажмите кнопку. Ушел
1
@arochester Это работает, но ограничено средами графического интерфейса, killразличные команды будут работать с консоли (плюс может быть автоматизировано в сценариях и т. д.). Все еще хорошо, чтобы люди знали об этой xkillвозможности наверняка.
Левон
Если один из ответов ниже решил вашу проблему, пожалуйста, примите его, нажав на галочку рядом с ответом. Это вознаградит обе стороны некоторыми точками повторения и пометит эту проблему как решенную.
Левон

Ответы:

18

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

Пример:

pkill vim  # kill all processes containing vim in the process name
fromnaboo
источник
@ Левон Ты уверен? Подсказка: это сработает, если вы перейдете 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
Karthikeyan.RS
источник