Showing your processes in a hierarchical list is very useful for confirming the relationship between every process running on your system. Today I'd like to show you how you can get tree-like processes lists using various commands.
Showing processes tree with ptree
In Solaris, there's quite a few commands which make the life of any system administrator much easier, they're the process commands (p-commands). One of them which I particularly like is the ptree command which shows you a list of processes.
As you run the command, you get a hierarchical list of all the processes running on your Solaris system, along with process IDs (PIDs). To me, this is a very useful command, because it shows you how exactly each process relates to others in your system.
Here's a fragment of the ptree output:
bash-3.00$ ptree 7 /lib/svc/bin/svc.startd 250 /usr/lib/saf/sac -t 300 268 /usr/lib/saf/ttymon 260 -sh 5026 -csh 9 /lib/svc/bin/svc.configd 107 /usr/lib/sysevent/syseventd 136 /usr/lib/picl/picld 140 /usr/lib/crypto/kcfd 159 /usr/sbin/nscd 227 /usr/sbin/rpcbind 234 /usr/lib/nfs/statd 235 /usr/sbin/keyserv 236 /usr/lib/netsvc/yp/ypserv -d 237 rpc.nisd_resolv -F -C 8 -p 1073741824 -t udp 241 /usr/lib/nfs/lockd 247 /usr/lib/netsvc/yp/ypbind 263 /usr/lib/utmpd 286 /usr/sadm/lib/smc/bin/smcboot 287 /usr/sadm/lib/smc/bin/smcboot 288 /usr/sadm/lib/smc/bin/smcboot
Processes tree with pstree
In most Linux distributions, you can find a pstree command, very similar to ptree.
That's how you may use it (-p is an option to show PIDs and -l uses long output format):
ubuntu$ pstree -pl init(1)─┬─NetworkManager(5427) ├─NetworkManagerD(5441) ├─acpid(5210) ├─apache2(6966)─┬─apache2(2890) │ ├─apache2(2893) │ ├─apache2(7163) │ ├─apache2(7165) │ ├─apache2(7166) │ ├─apache2(7167) │ └─apache2(7168) ├─atd(6369) ├─avahi-daemon(5658)───avahi-daemon(5659) ├─bonobo-activati(7816)───{bonobo-activati}(7817) ...
Showing processes tree with ps –forest
ps command found in Linux has a –forest option, which shows you a tree structure of processes.
The best in my experience is to use it like this:
ubuntu$ ps -aef --forest UID PID PPID C STIME TTY TIME CMD ... 107 5473 1 0 10037 4600 0 Apr28 ? 00:00:02 /usr/sbin/hald root 5538 5473 0 5511 1288 0 Apr28 ? 00:00:00 \_ hald-runner root 5551 5538 0 6038 1284 0 Apr28 ? 00:00:01 \_ hald-addon-input: Listening on /dev/input 107 5566 5538 0 4167 992 1 Apr28 ? 00:00:00 \_ hald-addon-acpi: listening on acpid socke root 5600 5538 0 6038 1272 1 Apr28 ? 00:00:15 \_ hald-addon-storage: polling /dev/scd0 (ev root 5476 1 0 10272 2532 0 Apr28 ? 00:00:00 /usr/sbin/console-kit-daemon root 5627 1 0 12728 1176 1 Apr28 ? 00:00:00 /usr/sbin/sshd root 9151 5627 0 17536 3032 0 10:53 ? 00:00:00 \_ sshd: greys [priv] greys 9162 9151 0 17538 1892 1 10:54 ? 00:00:00 \_ sshd: greys@pts/3 greys 9168 9162 0 5231 3820 1 10:54 pts/3 00:00:00 \_ -bash greys 9584 9168 0 3802 1124 0 11:27 pts/3 00:00:00 \_ ps -aeF --forest
This output is for demonstration purpose only, and so I've taken the first lines of the output out because they weren't serving the purpose of this example very well.
For thins fragment of the output you can see how you get all the vital information about each process. I really like this way of running the ps command.
That's it for today! Do you know any other neat way of looking at processes tree? Let me know!
Nat says
Is there a documented list of what the processes are.
whatis/man etc doesnt give any information on what the process is. Some are guessable but some are not.
Gleb Reys says
Nat,
There's nothing like this which would come with your Unix system… What processes are you trying to identify, perhaps I or one of the readers can help?
siddhant says
hey this was of a real help for me if u can like help me out to create a link btw two computers via unix wud be of great help
Sam says
thank u so much for your effort ^_^ , and for those whom using UNIX you can just type " man ps " to get better understanding