Mit Hilfe von dtpstree lassen sich die laufenden Prozesse eines Systems als Baum darstellen. So kann angezeigt werden, welcher Prozess von welchem gestartet wurde. Bei dtpstree handelt es sich um eine Reimplementation von pstree. Im FreeBSD -Portbaum findet man dtpstree unter sysutils/dtpstree:
# cd /usr/ports/sysutils/dtpstree && make install clean
Ruft man dtpstree ohne Optionen auf, so werden alle für den Benutzer sichtbaren Prozesse als Baum angezeigt
# dtpstree
init-+-adjkerntz
+-console-kit-daemon
+-cron
+-2*[dbus-daemon]
+-dbus-launch
+-devd
+-2*[dhclient]
+-gconfd-2
+-8*[getty]
+-gpg-agent
+-hald---hald-runner-+-hald-addon-mouse-sy
| +-hald-addon-storage
+-moused
+-pflogd---pflogd
+-powerd
+-sshd
+-syslogd
+-wpa_supplicant
+-xdm-+-Xorg
+-xdm---fluxbox-+-csh---Eterm---csh---ssh
+-csh---sh---sh---thunderbird-bin
+-csh---sh---sh---firefox-bin---npviewer.bin
+-2*[csh---xterm---csh]
+-5*[csh---xterm---csh---ssh]
+-csh---xterm---csh---dtpstree
+-gkrellm
+-xearth
+-xscreensaver
Verwendet man die -p Option so wird jeweils die Prozess-ID jedes Prozesses angezeigt:
# dtpstree -p
init(1)-+-adjkerntz(131)
+-console-kit-daemon(1775)
+-cron(1692)
+-dbus-daemon(1627)
+-dbus-daemon(1881)
+-dbus-launch(1880)
+-devd(960)
+-dhclient(1281)
+-dhclient(1298)
+-gconfd-2(1883)
+-getty(1757)
+-getty(1758)
+-getty(1759)
+-getty(1760)
+-getty(1761)
+-getty(1762)
+-getty(1763)
+-getty(1764)
+-gpg-agent(1888)
+-hald(1772)---hald-runner(1776)-+-hald-addon-mouse-sy(1781)
| +-hald-addon-storage(1802)
+-moused(1603)
+-pflogd(637)---pflogd(646)
+-powerd(1543)
+-sshd(1681)
+-syslogd(1321)
+-wpa_supplicant(444)
+-xdm(1765)-+-Xorg(1771)
+-xdm(1818)---fluxbox(1830)-+-csh(1836)---Eterm(1843)---csh(1844)---ssh(1860)
+-csh(1861)---sh(1868)---sh(1872)---thunderbird-bin(1876)
+-csh(1889)---sh(1896)---sh(1900)---firefox-bin(1904)---npviewer.bin(2259)
+-csh(1911)---xterm(1918)---csh(1920)
+-csh(1946)---xterm(1953)---csh(1955)---ssh(1964)
+-csh(1965)---xterm(1972)---csh(1974)---ssh(1983)
+-csh(1984)---xterm(1991)---csh(1993)---ssh(2002)
+-csh(9454)---xterm(9461)---csh(9463)---ssh(9472)
+-csh(9592)---xterm(9599)---csh(9601)---ssh(9614)
+-csh(9737)---xterm(9744)---csh(9746)
+-csh(9903)---xterm(9910)---csh(9912)---dtpstree(9931)
+-gkrellm(1832)
+-xearth(1834)
+-xscreensaver(1833)
Mit der -u Option werden die Änderungen der Benutzers unter welchem der Prozess läuft sichtbar:
# dtpstree -u
init-+-adjkerntz
+-console-kit-daemon
+-cron
+-dbus-daemon(messagebus)
+-dbus-daemon(beat)
+-dbus-launch(beat)
+-devd
+-dhclient
+-dhclient(_dhcp)
+-gconfd-2(beat)
+-8*[getty]
+-gpg-agent(beat)
+-hald(haldaemon)---hald-runner(root)-+-hald-addon-mouse-sy
| +-hald-addon-storage
+-moused
+-pflogd---pflogd(_pflogd)
+-powerd
+-sshd
+-syslogd
+-wpa_supplicant
+-xdm-+-Xorg
+-xdm---fluxbox(beat)-+-csh---Eterm---csh---ssh
+-csh---sh---sh---thunderbird-bin
+-csh---sh---sh---firefox-bin---npviewer.bin
+-2*[csh---xterm---csh]
+-5*[csh---xterm---csh---ssh]
+-csh---xterm---csh---su---csh(root)---dtpstree
+-gkrellm
+-xearth
+-xscreensaver
Benutze man die -a Option werden die Argumente, mit der -t Option die Pfade jedes Prozesses ausgegeben:
# dtpstree -a -t
/sbin/init --
+-adjkerntz -i
+-/usr/local/sbin/console-kit-daemon
+-/usr/sbin/cron -s
+-/usr/local/bin/dbus-daemon --system
+-/usr/local/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
+-dbus-launch --autolaunch 0e299d9692a650fd98b8ab2a00001627 --binary-syntax --close-stderr
+-/sbin/devd
+-dhclient: em0 [priv]
+-dhclient: em0
+-/usr/local/libexec/gconfd-2
+-/usr/libexec/getty Pc ttyv0
+-/usr/libexec/getty Pc ttyv1
+-/usr/libexec/getty Pc ttyv2
+-/usr/libexec/getty Pc ttyv3
+-/usr/libexec/getty Pc ttyv4
+-/usr/libexec/getty Pc ttyv5
+-/usr/libexec/getty Pc ttyv6
+-/usr/libexec/getty Pc ttyv7
+-/usr/local/bin/gpg-agent --sh --no-use-standard-socket --daemon --default-cache-ttl 60 --max-cache-ttl 999999
+-/usr/local/sbin/hald
| +-hald-runner
| +-hald-addon-mouse-sysmouse: /dev/psm0
| +-hald-addon-storage: /dev/acd0
+-/usr/sbin/moused -p /dev/psm0 -t auto
+-pflogd: [priv]
| +-pflogd: [running] -s 116 -i pflog0 -f /var/log/pflog
+-/usr/sbin/powerd -a max -b min
+-/usr/sbin/sshd
+-/usr/sbin/syslogd -ss
[...]
Auch in einer Jails kann dtpstree verwendet werden obwohl der init-Prozess in der Jail nicht sichtbar ist:
# dtpstree
cron
httpd---10*[httpd]
2*[sendmail]
sshd
syslogd
tcsh---dtpstree
Mehr Informationen zu dtpstree findet man in der Manpage dtpstree(1).