CentOS - команда killall (вбивати всі процеси з іменами, що відповідають заданому шаблону)


18

Нещодавно я почав використовувати CentOS. Я спробував скористатись killallутилітою, але виявив, що вона відсутня, зі мною було отримано command not foundповідомлення, коли я намагався її використати. Як я можу отримати цю функціональність у своїй системі, щоб я міг, наприклад, знищити всі процеси, імена яких відповідають шаблону?

Відповіді:


24

pkillУтиліта є набагато кращою альтернативою killall. killallне є портативним, оскільки поведінка команди сильно відрізняється в ОС. pkillє портативним і поводиться скрізь однаково. Це також набагато гнучкіше, оскільки забезпечує безліч різних способів узгодження процесів. Він також поділяє таку саму поведінку та аргументи відповідності, що і pgrepутиліта , яка дозволяє бачити, які процеси будуть відповідати та сигналізуватися, не фактично їх сигналізуючи.

Використання: pkill foo(що було б таким же, як killall foo)


2
Я думаю, що ця відповідь була б краще, якби вона показала, як саме можна використовувати її для заміни killall.
exebook

Не всі реалізації pgrepпідтримки підтримують -qможливість бути тихими.
Кусалаланда

Також було б краще, якби воно описало, до якого пакету входить
Xalorous

21

PSmisc містить killallутиліту разом з кількома іншими невеликими корисними інструментами. Його можна додати просто за допомогою

yum install psmisc

2

На додаток до рішення Патріка, функціональність команди killall може бути повторена наступним чином:

pkill -15 [process name]

Наприклад, щоб знищити всі запущені процеси запам’ятовування, слід написати наступне:

pkill -15 memcached

'-15' - це числове представлення сигналу SIGTERM POSIX. Щоб отримати список усіх POSIX-сигналів, які можуть бути запущені в процесі, скористайтеся такою командою:

kill -l

Це поверне наступну таблицю:

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL      10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

Додаткову інформацію про те, що робить кожен сигнал, можна знайти тут .


Зверніть увагу, що сигнал killallпередає TERMсигнал за замовчуванням, ні KILL.
Кусалаланда


1
Гарна думка. Відредаговано.
Даніель Кей

Чому ви редагували просто, щоб видалити "Сподіваюся, це допомагає!" з кінця, @Rui F Ribeiro? Чи існують правила громади проти намагань бути ввічливими?
Даніель Кей

0

Я б міг уявити, що системна альтернатива є systemctl halt(скорочено systemctl isolate halt.target)?

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