Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Thursday, June 13, 2019
 
 

ps(1)

Name

ps - report process status

Synopsis

ps [-aAcdefjHlLPyZ] [-g grplist] [-h lgrplist]
     [-n namelist] [-o format]...  [-O format]...
     [-p proclist] [-s sidlist] [-t term] [-u uidlist]
     [-U uidlist] [-G gidlist] [-z zonelist]

Description

The ps command prints information about active processes. Without options, ps prints information about processes that have the same effective user ID and the same controlling terminal as the invoker. The output contains only the process ID, terminal identifier, cumulative execution time, and the command name. Otherwise, the information that is displayed is controlled by the options.

Some options accept lists as arguments. Items in a list can be either separated by commas or else enclosed in quotes and separated by commas or spaces. Values for proclist and grplist must be numeric.

Options

The following options are supported:

–a

Lists information about all processes most frequently requested: all those except session leaders and processes not associated with a terminal.

–A

Lists information for all processes. Identical to –e, below.

–c

Prints information in a format that reflects scheduler properties as described in priocntl(1) man page. The –c option affects the output of the –f and –l options, as described below.

–d

Lists information about all processes except session leaders.

–e

Lists information about every process now running.

When the –e option is specified, options –z, –t, –u, –U, –g, –G, –p, –g, –s, and –a options have no effect.

–f

Generates a full listing. (See below for significance of columns in a full listing.)

–g grplist

Lists only process data whose group leader's ID number(s) appears in grplist. (A group leader is a process whose process ID number is identical to its process group ID number.)

–G gidlist

Lists information for processes whose real group ID numbers are given in gidlist. The gidlist must be a single argument in the form of a blank or comma-separated list.

-h lgrplist

Lists only the processes homed to the specified lgrplist. Nothing is listed for any invalid group specified in lgrplist.

–H

Prints the home lgroup of the process under an additional column header, LGRP.

–j

Prints session ID and process group ID.

–l

Generates a long listing. (See below.)

–L

Prints information about each light weight process (lwp) in each selected process. (See below.)

–n namelist

Specifies the name of an alternative system namelist file in place of the default. This option is accepted for compatibility, but is ignored.

–o format

Prints information according to the format specification given in format. This is fully described in DISPLAY FORMATS. Multiple –o options can be specified; the format specification is interpreted as the space-character-separated concatenation of all the format option-arguments.

–p proclist

Lists only process data whose process ID numbers are given in proclist.

–O format

This option identifies additional fields that can be added to the default output and uses the same arguments as the –o option. Prepending a format specifier with -, results in the specified format being suppressed from the output. If the additional column is already defined by the default output format, the new header and width take precedence.

–P

Prints the number of the processor to which the process or lwp is bound, if any, under an additional column header, PSR.

–s sidlist

Lists information on all session leaders whose IDs appear in sidlist.

–t term

Lists only process data associated with term. Terminal identifiers are specified as a device file name, and an identifier. For example, term/a, or pts/0.

–u uidlist

Lists only process data whose effective user ID number or login name is given in uidlist. In the listing, the numerical user ID is printed unless you give the –f option, which prints the login name.

–U uidlist

Lists information for processes whose real user ID numbers or login names are given in uidlist. The uidlist must be a single argument in the form of a blank- or comma-separated list.

–y

Under a long listing (–l), omits the obsolete F and ADDR columns and includes an RSS column to report the resident set size of the process. Under the –y option, both RSS and SZ (see below) is reported in units of kilobytes instead of pages.

–z zonelist

Lists only processes in the specified zones. Zones can be specified either by name or ID. This option is only useful when executed in the global zone.

–Z

Prints the name of the zone with which the process is associated under an additional column header, ZONE. The ZONE column width is limited to 8 characters. Use ps –eZ for a quick way to see information about every process now running along with the associated zone name. Use

ps -eo zone,uid,pid,ppid,time,comm,...

to see zone names wider than 8 characters.

In previous releases of Oracle Solaris, there was a /usr/ucb/ps command and the following options were supported. They are now supported in /usr/bin/ps , allowing the latter to emulate UCB behavior. The UCB options do not use a hyphen. You cannot mix these options with the options described above.

