-->
Previous | Table of Contents | Next |
When normal users issue the ps command, they see only their own processes. If you issue the ps command when you are logged in as the superuser (usually root, although you can change the name), you will see all the processes on the system because the root login owns everything running. This can produce very long outputs, especially on a system with several users, so you will probably want to pipe the output from the ps command to a page filter (such as more or less) or save the output in a file for further examination. Both commands are shown here:
ps | more ps > /tmp/ps_file
A useful ps option for checking user processes is -u, which adds several columns to the output of the ps command. The output from a user (not root) command using this option looks like this:
$ ps -u USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND bill 41 0.1 6.8 364 472 v01 S 23:19 0:01 -bash bill 138 0.0 3.3 72 228 v01 R 23:34 0:00 ps -u
The most important addition to the output is the USER column, which shows who started and owns the process. The name listed under the USER column is the users login name, as found in the /etc/passwd file. (ps does a lookup in the /etc/passwd file to convert the user ID numberUIDto the proper username.)
This option also adds the column labeled %CPU which shows the percentage of CPU time that has been used by the process so far. The column %MEM shows the percentage of your systems memory currently used by the process. These numbers can be handy for finding processes that consume far too much CPU or memory, called CPU hogs and memory hogs by most administrators. If you see a user process that has very high usage, it is worth checking to make sure it is a valid process and not a runaway that will continue to grind at your systems resources.
When you issue this command logged in as root, you see all the processes running on the system. As before, you should consider paginating the output to make it readable. With some versions of Linuxs ps command, you can also use the -u option to specify a users processes by adding each username. For example, if you are logged in as root and want to see only Yvonnes processes, you could issue the following command:
ps -u yvonne
This format of the -u option works with System V versions of ps, but not the BSD-based version of ps included with most Linux distributions (including the one of the CD-ROM). You can obtain other versions of ps on FTP and BBS sites. Most users can issue this command to examine other users processes, as well. This lets them find out who is hogging all the CPU time! It also lets the superuser see the processes that users are running when they report problems, without having to wade through all the system processes, as well.
Users can also see all the processes running on the system (instead of just the processes started by them) by using the -a option. Because the superuser sees all the processes on the system anyway, the root login doesnt have to use this option, although it is still legal to use it. This output doesnt change, though. When issued by a user (not root), the -a option produces the following output:
$ ps -a PID TTY STAT TIME COMMAND 1 psf S 0:00 init 6 psf S 0:00 update (sync) 23 psf S 0:00 /usr/sbin/crond -l10 29 psf S 0:00 /usr/sbin/syslogd 31 psf S 0:00 /usr/sbin/klogd 33 psf S 0:00 /usr/sbin/lpd 40 psf S 0:00 selection -t ms 42 v02 S 0:01 -bash 43 v03 S 0:00 /sbin/agetty 38400 tty3 44 v04 S 0:00 /sbin/agetty 38400 tty4 45 v05 S 0:00 /sbin/agetty 38400 tty5 46 v06 S 0:00 /sbin/agetty 38400 tty6 41 v01 S 0:01 -bash 140 v01 R 0:00 ps -a
This is a relatively short output showing a very lightly loaded system. Most of the entries are the Linux operating system kernel and daemons, as well as serial port getty processes. Only the last two commands were started by the user who issued the ps command. Of course, you cant tell who started each process with this output, so you can combine the -u and -a options (note that you use only one hyphen, followed by the option letters):
$ ps -au USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND root 64 0.0 1.5 41 224 v02 S 22:25 0:00 /sbin/agetty 38400 tty2 root 65 0.0 1.5 41 224 v03 S 22:25 0:00 /sbin/agetty 38400 tty3 root 66 0.0 1.5 41 224 v04 S 22:25 0:00 /sbin/agetty 38400 tty4 root 67 0.0 1.5 41 224 v05 S 22:25 0:00 /sbin/agetty 38400 tty5 root 68 0.0 1.5 41 224 v06 S 22:25 0:00 /sbin/agetty 38400 tty6 root 69 0.0 1.5 56 228 s00 S 22:25 0:00 gpm -t mman root 71 0.3 3.6 388 532 pp0 S 22:26 0:02 -bash root 155 0.0 1.5 77 220 pp0 R 22:37 0:00 ps -au tparker 119 0.4 3.5 372 520 v01 S 22:32 0:01 -bash tparker 132 0.1 2.2 189 324 v01 S 22:33 0:00 vi test
The -au options produce a list with all the same columns as the -u option but shows all the processes running on the system. The order in which you enter the options doesnt matter, so -au is functionally the same as -ua. When you are adding several options, this can be handy.
A few other ps command line options are occasionally useful. The -l option adds information about which processes started each process (useful when you want to identify child processes):
$ ps -l F UID PID PPID PRI NI SIZE RSS WCHAN STAT TTY TIME COMMAND 0 501 41 1 15 0 364 472 114d9c S v01 0:00 -bash 0 501 121 41 29 0 64 208 0 R v01 0:00 ps -l
Previous | Table of Contents | Next |