Intereting Posts
Запустить сценарий в неинтерактивной оболочке? VGA и DVI, установите консоль ядра по умолчанию на один Правильное место для пользовательских переменных среды, если вы не используете диспетчер отображения попытка добавить текст до и после некоторого текста Есть ли веб-сайт для поиска в содержимом файлов установок по умолчанию для разных дистрибутивов Linux? Вход в сеанс RDP / S Обратное совпадение в sed, замените противоположное тому, что было найдено Установка Chrome Linux из загрузки PXE Можно ли узнать, сколько места и времени занимает установка какого-либо приложения из источника? Запретить закрытие панели / windows после завершения команды – tmux Файл Dockerfile WORKDIR также сохраняется на изображении Как заставить медиакодеки работать в VLC Проблемы с Python в CentOS – ошибка загрузки общих библиотек – libpython2.7.so.1.0 Создайте загрузочную постоянную систему USB Livesystem для UEFI Есть ли графический инструмент sudo (kdesudo, gksudo, su-to-root, …), который работает без пароля?

Инструмент стиля Solaris ptree для Linux

Я ищу инструмент Linux, который будет печатать тот же результат, что и Solaris ptree. Например:

# ptree 538 538 /usr/lib/ssh/sshd 889 /usr/lib/ssh/sshd 890 /usr/lib/ssh/sshd 1498 -sh 1649 bash 1656 -sh 1660 bash 13716 ptree 538 

Я знаю, что pstree существует, но мне не нравится его выходной формат. Кто-нибудь знает какие-то подобные инструменты?

Это все, что я знаю, это больше всего похоже на ptree в linux

 ps -ejH 

Вот сценарий, который показывает результат, похожий на Solaris pstree . Опция не поддерживается, а соответствие пользователя не поддерживается. Этот скрипт должен быть переносимым для всех POSIX-систем. В некоторых системах, команда ps которых не совместима с POSIX, вам может потребоваться настроить параметры, переданные в ps . Сценарий включает определенную поддержку систем BSD, поэтому большинство платформ должно быть охвачено.

 #! /bin/sh ## Usage: $0 [PID...] ## Show the processes on the system. For each process, show the process ## id followed by the command line. Show child processes after their parent, ## indented. ## If one or more PIDs are specified, only show the ancestors and ## descendants of those PIDs. If no PID is specified, show the subtree ## rooted at PID 1. ## This utility mimics Solaris pstree(1). case $(uname) in *BSD*) ps_A='-ax';; *) ps_A='-A';; esac ps $ps_A -o pid= -o ppid= -o args= | sort -k 1n | awk -v targets="$*" ' # children[p]: the " "-separated list of the pids of the children of p # cmd[p]: command line of p # list[lb..le]: list of pids yet to traverse # depth[p]: depth of process p: depth(child) = depth(parent) + 1 # parent[p]: pid of the parent of p # show[p]: 1 to show p, 2 to show p and all its descendants BEGIN { list[0] = 0; lb = 0; le = 0; depth[0] = -1; } { pid=$1; ppid=$2; sub(/^ *[0-9]+ +[0-9]+ /, ""); if (pid == ppid) { # This process is a root: add it to the list of processes to taverse list[++le] = pid; } else { children[ppid] = children[ppid] " " pid; parent[pid] = ppid; } cmd[pid] = $0; } END { # Parse targets into a list of pids (or 1 if none is specified). split("_" targets, a, /[^0-9]+/); delete a[1]; if (a[2] == "") a[2] = 1; for (i in a) { show[a[i]] = 2; # Show targets recursively p = parent[a[i]]; # Show target ancestors while (p && !show[p]) { show[p] = 1; p = parent[p]; } } # Traverse the list of processes while (lb <= le) { pid = list[lb++]; # Add children to the list of processes to traverse split(children[pid], a); for (i in a) { list[--lb] = a[i]; depth[a[i]] = depth[pid] + 1; if (show[pid] > 1) show[a[i]] = show[pid]; } # Show the current process if desired, indenting to the right depth if (show[pid]) { for (i = 1; i <= depth[pid]; i++) printf(" "); printf("%-5d ", pid); print cmd[pid]; } } } ' 

Вероятно, это не то, что вы ищете точно, но другие могут это оценить.

htop имеет вид дерева, если вы нажмете F5 .

Возможно, pstree действительно соответствует счету?