Убить все процессы, соответствующие строке «myProcessName»:
ps -ef | grep 'myProcessName' | grep -v grep | awk '{print $2}' | xargs -r kill -9
Источник: http://www.commandlinefu.com/commands/view/1138/ps-ef-grep-process-grep-v-grep-awk-print-2-xargs-kill-9
Что делает этот код?
ps -ef
создает список идентификаторов процесса на компьютере, видимом для этого пользователя. Инструмент труба grep фильтрует это для строк, содержащих эту строку. grep -v grep
говорит, что не совпадает с процессом, выполняющим поиск. Канал awk print говорит, что разделяет строки в пробелах по умолчанию и фильтрует их во второй столбец, который является нашим идентификатором процесса. Канал xargs запускает новый процесс для отправки всех этих pid на kill -9
, заканчивая их все.
Приведенный выше код плох, опасен, безобразен и хакер по нескольким причинам.
Если код, принудительно завершающийся, выполняет какие-либо операции с базами данных или защищает транзакции с маловероятными условиями гонки, то в течение некоторой доли процента атомарность этой транзакции будет нарушена, что приведет к неопределенному поведению. убить -9 не берет пленных. Если ваш код чувствителен к этому, попробуйте заменить часть xargs kill
переданным флагом, который запрашивает постепенное завершение работы, и только в случае отклонения этого запроса в крайнем случае kill -9
Существует ненулевая вероятность того, что вы случайно завершите работу операционной системы или вызвали неопределенное поведение в несвязанном процессе, что приведет к нестабильности всей системы, поскольку ps -ef
перечисляет все возможные процессы, которые могут существовать, а вы не можете убедитесь, что какая-то странная сторонняя библиотека разделяет имя вашего процесса, или что за время между чтением и выполнением kill -9 процессид изменился на что-то другое, и теперь вы случайно завершили какой-то случайный процесс, который не собирался делать.
Но, , если вы понимаете риски и контролируете их с очень уникальными именами, и у вас все в порядке с несколькими сброшенными транзакциями или случайным повреждением данных, тогда 99,9% времени будет хорошо. Если есть проблема, перезагрузите компьютер, убедитесь, что нет никаких конфликтов процессов. Именно из-за кода, подобного этому, сценарий технической поддержки: «Вы пытались перезагрузить компьютер» мем 5-го уровня.