–r

Restricts output to running and runnable processes.

–S

Displays accumulated CPU time used by this process and all of its reaped children.

–v

Displays a version of the output containing virtual memory. This includes fields SIZE, %CPU, %MEM, and RSS described below.

–w

Uses a wide output format, that is, 132 columns rather than 80. If the option letter is repeated, that is, –ww, this option uses arbitrarily wide output. This information is used to decide how much of long commands to print.


Note -  The wide output option can be viewed only by a superuser or the user who owns the process.
–x

Includes processes with no controlling terminal.

num

A process number may be given, in which case the output is restricted to that process. This option must be supplied last.

Many of the options shown are used to select processes to list. If any are specified, the default list is ignored and ps selects the processes represented by the inclusive OR of all the selection-criteria options.

DISPLAY FORMATS

Under the –f option, ps tries to determine the command name and arguments given when the process was created by examining the user block. Failing this, the command name is printed, as it would have appeared without the –f option, in square brackets.

The column headings and the meaning of the columns in a ps listing are given below; the letters f and l indicate the option (full or long, respectively) that causes the corresponding heading to appear; all means that the heading always appears. Note: These two options determine only what information is provided for a process; they do not determine which processes are listed.

F(l)

Flags (hexadecimal and additive) associated with the process. These flags are available for historical purposes; no meaning should be currently ascribed to them.

S(l)

The state of the process:

O

Process is running on a processor.

S

Sleeping: process is waiting for an event to complete.

R

Runnable: process is on run queue.

T

Process is stopped, either by a job control signal or because it is being traced.

W

Waiting: process is waiting for CPU usage to drop to the CPU-caps enforced limits.

Z

Zombie state: process terminated and parent not waiting.

UID (f,l)

The effective user ID number of the process (the login name is printed under the –f option).

PID(all)

The process ID of the process (this datum is necessary in order to kill a process).

PPID(f,l)

The process ID of the parent process.

C(f,l)

Processor utilization for scheduling (obsolete). Not printed when the –c option is used.

CLS(f,l)

Scheduling class. Printed only when the –c option is used.

PRI(l)

The priority of the process. Without the –c option, higher numbers mean lower priority. With the –c option, higher numbers mean higher priority.

NI(l)

Nice value, used in priority computation. Not printed when the –c option is used. Only processes in the certain scheduling classes have a nice value.

ADDR(l)

The memory address of the process, 0 unless running with all privilege.

SZ(l)

The total size of the process in virtual memory, including all mapped files and devices, in pages. See pagesize(1).

WCHAN(l)

The address of an event for which the process is sleeping. Only visible when running with all privilege, otherwise it is 0. To determine if a process is sleeping, check the S column.

STIME(f)

The starting time of the process, given in hours, minutes, and seconds. (A process begun more than twenty-four hours before the ps inquiry is executed is given in months and days.)

TTY(all)

The controlling terminal for the process (the message, ?, is printed when there is no controlling terminal).

TIME(all)

The cumulative execution time for the process.

LTIME(all)

The execution time for the lwp being reported.

CMD(all)

The command name (the full command name and its arguments, up to a limit of 80 characters, are printed under the –f option).

The following two additional columns are printed when the –j option is specified:

PGID

The process ID of the process group leader.

SID

The process ID of the session leader.

The following two additional columns are printed when the –L option is specified:

LWP

The lwp ID of the lwp being reported.

NLWP

The number of lwps in the process (if –f is also specified).

Under the –L option, one line is printed for each lwp in the process and the time-reporting fields STIME and LTIME show the values for the lwp, not the process. A traditional single-threaded process contains only one lwp.

A process that has exited and has a parent, but has not yet been waited for by the parent, is marked <defunct>.

–o format

The –o option allows the output format to be specified under user control.

The format specification must be a list of names presented as a single argument, blank- or comma-separated. Each variable has a default header. The default header can be overridden by appending an equals sign and the new text of the header. The rest of the characters in the argument is used as the header text. The fields specified are written in the order specified on the command line, and should be arranged in columns in the output. The field widths are selected by the system to be at least as wide as the header text (default or overridden value). If the header text is null, such as –o user=, the field width is at least as wide as the default header text. If all header text fields are null, no header line is written.

