Shows current status of processes.
ps [ -A ] [ -N ] [ -a ] [ -d ] [ -e ] [ -f ] [ -k ] [ -l ] [ -F format] [ -o Format ] [ -G Glist ] [ -g Glist ][ -m ] [ -n NameList ] [ -p Plist ] [ -t Tlist ] [ -U Ulist ] [ -u Ulist ]
ps [ a ] [ c ] [ e ] [ ew ] [ eww ] [ g ] [ n ] [ U ] [ w ] [ x ] [ l | s | u | v ] [ t Tty ] [ ProcessNumber ]
The ps command writes the current status of active processes and (if the -m flag is given) associated kernel threads to standard output. Note that while the -m flag displays threads associated with processes using extra lines, you must use the -o flag with the THREAD field specifier to display extra thread-related columns.
Without flags, the ps command displays information about the current workstation. The -f, -o, l, -l, s, u, and v flags only determine how much information is provided about a process; they do not determine which processes are listed. The l, s, u, and v flags are mutually exclusive.
With the -o flag, the ps command examines memory or the paging area and determines what the command name and parameters were when the process was created. If the ps command cannot find this information, the command name stored in the kernel is displayed in square brackets.
The COLUMNS environment variable overrides the system-selected, horizontal screen size.
The command-line flags that accept a list of parameters (the -o, -G, -g, -p, -t, -U, and -u flags) are limited to 128 items. For example, the -u Ulist flag can specify no more than 128 users.
Depending on the flags used with the ps command, column headings appear above the information displayed to standard output. The headings are defined in the following list (flags that cause these headings to appear are shown in parentheses):
F Field Table | ||
Flags | Hexadecimal Value | Definition |
SLOAD | 0x00000001 | Indicates that the process is operating in core memory. |
SNOSWAP | 0x00000002 | Indicates that the process cannot be swapped out. |
STRC | 0x00000008 | Indicates that the process is being traced. |
SWTED | 0x00000010 | Indicates that the process stopped while being traced. |
SFWTED | 0x00000020 | Indicates that the process stopped after a call to the fork subroutine, while being traced. |
SEWTED | 0x00000040 | Indicates that the process stopped after a call to the exec subroutine, while being traced. |
SLWTED | 0x00000080 | Indicates that the process stopped after a call to the load or unload subroutine, while being traced. |
SFIXPRI | 0x00000100 | Indicates that the process has a fixed priority, ignoring the pcpu field descriptor. |
SKPROC | 0x00000200 | Indicates a Kernel process. |
SOMASK | 0x00000400 | Indicates restoration of the old mask after a signal is received. |
SWAKEONSIG | 0x00000800 | Indicates that the signal will abort the sleep subroutine. The contents must not be equal to those of the PCATCH flag. The contents of both PCATCH and SWAKEONSIG must be greater than those of PMASK. |
SUSER | 0x00001000 | Indicates that the process is in user mode. |
SLKDONE | 0x00002000 | Indicates that the process has done locks. |
STRACING | 0x00004000 | Indicates that the process is a debugging process. |
SMPTRACE | 0x00008000 | Indicates multi-process debugging. |
SEXIT | 0x00010000 | Indicates that the process is exiting. |
SSEL | 0x00020000 | Indicates that the processor is selecting: wakeup/waiting danger. |
SORPHANPGRP | 0x00040000 | Indicates an orphaned process group. |
SNOCNTLPROC | 0x00080000 | Indicates that the session leader relinquished the controlling terminal. |
SPPNOCLDSTOP | 0x00100000 | Indicates that the SIGHLD signal is not sent to the parent process when a child stops. |
SEXECED | 0x00200000 | Indicates that process has been run. |
SJOBSESS | 0x00400000 | Indicates that job control was used in the current session. |
SJOBOFF | 0x00800000 | Indicates that the process is free from job control. |
PSIGDELIVERY | 0x01000000 | Indicates that the process is used by the program-check handler. |
SRMSHM | 0x02000000 | Indicates that the process removed shared memory during a call to the exit subroutine. |
SSLOTFREE | 0x04000000 | Indicates that the process slot is free. |
SNOMSG | 0x08000000 | Indicates that there are no more uprintf subroutine messages. |
F Field Table | ||
Flags | Hex Value | Definition |
SLOAD | 0x00000001 | Indicates that the process is operating in core memory. |
SNOSWAP | 0x00000002 | Indicates that the process cannot be swapped out. |
STRC | 0x00000008 | Indicates that the process is being traced. |
SKPROC | 0x00000200 | Indicates a kernel process. |
SEXIT | 0x00010000 | Indicates that the process is exiting. |
SEXECED | 0x00200000 | Indicates that the process has been run. |
SEXECING | 0x01000000 | Indicates that the process is execing (performing an exec). |
TKTHREAD | 0x00001000 | Indicates that the thread is a kernel-only thread. |
Note: You can see the definitions all process and thread flags by consulting the p_flags and t_flags fields in the /usr/include/sys/proc.h and /usr/include/sys/thread.h files respectively.
A process that has exited and has a parent that has not yet waited for the process is marked <defunct> . A process that is blocked trying to exit is marked <exiting> . The ps command attempts to determine the file name and arguments given when the process was created by memory or by the swap area.
Notes:
- The process can change while the ps command is running. Some data displayed for defunct processes is irrelevant.
- The ps program examines memory to retrieve the file name and arguments used when the process was created. However, a process can destroy information, making this method of retrieving file name and arguments unreliable.
The following flags are preceded by a - (minus sign):
-A | Writes to standard output information about all processes. |
-N | Gathers no thread statistics. With this flag ps simply reports those statistics that can be obtained by not traversing through the threads chain for the process. |
-a | Writes to standard output information about all processes, except the session leaders and processes not associated with a terminal. |
-d | Writes information to standard output about all processes, except the session leaders. |
-e | Writes information to standard output about all processes, except kernel processes. |
-f | Generates a full listing. |
-G Glist | Writes information to standard output only about processes that are in the process groups listed for the Glist variable. The Glist variable is either a comma-separated list of process group identifiers or a list of process group identifiers enclosed in double quotation marks (" ") and separated from one another by a comma or by one or more spaces. This flag is equivalent to the -g Glist flag. |
-g Glist | This flag is equivalent to the -G Glist flag. |
-k | Lists kernel processes. |
-l | Generates a long listing. See also the l flag. |
-m | Lists kernel threads as well as processes. Output lines for processes are followed by an additional output line for each kernel thread. This flag does not display thread-specific fields (bnd, scount, sched, thcount, and tid), unless the appropriate -o Format flag is specified. |
-n NameList | Specifies an alternative system name-list file in place of the default. The AIX operating system does not use the -n flag, since information is supplied directly to the kernel. |
-F Format | Same as -o Format |
-o Format | Displays information in the format specified by the Format variable. Multiple field specifiers can be specified for the Format variable. The Format variable is either a comma-separated list of field specifiers or a list of field specifiers enclosed within a set of " " (double-quotation marks) and separated from one another by a comma or by one or more spaces, or both.
Each field specifier has a default header. The default header can be overridden by appending an = (equal sign) followed by the user-defined text for the header. The fields are written in the order specified on the command line in column format. The field widths are specified by the system to be at least as wide as the default or user-defined header text. If the header text is null, (such as if -o user= is specified), the field width is at least as wide as the default header text. If all header fields are null, no header line is written. The following field specifiers are recognized by the system:
Otherwise, multiple fields in a specified format can be displayed by the Format variable, including field descriptors. If field descriptors are used in the Format variable, it must be enclosed in double quotation marks (" "). The following table shows how field descriptors correspond to field specifiers: Field Field Default Descriptors Specifiers Headers %a args COMMAND %c comm COMMAND %t etime ELAPSED %G group GROUP %n nice NI %C pcpu %CPU %r pgid PGID %p pid PID %P ppid PPID %g rgroup RGROUP %u ruser RUSER %x time TIME %y tty TTY %U user USER %z vsz VSZ |
-p Plist | Displays only information about processes with the process numbers specified for the Plist variable. The Plist variable is either a comma separated list of process ID numbers or a list of process ID numbers enclosed in double quotation marks (" ") and separated from one another by a comma or by one or more spaces, or both. |
-t Tlist | Displays only information about processes associated with the workstations listed in the Tlist variable. The Tlist variable is either a comma separated list of workstation identifiers or a list of workstation identifiers enclosed in double quotation marks (" ") and separated from one another by a comma or by one or more spaces, or both. |
-U Ulist | Displays only information about processes with the user ID numbers or login names specified for the Ulist variable. The Ulist variable is either a comma-separated list of user IDs or a list of user IDs enclosed in double quotation marks (" ") and separated from one another by a comma and one or more spaces. In the listing, the ps command displays the numerical user ID unless the -f flag is used; then the command displays the login name. This flag is equivalent to the -u Ulist flag. See also the u flag. |
-u Ulist | This flag is equivalent to the -U Ulist flag. |
The following options are not preceded by a - (minus sign):
This command returns the following exit values:
0 | Successful completion. |
>0 | An error occurred. |
ps -e -f
ps -f -l -ujim,jane,su
ps -t console,tty/1
ps -t -
ps -o ruser,pid,ppid=parent,argsThe output is:
RUSER PID parent COMMAND helene 34 12 ps -o ruser,pid,ppid=parent,args
ps -o "< %u > %p %y : %a"The output is:
< RUSER > PID TT : COMMAND < helene > 34 pts/3 : ps -o < %u > %p %y : %a
ps -lmThe output is similar to:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 240003 A 26 8984 7190 1 60 20 2974 312 pts/1 0:00 -ksh 400 S - - - 1 60 - - - - - - 200005 A 26 9256 8984 15 67 20 18ed 164 pts/1 0:00 ps 0 R - - - 15 67 - - - - - -
ps -emo THREADThe output is similar to:
USER PID PPID TID S C PRI SC WCHAN FLAG TTY BND CMD jane 1716 19292 - A 10 60 1 * 260801 pts/7 - biod - - - 4863 S 0 60 0 599e9d8 8400 - - - - - - 5537 R 10 60 1 5999e18 2420 - 3 - luke 19292 18524 - A 0 60 0 586ad84 200001 pts/7 - -ksh - - - 7617 S 0 60 0 586ad84 400 - - - luke 25864 31168 - A 11 65 0 - 200001 pts/7 - - - - - 8993 R 11 65 0 - 0 - - -
/usr/bin/ps | Contains the ps command. |
/etc/passwd | |
Specifies user ID information. | |
/dev/pty* | Indicates workstation (PTY) names. |
/dev/tty* | Indicates workstation (TTY) names. |
The kill command, nice command.
Using ps to Identify CPU-Intensive Programs in AIX Versions 3.2 and 4 Performance Tuning Guide.