Intereting Posts
кэширование Linux-дисков влияет на время доступа, указанное в stat? Почему grep не работает с перенаправлением? Как найти новые драйверы для моего ноутбука в RHEL WS 6.4? Имена названий Guake по умолчанию Как я могу запустить ssh-add автоматически, без подсказки пароля? Как отсортировать список элементов с минимальной шириной? распаковать каталог в unix Могут ли две машины, работающие в Linux, иметь такое же имя хоста? AIX cifs имя хоста с подчеркиванием О Clonezilla и как сохранить резервную копию md raid5: «нет действительного суперблока», но mdadm –examine говорит, что все в порядке `yum install` на CentOS 7 устанавливает установленный размер 578mb, а затем не требуется 75 + GB больше места на / Используя rsync, как я могу узнать, какой атрибут исходного файла отличается от dest, что вызвало переход Как получить PPID с «ps aux» в AIX? Организация электронной почты по дате Использование procmail или maildrop

Инструмент стиля 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 действительно соответствует счету?