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]

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

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.
Кусалананда
См. Также unix.stackexchange.com/questions/281439/…
Кусалананда
1
Хорошая точка зрения. Ред.
Даниэль Кей
Почему вы отредактировали просто чтобы удалить "Надеюсь, это поможет!" с конца, @Rui F Рибейро? Существуют ли правила сообщества против попыток быть вежливым?
Даниэль Кей
0

Я полагаю, системная альтернатива systemctl halt(сокращение systemctl isolate halt.target)?

Xalorous
источник