Есть ли способ убить дерево процессов с помощью терминала?
Под уничтожением дерева процессов я подразумеваю уничтожение всех потомков процесса вместе с самим процессом.
Я пометил этот вопрос htop
, потому что в последнее время я часто использую эту утилиту, и было бы здорово, если бы был простой способ убить дерево процессов внутри htop
(что-то лучше, чем просто выбор всех процессов в поддереве ).
Да, это можно сделать с помощью kill , я не уверен насчет htop . Например, если PGID процессов 65,78 и 90 равен 35, то вы можете принудительно убить их всех ()следующей командой :
sudo kill -9 -35
то есть
sudo kill -9 -<PGID>
Используя htop
, вы можете использовать F5 для отображения дерева процессов.
Если вы выберете процесс в верхней части дерева, которое хотите убить, затем нажмите F9 , а затем Enter , это закроет процесс и все дерево процессов за один раз.
На снимке экрана ниже это действие приведет к закрытию Chrome и всех подпроцессов.
Я попробовал это, и у меня сработало
Получить идентификатор процесса PID с помощью top или Htop (с лентой Htop F4 написать -имя --из -процесс -затем F5 для получения дерева )
используйте эту команду, у меня сработало
kill -TERM pid
Для этого в htop уже давно была функция, но она отсутствовала в руководстве до 2018 года :нажмите клавишу c
, чтобы выбрать выделенный в данный момент процесс, а также все его дочерние элементы. Затем операции, применяемые к выбранным процессам (, такие как уничтожение с помощью клавиши k
), применяются к процессу и его потомкам.
Однако это не атомарность. Если между моментом, когда вы нажмете c
, и моментом, когда ядро уничтожит все процессы, будут созданы новые дочерние процессы, они не будут уничтожены и, скорее всего, в конечном итоге будут повторно присоединены к процессу инициализации. Это связано с тем, что htop зацикливается на выбранных процессах и убивает их один за другим.
Я предложил патч для добавления функции уничтожения атомарной группы -в htop некоторое время назад, но реализация не была достаточно согласованной, чтобы ее можно было объединить. С его помощью можно атомарно убить целую группу процессов из htop. Это не совсем то же самое, что убить целое дерево, но, насколько я знаю, ядро не предоставляет никакого способа уничтожить произвольное дерево атомарно.