Я выполняю следующую команду для остановки всего дерева процессов (т. Е. Родительского и всех его дочерних / внучестных процессов):
pkill -9 -s {sessionID}
Для получения sessionID я использую следующую команду:
[ 111]Иногда команда pkill убивает все дерево процессов, но иногда это не работает. Некоторые дочерние процессы все еще работают в фоновом режиме. Почему это так? Что-то не так в моей логике? Отсутствует ли какое-либо граничное условие? Есть ли ситуации, когда команда pkill не убивает дочерние процессы?
Дети процесса не должны обязательно совместно использовать его идентификатор сессии. Если бы это имело место, каждый , то процесс имел бы идентификатор 1 сессии. Можно также попытаться использовать идентификаторы группы процесса, но это также имеет то же ограничение.
Обход через дерево процесса имеет ограничение, что процессы с двойной развилкой не являются частью дерева больше, но могли бы быть Вашим лучшим выбором. Примеры этого метода: