If you're like me, you'll find the output of "ptree" in Solaris much more useful than the output of "ps". While it doesn't give you the start time or the terminal it's being run from, the parent process id information is formatted better. In Linux or OpenBSD, there was no easy way to get a tree-like structure that Solaris' "ptree" yielded. Thus, I coded my own. For Linux, I used the entries in /proc. For OpenBSD, the output from "ps ajxwww"
Here is the perl source to Linux ptree.
Here is the perl source to OpenBSD ptree.
Here is the GPL, which is the license for 'ptree'
NOTE:
You can edit the script and change $termwidth to whatever you prefer,
or 0 to make it unlimited. $termwidth is how wide the command lines
will be (not including the indent, pid or space).
| Nice ptree formatted output | Regular ps formatted output |
|---|---|
[root@gwenhwyfar root]# ptree
1 init [3]
2 [keventd]
5 [kreclaimd]
4 [kswapd]
3 [kapm-idled]
7 [kupdated]
6 [bdflush]
8 [mdrecoveryd]
73 [khubd]
437 /sbin/pump -i eth0
585 syslogd -m 0
590 klogd -2
674 /usr/sbin/apmd -p 10 -w 5 -W -P /etc/sysconfig/apm-scripts/apmscript
700 /usr/local/openssh/sbin/sshd
30466 /usr/local/openssh/sbin/sshd
30468 /usr/local/openssh/sbin/sshd
30469 -bash
30513 bash
31664 /usr/bin/perl /usr/local/bin/ptree
715 /usr/sbin/atd
727 named -u named
736 named -u named
737 named -u named
738 named -u named
739 named -u named
750 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid
764 /usr/bin/perl -w /usr/sbin/ddclient -daemon 300
777 /usr/sbin/dhcpd -cf /etc/dhcpd.conf -lf /var/lib/dhcp/dhcpd.leases -q eth1
789 /usr/sbin/sockd -D
823 /usr/sbin/sockd -D
825 /usr/sbin/sockd -D
824 /usr/sbin/sockd -D
826 /usr/sbin/sockd -D
827 /usr/sbin/sockd -D
828 /usr/sbin/sockd -D
2283 /usr/sbin/sockd -D
2284 /usr/sbin/sockd -D
2285 /usr/sbin/sockd -D
2286 /usr/sbin/sockd -D
2287 /usr/sbin/sockd -D
2288 /usr/sbin/sockd -D
795 svscan
816 supervise log
830 /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-send
817 supervise qmail-smtpd
834 /usr/local/bin/tcpserver -H -R -v -p -x /etc/tcp.smtp.cdb -u 503 -g 503 10.100.0.1 smtp /var/qmail/bin/qmail-smtpd
818 supervise log
829 /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-smtpd
815 supervise qmail-send
822 qmail-send
831 qmail-lspawn |dot-forward .forward
833 qmail-clean
832 qmail-rspawn
837 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -DHAVE_AUTH -DHAVE_AUTH_ANON -DHAVE_AUTH_DB -DHAV
23318 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -DHAVE_AUTH -DHAVE_AUTH_ANON -DHAVE_AUTH_DB -DHAV
23317 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -DHAVE_AUTH -DHAVE_AUTH_ANON -DHAVE_AUTH_DB -DHAV
23319 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -DHAVE_AUTH -DHAVE_AUTH_ANON -DHAVE_AUTH_DB -DHAV
23316 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -DHAVE_AUTH -DHAVE_AUTH_ANON -DHAVE_AUTH_DB -DHAV
23320 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -DHAVE_AUTH -DHAVE_AUTH_ANON -DHAVE_AUTH_DB -DHAV
23322 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -DHAVE_AUTH -DHAVE_AUTH_ANON -DHAVE_AUTH_DB -DHAV
23321 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -DHAVE_AUTH -DHAVE_AUTH_ANON -DHAVE_AUTH_DB -DHAV
23323 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -DHAVE_AUTH -DHAVE_AUTH_ANON -DHAVE_AUTH_DB -DHAV
857 proftpd (accepting connections)
897 /home/squid/bin/squid -D
899 (squid) -D
905 (dnsserver) -D
904 (dnsserver) -D
907 (dnsserver) -D
906 (dnsserver) -D
908 (dnsserver) -D
921 (unlinkd)
909 xfs -droppriv -daemon
957 dnetc -quiet
973 /sbin/mingetty tty4
972 /sbin/mingetty tty3
971 /sbin/mingetty tty2
975 /sbin/mingetty tty6
974 /sbin/mingetty tty5
1242 login -- root
22369 -bash
16741 crond
31632 CROND
31633 /bin/bash /usr/bin/run-parts /etc/cron.hourly
31635 awk -v progname=/etc/cron.hourly/sysstat progname {
31636 /bin/sh /usr/lib/sa/sa1 600 6
31638 /usr/lib/sa/sadc 600 6 /var/log/sa/sa22
|
[root@gwenhwyfar root]# ps -aef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jul08 ? 00:00:05 init [3]
root 2 1 0 Jul08 ? 00:00:00 [keventd]
root 3 1 0 Jul08 ? 00:00:00 [kapm-idled]
root 4 1 0 Jul08 ? 00:00:48 [kswapd]
root 5 1 0 Jul08 ? 00:00:00 [kreclaimd]
root 6 1 0 Jul08 ? 00:00:06 [bdflush]
root 7 1 0 Jul08 ? 00:00:00 [kupdated]
root 8 1 0 Jul08 ? 00:00:00 [mdrecoveryd]
root 73 1 0 Jul08 ? 00:00:00 [khubd]
root 437 1 0 Jul08 ? 00:00:00 /sbin/pump -i eth0
root 585 1 0 Jul08 ? 00:00:01 syslogd -m 0
root 590 1 0 Jul08 ? 00:00:00 klogd -2
root 674 1 0 Jul08 ? 00:00:00 /usr/sbin/apmd -p 10 -w 5 -W -P /etc/sysconfig/apm-scripts/apmscript
root 700 1 0 Jul08 ? 00:00:14 /usr/local/openssh/sbin/sshd
daemon 715 1 0 Jul08 ? 00:00:00 /usr/sbin/atd
named 727 1 0 Jul08 ? 00:00:00 named -u named
named 736 727 0 Jul08 ? 00:00:00 named -u named
named 737 736 0 Jul08 ? 00:00:16 named -u named
named 738 736 0 Jul08 ? 00:00:02 named -u named
named 739 736 0 Jul08 ? 00:00:01 named -u named
root 750 1 0 Jul08 ? 00:00:00 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid
root 764 1 0 Jul08 ? 00:02:02 /usr/bin/perl -w /usr/sbin/ddclient -daemon 300
root 777 1 0 Jul08 ? 00:00:00 /usr/sbin/dhcpd -cf /etc/dhcpd.conf -lf /var/lib/dhcp/dhcpd.leases -q eth1
sockd 789 1 0 Jul08 ? 00:00:00 /usr/sbin/sockd -D
root 795 1 0 Jul08 ? 00:00:01 svscan
root 815 795 0 Jul08 ? 00:00:00 supervise qmail-send
root 816 795 0 Jul08 ? 00:00:00 supervise log
root 817 795 0 Jul08 ? 00:00:00 supervise qmail-smtpd
root 818 795 0 Jul08 ? 00:00:00 supervise log
qmails 822 815 0 Jul08 ? 00:00:00 qmail-send
sockd 823 789 0 Jul08 ? 00:00:00 /usr/sbin/sockd -D
sockd 824 789 0 Jul08 ? 00:00:00 /usr/sbin/sockd -D
sockd 825 789 0 Jul08 ? 00:00:00 /usr/sbin/sockd -D
sockd 826 789 0 Jul08 ? 00:00:00 /usr/sbin/sockd -D
sockd 827 789 0 Jul08 ? 00:00:00 /usr/sbin/sockd -D
sockd 828 789 0 Jul08 ? 00:01:53 /usr/sbin/sockd -D
qmaill 829 818 0 Jul08 ? 00:00:00 /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-smtpd
qmaill 830 816 0 Jul08 ? 00:00:00 /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-send
root 831 822 0 Jul08 ? 00:00:00 qmail-lspawn |dot-forward .forward?|preline procmail
qmailr 832 822 0 Jul08 ? 00:00:00 qmail-rspawn
qmailq 833 822 0 Jul08 ? 00:00:00 qmail-clean
qmaild 834 817 0 Jul08 ? 00:00:00 /usr/local/bin/tcpserver -H -R -v -p -x /etc/tcp.smtp.cdb -u 503 -g 503 10.100.0.1 s
root 837 1 0 Jul08 ? 00:00:02 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -
ftp 857 1 0 Jul08 ? 00:00:00 proftpd (accepting connections)
root 897 1 0 Jul08 ? 00:00:00 /home/squid/bin/squid -D
squid 899 897 0 Jul08 ? 00:07:44 (squid) -D
squid 904 899 0 Jul08 ? 00:00:08 (dnsserver) -D
squid 905 899 0 Jul08 ? 00:00:00 (dnsserver) -D
squid 906 899 0 Jul08 ? 00:00:00 (dnsserver) -D
squid 907 899 0 Jul08 ? 00:00:00 (dnsserver) -D
squid 908 899 0 Jul08 ? 00:00:00 (dnsserver) -D
xfs 909 1 0 Jul08 ? 00:00:00 xfs -droppriv -daemon
squid 921 899 0 Jul08 ? 00:00:04 (unlinkd)
dnetc 957 1 99 Jul08 ? 14-09:13:57 dnetc -quiet
root 971 1 0 Jul08 tty2 00:00:00 /sbin/mingetty tty2
root 972 1 0 Jul08 tty3 00:00:00 /sbin/mingetty tty3
root 973 1 0 Jul08 tty4 00:00:00 /sbin/mingetty tty4
root 974 1 0 Jul08 tty5 00:00:00 /sbin/mingetty tty5
root 975 1 0 Jul08 tty6 00:00:00 /sbin/mingetty tty6
root 1242 1 0 Jul08 tty1 00:00:00 login -- root
sockd 2283 789 0 Jul09 ? 00:00:00 /usr/sbin/sockd -D
sockd 2284 789 0 Jul09 ? 00:00:00 /usr/sbin/sockd -D
sockd 2285 789 0 Jul09 ? 00:00:00 /usr/sbin/sockd -D
sockd 2286 789 0 Jul09 ? 00:00:00 /usr/sbin/sockd -D
sockd 2287 789 0 Jul09 ? 00:00:00 /usr/sbin/sockd -D
sockd 2288 789 0 Jul09 ? 00:00:00 /usr/sbin/sockd -D
root 16741 1 0 Jul16 ? 00:00:00 crond
root 22369 1242 0 Jul20 tty1 00:00:00 -bash
apache 23316 837 0 Jul21 ? 00:00:00 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -
apache 23317 837 0 Jul21 ? 00:00:00 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -
apache 23318 837 0 Jul21 ? 00:00:00 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -
apache 23319 837 0 Jul21 ? 00:00:00 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -
apache 23320 837 0 Jul21 ? 00:00:00 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -
apache 23321 837 0 Jul21 ? 00:00:00 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -
apache 23322 837 0 Jul21 ? 00:00:00 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -
apache 23323 837 0 Jul21 ? 00:00:00 /usr/sbin/httpd -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -
root 30466 700 0 21:05 ? 00:00:00 /usr/local/openssh/sbin/sshd
tony 30468 30466 0 21:05 ? 00:00:04 /usr/local/openssh/sbin/sshd
tony 30469 30468 0 21:05 pts/1 00:00:00 -bash
root 30513 30469 0 21:09 pts/1 00:00:01 bash
root 31632 16741 0 22:01 ? 00:00:00 CROND
root 31633 31632 0 22:01 ? 00:00:00 /bin/bash /usr/bin/run-parts /etc/cron.hourly
root 31635 31633 0 22:01 ? 00:00:00 awk -v progname=/etc/cron.hourly/sysstat progname {????? print progname ":\n"?????
root 31636 1 0 22:01 ? 00:00:00 /bin/sh /usr/lib/sa/sa1 600 6
root 31638 31636 0 22:01 ? 00:00:00 /usr/lib/sa/sadc 600 6 /var/log/sa/sa22
root 31665 30513 0 22:07 pts/1 00:00:00 ps -aef
|