The following names are recognized in the POSIX locale:

user

The effective user ID of the process. This is the textual user ID, if it can be obtained and the field width permits, or a decimal representation otherwise.

ruser

The real user ID of the process. This is the textual user ID, if it can be obtained and the field width permits, or a decimal representation otherwise.

group

The effective group ID of the process. This is the textual group ID, if it can be obtained and the field width permits, or a decimal representation otherwise.

rgroup

The real group ID of the process. This is the textual group ID, if it can be obtained and the field width permits, or a decimal representation otherwise.

pid

The decimal value of the process ID.

ppid

The decimal value of the parent process ID.

pgid

The decimal value of the process group ID.

pcpu

The ratio of CPU time used recently to CPU time available in the same period, expressed as a percentage. The meaning of ``recently'' in this context is unspecified. The CPU time available is determined in an unspecified manner.

vsz

The total size of the process in virtual memory, in kilobytes.

nice

The decimal value of the system scheduling priority of the process. See the nice(1) man page.

etime

The elapsed time since the process was started. In the POSIX locale, has the form:

[[dd-] hh:]mm:ss

where

dd

is the number of days

hh

is the number of hours

mm

is the number of minutes

ss

is the number of seconds

The dd field is a decimal integer. The hh, mm and ss fields is two-digit decimal integers padded on the left with zeros.

time

The cumulative CPU time of the process. In the POSIX locale, has the form:

[dd-]hh:mm:ss

The dd, hh, mm, and ss fields is as described in the etime specifier.

tty

The name of the controlling terminal of the process (if any) in the same format used by the who(1) command.

comm

The name of the command being executed (argv[0] value) as a string.

args

The command with all its arguments as a string. The implementation might truncate this value to the field width; it is implementation-dependent whether any further truncation occurs. It is unspecified whether the string represented is a version of the argument list as it was passed to the command when it started, or is a version of the arguments as they might have been modified by the application. Applications cannot depend on being able to modify their argument list and having that modification be reflected in the output of ps. The Oracle Solaris implementation does not limit the length of the string. The string is the version of the argument list as it was passed to the command when it started.

The following names are recognized in the Oracle Solaris implementation:

f

Flags (hexadecimal and additive) associated with the process.

s

The state of the process.

c

Processor utilization for scheduling (obsolete).

uid

The effective user ID number of the process as a decimal integer.

ruid

The real user ID number of the process as a decimal integer.

gid

The effective group ID number of the process as a decimal integer.

rgid

The real group ID number of the process as a decimal integer.

projid

The project ID number of the process as a decimal integer.

project

The project ID of the process as a textual value if that value can be obtained; otherwise, as a decimal integer.

zoneid

The zone ID number of the process as a decimal integer.

zone

The zone ID of the process as a textual value if that value can be obtained; otherwise, as a decimal integer.

sid

The process ID of the session leader.

taskid

The task ID of the process.

class

The scheduling class of the process.

pri

The priority of the process. Higher numbers mean higher priority.

opri

The obsolete priority of the process. Lower numbers mean higher priority.

lwp

The decimal value of the lwp ID. Requesting this formatting option causes one line to be printed for each lwp in the process.

lname

The thread name of the lwp ID. Requesting this formatting option causes one line to be printed for each lwp in the process.

nlwp

The number of lwps in the process.

psr

The number of the processor to which the process or lwp is bound.

pset

The ID of the processor set to which the process or lwp is bound.

addr

The memory address of the process.

osz

The total size of the process in virtual memory, in pages.

wchan

The address of an event for which the process is sleeping (if −, the process is running).

stime

The starting time or date of the process, printed with no blanks.

rss

The resident set size of the process, in kilobytes. The rss value reported by ps is an estimate provided by proc(5) that might underestimate the actual resident set size. Users who wish to get more accurate usage information for capacity planning should use pmap(1) –x instead.

rssprivate

The resident set size of the process, in kilobytes, of the private, non-shared mappings.

rssshared

The resident set size of the process, in kilobytes, of the non-private, shared mappings. The sum of rssshared and rssprivate equals rss.

pmem

