Як вбити процес за допомогою однієї команди?


18

Я хочу вбити процес, знайшовши id за один крок.

В даний час я використовую ці дві команди:

pidof <name>
kill <#number_which_is_result_of_command>

Як я можу написати одну команду для цього?


Яка оболонка? bash? tcsh? ...?
Левон

2
Ви можете шукати заміну команд у документації оболонки.
девіанткарот

2
Я вбиваю речі візуально за допомогою: xkill. Просто введіть xkill у Терміналі, перемістіть курсор на додаток, який ображає, і натисніть кнопку. Gone

1
@arochester Це працює, але обмежується лише середовищем GUI, killрізноманітність команд працюватиме з консолі (плюс може бути автоматизована у сценаріях тощо). І все-таки добре, щоб люди xkillточно знали цей варіант.
Левон

Якщо одна з відповідей нижче вирішила вашу проблему, будь ласка, подумайте про її прийняття, натиснувши галочку біля відповіді. Він нагородить обидві сторони деякими точками повторення та позначить цю проблему як вирішену.
Левон

Відповіді:


18

Ви також можете вбивати процеси за назвою:

Приклад:

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

@Levon Ви впевнені? Підказка: Чи вийде, якщо ви перейдете pkillна kill?
Мікель

Не вийде, Левоне. kill -9 вбиває процес своїм PID, а pkill -9 вбиває процес за його іменем.
fromnaboo

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

3
-1 за пропозицію використовувати SIGKILL (-9), що є поганою екологією процесу. Завдяки SIGKILL дані в процесі не змиваються, створюючи можливу пошкодження даних.
Арседж

6
Запропонувати killallДУЖЕ ДУЖКІ поради. Це робить дуже різні речі залежно від того, на якому Unix / Linux ви працюєте.
MikeyB

13

Щоб відповісти на ваше конкретне питання за допомогою набору команд, використовуйте:

kill `pidof <name>`

Оскільки pidof <name>дає вам PID процесу, який ви намагаєтеся вбити, ви можете використовувати його з комутаторами командного рядка, такими як -9і т. Д.

Випробуваний за допомогою bashта tcsh.


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

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

Просто спробував tcsh і ти маєш рацію. Не знав цього. Дякую за інформацію!
Рудольф Адамкович

7

Повинен бути коментар до Левона, але мені не вистачає представника для цього:

Залишивши обговорення у прийнятій відповіді на це питання: /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, вибачте.
Ghillie Dhu

1

Ви також можете скористатися killallкомандою для вбивства конкретного процесу.

killall vim
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.