plstree

display ls or ps output as directory or process trees
Log | Files | Refs | README

commit e3d30e6a69c7376cacf94f5cadc26d9a5655b5b3
parent 022d132a4fddf73790e485de031f4da9d8ac6c81
Author: Josuah Demangeon <mail@josuah.net>
Date:   Sat,  9 Jun 2018 22:37:47 +0200

ptree: also show the argv of each command

This is to avoid the need to constantly run "ps -ax | less -S" after
"ptree | less", so only "ptree | less -S" is enough.

Diffstat:
Mptree | 9+++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/ptree b/ptree @@ -33,7 +33,8 @@ BEGIN { printf("%s", entries[i":info"]); for (j = 1; entries[i":"j] != ""; j++) printf("%s", entries[i":"j]); - printf("%s\n", entries[i":comm"]); + printf("%-" 30 - j * 3 "s", entries[i":comm"]); + print(entries[i":args"]); } } @@ -46,7 +47,7 @@ BEGIN { function list(entries) { - opt = "-o ppid,user,tty,pid,stat,comm" + opt = "-o ppid,user,tty,pid,stat,comm,args" cmd = "exec ps -ax " opt " 2>/dev/null"; if (!(cmd | getline)) { cmd = "exec ps " opt @@ -60,9 +61,12 @@ function list(entries) entries[ppid"cpid"] = entries[ppid"cpid"] "," pid; sub(" *[^ ]+", ""); sub(" *[^ ]+ + *[^ ]+ + *[^ ]+ + *[^ ]+ +", "&\t"); + sub("[^\t]+ [^ ]+ +", "&\t"); split($0, info, "\t"); + sub(" *$" , "", info[2]); entries[pid"info"] = info[1]; entries[pid"comm"] = info[2]; + entries[pid"args"] = info[3]; } close(cmd); @@ -90,6 +94,7 @@ function fill(entries, pid, lvl) entries[NUM":"j] = LINE; entries[NUM":"lvl] = NODE; entries[NUM":comm"] = entries[pid"comm"]; + entries[NUM":args"] = entries[pid"args"]; entries[NUM":info"] = entries[pid"info"]; NUM++; while (sub("[^,]*,", "", entries[pid"cpid"])) {