The ratio of the process's resident set size to the physical memory on the machine, expressed as a percentage.

fname

The first 8 bytes of the base name of the process's executable file.

ctid

The contract ID of the process contract the process is a member of as a decimal integer.

lgrp

The home lgroup of the process.

env

The initial environment of the process.

Only comm, args, lname, and env are allowed to contain blank characters; all others, including the Oracle Solaris implementation variables, are not.

The following table specifies the default header to be used in the POSIX locale corresponding to each format specifier.

Format Specifier
Default Header
Format Specifier
Default Header
args
COMMAND
ppid
PPID
comm
COMMAND
rgroup
RGROUP
etime
ELAPSED
ruser
RUSER
group
GROUP
time
TIME
nice
NI
tty
TT
pcpu
%CPU
user
USER
pgid
PGID
vsz
VSZ
pid
PID

The following table lists the Oracle Solaris implementation format specifiers and the default header used with each.

Format Specifier
Default Header
Format Specifier
Default Header
addr
ADDR
pri
PRI
c
C
project
PROJECT
class
CLS
projid
PROJID
ctid
CTID
psr
PSR
env
ENVIRONMENT
rgid
RGID
f
F
rss
RSS
fname
COMMAND
ruid
RUID
gid
GID
s
S
lgrp
LGRP
sid
SID
lwp
LWP
stime
STIME
lname
LNAME
taskid
TASKID
nlwp
NLWP
uid
UID
opri
PRI
wchan
WCHAN
osz
SZ
zone
ZONE
pmem
%MEM
zoneid
ZONEID

Examples

Example 1 Using ps Command

The command:

example% ps -o user,pid,ppid=MOM -o args

writes the following in the POSIX locale:

 USER  PID   MOM   COMMAND
helene  34    12   ps -o uid,pid,ppid=MOM -o args

The command:

example% ps -u $USER -O tty:10,pcpu

writes the following in the POSIX locale:

  PID TTY            TIME CMD      %CPU
 8273 kz/term/1      0:00 ps        0.0
  850 console        0:00 tcsh      0.0
 7799 kz/term/1      0:00 tcsh      0.0

The command:

example% ps -u $USER -O -tty

writes the following in the POSIX locale:

  PID      TIME CMD
 8273      0:00 ps
  850      0:00 tcsh
 7799      0:00 tcsh

Environment Variables

See environ(7) man page for descriptions of the following environment variables that affect the execution of ps: LANG, LC_ALL, LC_CTYPE, LC_MESSAGES, LC_TIME, and NLSPATH.

COLUMNS

Override the system-selected horizontal screen size, used to determine the number of text columns to display.

Exit Status

The following exit values are returned:

0

Successful completion

>0

An error occurred

Files

/dev/pts/*

list of terminal devices

/dev/term/*

terminal (``tty'') names searcher files

/etc/passwd

UID information supplier

/proc/*

process control files

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Availability
system/core-os
CSI
Enabled (see USAGE)
Interface Stability
Committed
Standard
See the standards(7) man page.

See Also

kill(1), lgrpinfo(1), nice(1), pagesize(1), pmap(1), priocntl(1), who(1), proc(5), ttysrch(5), attributes(7), environ(7), resource-controls(7), standards(7), zones(7), getty(8)

Notes

Things can change while ps is running. The snapshot it gives is true only for a split-second, and it might not be accurate by the time you see it. Some data printed for defunct processes is irrelevant.

If no options to select processes are specified, ps reports all processes associated with the controlling terminal. If there is no controlling terminal, there is no report other than the header.

ps –ef or ps –o stime might not report the actual start of a tty login session, but rather an earlier time, when a getty was last respawned on the tty line.

On prior releases the ADDR and WCHAN fields might have contained the kernel memory address of the process and/or event it was waiting on. These fields are now always 0 unless requested by a process running with all privilege. The values can still be obtained using the ::ps and ::thread dcmds within mdb.

ps is CSI-enabled except for login names (usernames).

When run in the global zone, user and group name resolutions are done using the global zone's name services. Processes running in a non-global zone that are displayed by ps, have user and group names that match with those found in the global zone's name services, but they may differ from the name services configured in non-global zones.