OK, сильно отредактирован от моего первоначального ответа.
Во-первых, прямой ответ:
ps -ef | grep -v grep |grep /back/mysql | perl -lane 'kill 9, $F[1]'
Done.
Но grep | grep | perl
- это глупый способ сделать это. Моя первоначальная реакция: «Зачем вам нужен Perl?» Я обычно делаю это с awk | kill
, сохраняя Perl для более сложных задач, которые оправдывают дополнительный ввод:
ps -ef | awk '/\/back\/mysql/ {print $2}' | xargs kill -9
(Обратите внимание, что AWK не окажется, потому что строка «\/назад \/MySQL» Безразлично» т соответствует шаблону/\/назад \/MySQL /)
Вы можете, конечно, использовать Perl вместо AWK:
ps -ef | perl -lane 'print $F[1] if /\/back\/mysql/' | xargs kill -9
(я намеренно использовал наклоняясь зубочистками вместо другого разделителя поэтому процесс Wouldn не найти себя, как в случае awk.)
Вопрос затем переключается с «Зачем вам нужен perl?». к "Зачем вам нужен Grep/AWK/убить?":
ps -ef | perl -lane 'kill 9, $F[1] if /\/back\/mysql/'
Я узнал небольшой трюк, чтобы избавиться от лишнего grep, попробуйте 'grep/back/mysq [l]'. – gpojd
Разве mysql не хранит ваш pid для вас? Почему вы пытаетесь сделать это таким образом? –
Как правило, избегайте делать «убить -9» на все, что вам не нужно! Этот сигнал нельзя поймать и, следовательно, не дает процессу шанса (если это указано) для очистки временных файлов и разделов разделяемой памяти. Начните с 'kill -hup' и эскалации по мере необходимости. Чтобы найти базовое имя процесса, посмотрите на параметр '-o cmd'' ps' в качестве примечаний ikegami ниже.Более нечеткое совпадение со всей строкой 'ps' может быть опасно, если сделано небрежно, поскольку вы можете сопоставить неправильную вещь (вещи). – JRFerguson