Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
PS(1)			      Linux User's Manual			 PS(1)


       ps - report process status

       ps [options]

       ps  gives a snapshot of the current processes. If you want a repetitive
       update of this status, use top. This man	page documents the /proc-based
       version of ps, or tries to.

       This version of ps accepts several kinds	of options.
	      Unix98 options may be grouped and	must be	preceeded by a dash.
	      BSD options may be grouped and must not be used with a dash.
	      GNU long options are preceeded by	two dashes.
       Options of different types may be freely	mixed.

       Set  the	 I_WANT_A_BROKEN_PS  environment  variable to force BSD	syntax
       even when options are preceeded by a dash. The PS_PERSONALITY  environ-
       ment  variable  (described  below) provides more	detailed control of ps

       Switch	    Description

       ()									   ()

       -A	    select all processes
       -N	    negate selection
       -a	    select all with a tty except session leaders
       -d	    select all,	but omit session leaders
       -e	    select all processes
       T	    select all processes on this terminal
       a	    select all processes on a terminal,	 includ-
		    ing	those of other users
       g	    really all,	even group leaders (does nothing
		    w/o	SunOS settings)
       r	    restrict output to running processes
       x	    select processes without controlling ttys
       --deselect   negate selection

       Switch	 Description

       ()									   ()

       -C	 select	by command name
       -G	 select	by RGID	(supports names)
       -U	 select	by RUID	(supports names)
       -g	 select	by session leader OR by	group name
       -p	 select	by PID
       -s	 select	processes belonging to the sessions given
       -t	 select	by tty
       -u	 select	by effective user ID (supports names)
       U	 select	processes for specified	users
       p	 select	by process ID
       t	 select	by tty
       --Group	 select	by real	group name or ID
       --User	 select	by real	user name or ID
       --group	 select	by effective group name	or ID
       --pid	 select	by process ID
       --sid	 select	by session ID
       --tty	 select	by terminal
       --user	 select	by effective user name or ID
       -123	 implied --sid
       123	 implied --pid

       Switch	  Description

       ()									   ()

       -O	  is preloaded "-o"
       -c	  different scheduler info for -l option
       -f	  does full listing
       -j	  jobs format
       -l	  long format
       -o	  user-defined format
       -y	  do not show flags; show rss in place of addr
       O	  is preloaded "o" (overloaded)
       X	  old Linux i386 register format
       j	  job control format
       l	  display long format
       o	  specify user-defined format
       s	  display signal format
       u	  display user-oriented	format
       v	  display virtual memory format
       --format	  user-defined format

       Switch	      Description

       ()									   ()

       -H	      show process hierarchy (forest)
       -m	      show all threads
       -n	      set namelist file
       -w	      wide output
       C	      use raw CPU time for %CPU	instead	of decaying average
       N	      specify namelist file
       O	      sorting order (overloaded)
       S	      include some dead	child process data (as a  sum  with
		      the parent)
       c	      true command name
       e	      show environment after the command
       f	      ASCII-art	process	hierarchy (forest)
       h	      do not print header lines	(repeat	header lines in	BSD
       m	      all threads
       n	      numeric output for WCHAN and USER
       w	      wide output
       --cols	      set screen width
       --columns      set screen width
       --cumulative   include some dead	child process data (as a  sum  with
		      the parent)
       --forest	      ASCII art	process	tree
       --html	      HTML escaped output
       --headers      repeat header lines
       --no-headers   print no header line at all
       --lines	      set screen height
       --nul	      unjustified output with NULs
       --null	      unjustified output with NULs
       --rows	      set screen height
       --sort	      specify sorting order
       --width	      set screen width
       --zero	      unjustified output with NULs

       Switch	   Description

       ()									   ()

       -V	   print version
       L	   list	all format specifiers
       V	   show	version	info
       --help	   print help message
       --info	   print debugging info
       --version   print version

       Switch	Description

       ()									   ()

       A	increase the argument space (DecUnix)
       M	use alternate core (try	-n or N	instead)
       W	get swap info from ... not /dev/drum (try -n or	N instead)
       k	use /vmcore as c-dumpfile (try -n or N instead)

       The  "-g" option	can select by session leader OR	by group name.	Selec-
       tion by session leader is specified by many standards, but selection by
       group is	the logical behavior that several other	operating systems use.
       This ps will select by session leader when the list is  completely  nu-
       meric  (as  sessions  are).  Group  ID numbers will work	only when some
       group names are also specified.

       The "m" option should not be used. Use "-m" or "-o" with	a list.	  ("m"
       displays	memory info, shows threads, or sorts by	memory use)

       The  "h"	 option	 is  problematic.   Standard BSD ps uses the option to
       print a header on each page of output, but older	Linux ps uses the  op-
       tion  to	 totally  disable  the header.	This version of	ps follows the
       Linux usage of not printing the header unless the BSD  personality  has
       been selected, in which case it prints a	header on each page of output.
       Regardless of the current personality, you can  use  the	 long  options
       --headers  and  --no-headers  to	 enable	printing headers each page and
       disable headers entirely, respectively.

       Terminals (ttys,	or screens of text output) can be specified in several
       forms:  /dev/ttyS1,  ttyS1, S1. Obsolete	"ps t" (your own terminal) and
       "ps t?" (processes without a terminal) syntax is	supported, but	modern
       options	("T",  "-t"  with list,	"x", "t" with list) should be used in-

       The BSD "O" option can act like "-O" (user-defined output  format  with
       some  common  fields  predefined) or can	be used	to specify sort	order.
       Heuristics are used to determine	the behavior of	this option. To	ensure
       that  the desired behavior is obtained, specify the other option	(sort-
       ing or formatting) in some other	way.

       For sorting, BSD	"O" option syntax is  O[+|-]k1[,[+|-]k2[,...]]	 Order
       the  process  listing according to the multilevel sort specified	by the
       sequence	of short keys from SORT	KEYS, k1, k2, ... The `+' is quite op-
       tional,	merely	re-iterating  the  default direction on	a key. `-' re-
       verses direction	only on	the key	it precedes. The O option must be  the
       last option in a	single command argument, but specifications in succes-
       sive arguments are catenated.

       GNU sorting syntax is --sortX[+|-]key[,[+|-]key[,...]]  Choose a	multi-
       letter  key from	the SORT KEYS section. X may be	any convenient separa-
       tor character. To be GNU-ish use	`='. The `+' is	really optional	 since
       default	direction  is increasing numerical or lexicographic order. For
       example,	ps jax --sort=uid,-ppid,+pid

       This ps works by	reading	the virtual files in /proc. This ps  does  not
       need to be suid kmem or have any	privileges to run. Do not give this ps
       any special permissions.

       This ps needs access to a namelist file for proper WCHAN	display.   The
       namelist	 file  must match the current Linux kernel exactly for correct

       To produce the WCHAN field, ps needs to read the  file  cre-
       ated when the kernel is compiled. The search path is:
	      /boot/`uname -r`
	      /lib/modules/`uname -r`/
       The  member  used_math of task_struct is	not shown, since crt0.s	checks
       to see if math is present. This causes the math flag to be set for  all
       processes,  and	so  it	is worthless. (Somebody	fix libc or the	kernel

       Programs	swapped	out to disk will be shown without command  line	 argu-
       ments, and unless the c option is given,	in brackets.

       %CPU  shows the cputime/realtime	percentage. It will not	add up to 100%
       unless you are lucky. It	is time	used divided by	the time  the  process
       has been	running.

       The SIZE	and RSS	fields don't count the page tables and the task_struct
       of a proc; this is at least 12k of memory that is always	resident. SIZE
       is the virtual size of the proc (code+data+stack).

       Processes  marked  <defunct>  are  dead processes (so-called "zombies")
       that remain because their parent	has not	destroyed them properly. These
       processes will be destroyed by init(8) if the parent process exits.

       FORKNOEXEC   1	forked but didn't exec
       SUPERPRIV    2	used super-user	privileges
       DUMPCORE	    4	dumped core

       D   uninterruptible sleep (usually IO)
       R   runnable (on	run queue)
       S   sleeping
       T   traced or stopped
       Z   a defunct ("zombie")	process

       For BSD formats and when	the "stat" keyword is used, additional letters
       may be displayed:

       W   has no resident pages
       <   high-priority process
       N   low-priority	task
       L   has pages locked into memory	(for real-time and custom IO)

       Note that the values used in sorting are	the internal  values  ps  uses
       and  not	 the `cooked' values used in some of the output	format fields.
       Pipe ps output into the sort(1) command if you want to sort the	cooked


       ()									   ()

       c     cmd	  simple name of executable
       C     cmdline	  full command line
       f     flags	  flags	as in long format F field
       g     pgrp	  process group	ID
       G     tpgid	  controlling tty process group	ID
       j     cutime	  cumulative user time
       J     cstime	  cumulative system time
       k     utime	  user time
       K     stime	  system time
       m     min_flt	  number of minor page faults
       M     maj_flt	  number of major page faults
       n     cmin_flt	  cumulative minor page	faults
       N     cmaj_flt	  cumulative major page	faults
       o     session	  session ID
       p     pid	  process ID
       P     ppid	  parent process ID
       r     rss	  resident set size
       R     resident	  resident pages
       s     size	  memory size in kilobytes
       S     share	  amount of shared pages
       t     tty	  the minor device number of tty
       T     start_time	  time process was started
       U     uid	  user ID number
       u     user	  user name
       v     vsize	  total	VM size	in bytes
       y     priority	  kernel scheduling priority

       This  ps	 supports AIX format descriptors, which	work somewhat like the
       formatting codes	of printf(1) and printf(3). For	 example,  the	normal
       default output can be produced with this:   ps -eo "%p %y %x %c"


       ()									   ()

       %C     pcpu     %CPU
       %G     group    GROUP
       %P     ppid     PPID
       %U     user     USER
       %a     args     COMMAND
       %c     comm     COMMAND
       %g     rgroup   RGROUP
       %n     nice     NI
       %p     pid      PID
       %r     pgid     PGID
       %t     etime    ELAPSED
       %u     ruser    RUSER
       %x     time     TIME
       %y     tty      TTY
       %z     vsz      VSZ

       These may be used to control both output	format and sorting.
       For example:  ps	-eo pid,user,args --sort user

       CODE	     HEADER

       ()									   ()

       %cpu	     %CPU
       %mem	     %MEM
       alarm	     ALARM
       args	     COMMAND
       blocked	     BLOCKED
       bsdstart	     START
       bsdtime	     TIME
       c	     C
       caught	     CAUGHT
       cp	     CP
       cpu	     CPU
       cmd	     CMD
       comm	     COMMAND
       command	     COMMAND
       cputime	     TIME
       drs	     DRS
       dsiz	     DSIZ
       egid	     EGID
       egroup	     EGROUP
       eip	     EIP
       esp	     ESP
       etime	     ELAPSED
       euid	     EUID
       euser	     EUSER
       f	     F
       fgid	     FGID
       fgroup	     FGROUP
       flag	     F
       flags	     F
       fname	     COMMAND
       fsgid	     FSGID
       fsgroup	     FSGROUP
       fsuid	     FSUID
       fsuser	     FSUSER
       fuid	     FUID
       fuser	     FUSER
       gid	     GID
       group	     GROUP
       ignored	     IGNORED
       intpri	     PRI
       lim	     LIM
       longtname     TTY
       lstart	     STARTED
       m_drs	     DRS
       m_trs	     TRS
       maj_flt	     MAJFL
       majflt	     MAJFLT
       min_flt	     MINFL
       minflt	     MINFLT
       ni	     NI
       nice	     NI
       nwchan	     WCHAN

       opri	     PRI
       pagein	     PAGEIN
       pcpu	     %CPU
       pending	     PENDING
       pgid	     PGID
       pgrp	     PGRP
       pid	     PID
       pmem	     %MEM
       policy	     POL
       ppid	     PPID
       pri	     PRI
       rgid	     RGID
       rgroup	     RGROUP
       rss	     RSS
       rssize	     RSS
       rsz	     RSZ
       rtprio	     RTPRIO
       ruid	     RUID
       ruser	     RUSER
       s	     S
       sess	     SESS
       session	     SESS
       sgi_p	     P
       sgi_rss	     RSS
       sgid	     SGID
       sgroup	     SGROUP
       sid	     SID
       sig	     PENDING
       sig_block     BLOCKED
       sig_catch     CATCHED
       sig_ignore    IGNORED
       sig_pend	     SIGNAL
       sigcatch	     CAUGHT
       sigignore     IGNORED
       sigmask	     BLOCKED
       stackp	     STACKP
       start	     STARTED
       start_stack   STACKP
       start_time    START
       stat	     STAT
       state	     S
       stime	     STIME
       suid	     SUID
       suser	     SUSER
       svgid	     SVGID
       svgroup	     SVGROUP
       svuid	     SVUID
       svuser	     SVUSER
       sz	     SZ
       time	     TIME
       timeout	     TMOUT
       tmout	     TMOUT
       tname	     TTY
       tpgid	     TPGID
       trs	     TRS
       trss	     TRSS
       tsiz	     TSIZ
       tt	     TT
       tty	     TT
       tty4	     TTY
       tty8	     TTY
       ucomm	     COMMAND
       uid	     UID
       uid_hack	     UID
       uname	     USER

       user	     USER
       vsize	     VSZ
       vsz	     VSZ
       wchan	     WCHAN

       The following environment variables could affect	ps:

       COLUMNS		    Override default display width
       LINES		    Override default display height
       PS_PERSONALITY	    Set	to one of posix,old,linux,bsd,sun,digital
       CMD_ENV		    Set	to one of posix,old,linux,bsd,sun,digital
       I_WANT_A_BROKEN_PS   Force obsolete command line	interpretation
       LC_TIME		    Date format
       PS_FORMAT	    Default output format override
       PS_SYSMAP	    Default namelist ( location
       PS_SYSTEM_MAP	    Default namelist ( location
       POSIXLY_CORRECT	    Don't find excuses to ignore bad "features"
       UNIX95		    Don't find excuses to ignore bad "features"
       _XPG		    Cancel CMD_ENV=irix	non-standard behavior

       In general, it is a bad idea to set these variables. The	two exceptions
       are CMD_ENV (or PS_PERSONALITY),	to set the desired  default  personal-
       ity,  and  POSIXLY_CORRECT  (or UNIX95),	which should be	set for	Unix98
       standard	compliance.

       PS_PERSONALITY	Description

       ()									   ()

       none		"Do the	right thing"
       aix		like AIX ps
       bsd		like FreeBSD ps
       compaq		like Digital Unix ps
       debian		like the old Debian ps
       digital		like Digital Unix ps
       gnu		like the old Debian ps
       hp		like HP-UX ps
       hpux		like HP-UX ps
       irix		like Irix ps
       linux		deviate	from Unix98 for	convenience only
       old		like the original Linux	ps
       posix		standard
       sco		like SCO ps
       sgi		like Irix ps
       sun		like SunOS 4 ps
       sunos		like SunOS 4 ps
       sysv		standard
       unix		standard
       unix95		standard
       unix98		standard

       To see every process on the system using	standard syntax:
	      ps -e
       To see every process on the system using	BSD syntax:
	      ps ax
       To see every process except those running as root (real & effective ID)
	      ps -U root -u root -N
       To see every process with a user-defined	format:
	      ps -eo pid,tt,user,fname,tmout,f,wchan
       Odd display with	AIX field descriptors:
	      ps -o "%u	: %U : %p : %a"
       Print only the process IDs of syslogd:
	      ps -C syslogd -o pid=

       top(1) pstree(1)	proc(5)

       This ps can be set to conform to	version	2 of the Single	Unix  Specifi-

       ps was originally written by Branko Lankester <>.
       Michael	K.  Johnson <> re-wrote it significantly to
       use the proc filesystem,	changing a few things in the process.
       Michael Shields <> added	the pid-list feature.
       Charles Blake <> added multi-level	sorting,  the  dirent-
       style  library, the device name-to-number mmaped	database, the approxi-
       mate binary search directly on, and many code	and documenta-
       tion cleanups.
       David Mosberger-Tang wrote the generic BFD support for psupdate.
       Albert Cahalan <> rewrote ps for full	Unix98 and BSD
       support,	along with some	ugly hacks for obsolete	and foreign syntax.

       Michael K. Johnson <>	is the current maintainer.

       Please send bug reports to <>



Want to link to this manual page? Use this URL:

home | help