
Инструмент командной строки для вывода в стиле pstree на macOS с дополнительными возможностями захвата PID

О программе
Прочитать всё о концепции TrueTree можно здесь
TrueTree — это больше, чем просто команда pstree для macOS. Она используется для отображения дерева процессов текущих запущенных процессов, используя иерархию, построенную на дополнительных pid, которые можно собрать из операционной системы. Стандартное дерево процессов в macOS, которое можно построить с помощью традиционных pid и ppid, на macOS малополезно из-за всей XPC-коммуникации. Подавляющее большинство процессов в итоге имеют родительским процессом launchd. Однако TrueTree отображает дерево процессов, которое должно быть полезно специалистам по реагированию на инциденты, охотникам за угрозами, исследователям и всем, кто находится между ними!
Крупное обновление: Из-за постоянно меняющихся возможностей macOS, начиная с macOS 11, некоторые функции работают не совсем так, как раньше, когда я писал оригинальный пост в блоге о TrueTree. Apple представила новый процесс "runningboardd", который оказывается истинным родителем многих процессов. Чтобы обойти это, TrueTree был обновлён для использования фреймворка Application Services, что позволило получать истинного родителя в некоторых сценариях. Однако это больше не позволяет получить истинный родительский процесс, если этот родительский процесс завершился. Это затрудняет определение некоторых истинных родителей, таких как команда "open". Небольшая цена за то, чтобы TrueTree продолжал работать в разных версиях macOS. Некоторые другие признаки истинного родителя часто можно найти внутри вывода launchctl procinfo. Это может быть учтено в будущем
Новое в TrueTree 0.9: Для запуска TrueTree больше не требуются права root. Без root ответственные pid оцениваются по коалициям процессов, а сетевые соединения ограничены вашими собственными процессами. Коалиция — это группа связанных процессов, которые ядро macOS отслеживает вместе, например приложение и запускаемые им вспомогательные процессы и XPC-сервисы.
При запуске от имени root TrueTree использует оригинальный метод libquarantine, который является наиболее надёжным. Чтобы вместо этого использовать метод коалиций от имени root, передайте --acquire-responsible-via-coalition .
Также добавлены новые тесты, включая тесты коалиций, которые защищают от того, что macOS незаметно изменит приватный интерфейс ядра, от которого зависит TrueTree.
./TrueTree -h
--nocolor -> Не применять цветовое кодирование к элементам вывода
--timeline -> Сортировать и выводить все процессы по их временной метке создания
--timestamps -> Включать временные метки процессов
--standard -> Выводить стандартное Unix-дерево вместо TrueTree
--sources -> Выводить источник, откуда был получен родитель каждого процесса
--nonetwork -> Не выводить сетевые соединения
--nopid -> Не выводить pid рядом с каждым процессом
--nopath -> Выводить только имя процесса вместо полных путей
--json -> Выводить JSON вместо текста (работает с --standard, --timeline и -o)
--version -> Выводить номер версии TrueTree
--acquire-responsible-via-coalition
Оценивать ответственные pid по коалициям процессов вместо libquarantine.
Коалиции всегда используются при запуске не от имени root.
-o -> вывод в файл
./TrueTree
Отображает расширенное дерево процессов с использованием концепции TrueTree

./TrueTree --standard
Для вывода дерева на основе стандартных pid и ppid используйте --standard

./TrueTree --timestamps
Для вывода в любом из форматов с добавленным временем создания процесса используйте опцию --timestamps

./TrueTree --sources
Чтобы показать, откуда был получен каждый родительский pid, используйте опцию --sources

./TrueTree --timeline
Не собирает дерево. Вместо этого просто выводит процессы, отсортированные по времени создания
