System V Unix AT&T не является открытым исходным кодом, таким образом, Вы не можете получить его.
От man htop
:
ИНТЕРАКТИВНЫЕ КОМАНДЫ
Тег пространства или снимает метку с процесса. Команды, которые могут воздействовать на несколько процессов, как "уничтожение", будут затем применяться по списку теговых процессов вместо в настоящее время выделяемого.
U Снимают метку со всех процессов (удалите все теги, добавленные с клавишей "Пробел").
F9, k "Уничтожают" процесс: отправляет сигнал, который выбран в меню одному или группе процессов. Если процессы были отмечены, отправляет сигнал во все теговые процессы. Если ни один не отмечен, отправляет к в настоящее время выбираемому процессу.
Не совсем ответ Вы искали, но близко. Можно также устранить группы процесса или детей с уничтожением, видеть:
https://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes
Из htop страницы справочника:
F5, t Структурный вид: организуйте процессы статусом родителя и расположение отношения между ними как дерево. Переключение ключа переключится между деревом и Вашим ранее выбранным представлением вида. Выбор представления вида выйдет из структурного вида.
Так поражает F5, и Вам, вероятно, придется затем поразить 't'. Это позволит Вам уничтожить все дерево.
Вы могли угнать htop
s
команда. В htop
, нажатие s
вызывает strace -p <the-pid-of-the-selected-process>
.
Затем то, что Вы могли сделать, создают a strace
команда, которая содержит что-то как:
#! /bin/sh -
pids=$(ps -eo pid= -o ppid= |
awk -v exclude="$PPID" -v pid="$2" '
function descends(p) {
if (p == exclude) return 0
if (p == pid) return 1
if (p <= 1) return 0
return descends(parent[p])
}
{ parent[$1]=$2 }
END {
for (p in parent)
if (descends(p))
print p
}'
)
if [ -z "$pids" ]; then
echo >&2 "No process found to kill"
else
echo >&2 Killing $pids
kill $pids
fi
И поместите его в некоторый каталог как ~/.htop-hijack
, и назовите htop как:
PATH=~/.htop-hijack:$PATH htop
Затем нажатие s
вызвал бы ту команду вместо strace
(необходимо нажать Esc для возврата к основному экрану впоследствии).
Для этого уже давно существовала функция, но она отсутствовала в руководстве до 2018 года. :Нажмите клавишу c
, чтобы выбрать выделенный в данный момент процесс, а также все его дочерние процессы. Затем операции, применяемые к выбранным процессам (, такие как уничтожение с помощью клавиши k
), применяются к процессу и его потомкам.
Но это не атомарно. Если между моментом, когда вы нажмете c
, и моментом, когда ядро уничтожит все процессы, будут созданы новые дочерние процессы, они не будут уничтожены и, скорее всего, в конечном итоге будут повторно присоединены к процессу инициализации. Это связано с тем, что htop зацикливается на выбранных процессах и убивает их один за другим.
Некоторое время назад я предложил патч для добавления функции уничтожения атомарной группы -в htop, но реализация не была достаточно согласованной, чтобы ее можно было объединить. С его помощью можно атомарно убить целую группу процессов из htop. Это не совсем то же самое, что убить целое дерево, но, насколько мне известно, ядро не предоставляет никакого способа уничтожить произвольное дерево атомарно.