psinfo

   psinfo

  사용법


	psinfo -V
	psinfo [-c|-m|-h|-r|-s|-e|-l|-T|-C] [-t n] [-I [-d delimiter]] [-R][-z zone][-Z] [-E | -f] [-0][-k] [interval [count]]
	psinfo {-c|-m|-h|-r|-s|-e|-l|-T|-C} [filter_options] [-t n] [-I [-d delimiter]] [-R][-z zone][-Z] [-E | -f] [-0][-k] [interval [count]]
	psinfo -A [filter_options] [-R][-z zone][-Z] [interval [count]]
	psinfo -a [filter_options] [-I [-d delimi_er]] [-R][-z zone][-Z] [-f] [-0][-k] [interval [count]]
	psinfo -j [filter_options] [-t n] [-I [-d delimiter]] [-R][-z zone][-Z] [-E | -f] [-0][-k] [interval [count]]
	psinfo -g [!]strings [filter_options] [-I [-d delimiter]] [-R][-z zone][-Z] [-E | -f] [-0][-k] [interval [count]]
	psinfo -G [!]cmd_names [filter_options] [-I [-d delimiter]] [-R][-z zone][-Z] [-E | -f] [-0][-k] [interval [count]]
	psinfo -H [-z zone | -Z] [-k] [interval [count]]
	psinfo -M condition[,condition,...] [filter_options] [-I [-d delimiter]] [-R][-z zone][-Z] [-E | -f] [-k] [interval [count]]
	psinfo -p plist [filter_options] [-R][-z zone][-Z] [-E | -f] [-0][-k] [interval [count]]
	psinfo -P pid [filter_options] [-R][-z zone][-Z] [-E | -f] [-0][-k] [interval [count]]
	psinfo -S [-c|-h|-l|-T|-n|-e|-C] {[-t n] | [-a]} [filter_options] [-z zone] [-0][-k] [interval [count]]
	psinfo -S -N cmd_names [filter_options] [-z zone] [-0][-k] [interval [count]]
	psinfo -S -Z [-c|-h|-l|-T|-n|-e|-C] {[-t n] | [-a]} [filter_options] [-0][-k] [interval [count]]
	psinfo -S -Z -N zonenames [filter_options] [-0][-k] [interval [count]]
	psinfo -U {[-c|-h|-l|-T|-n|-e|-C] {[-t n] | [-a]} [filter_options] [-0][-k] [-R] [-z zone] [interval [count]]
	psinfo -U -N user_names [filter_options] [-0][-k] [-R] [-z zone] [interval [count]]
	psinfo -u [!]users [filter_options] [-I [-d delimiter]] [-R][-z zone][-Z] [-E | -f] [-0][-k] [interval [count]]
	psinfo -o [filter_options] [-E | -f] [-0][-k] [-I [-d delimiter]] [-R][-z zone][-Z] [interval [count]]
	psinfo -x [filter_options] [-a] [-E | -f] [-0][-k] [-I [-d delimiter]] [-R][-z zone][-Z] [interval [count]]
	psinfo -y [filter_options] [-E | -f] [-0][-k] [-I [-d delimiter]] [-R][-z zone][-Z] [interval [count]]
	psinfo -6 [filter_options] [-a] [-E | -f] [-0][-k] [-I [-d delimiter]] [-R][-z zone][-Z] [interval [count]]

	Options are as follows:

	-?               print this help
	-.               display ELAPSED time in 'hour.second' format
	-0               insert DATE.TIME info at the first column
	-6               display 64-bit processes
	-a               display all the processes
	-A               display all the processes with full data
	-c               sort by CPU%; default option
	-C               sort by CHILDTIME
	-d delimiter     specify delimiter with -I option (def: space)
	-e               sort by ELAPSED
	-E               show CHILDTIME column
	-f               short format
	-g [!]strings    grep string on CMDLINE; strings: string1[,string2,...]
	-G [!]cmd_names  match the last component of command pathname; cmd_names: cmd_name1[,cmd_name2,...]
	-h               sort by HP+STK
	-H               display only header information
	-I               display only PIDs of processes
	-j               sort by CPU% and additional top five HP+STK processes
	-k               display SIZE, RSS and HP+STK in kilobyte
	-l               sort by NLWP
	-m               sort by MEM%,(equal to RSS)
	-M condition     print processes that meet the condition
	                 condition is: name=value
	                 name is: size,rss,hs,state,nlwp,wcpu,wcpu1,cpu,mem,time,childtime,elapsed
	                 example) psinfo -M wcpu=90,hs=50
	-n               sort by NPROC
	-o               show processes which are running on CPU or waiting for CPU
	-p plist         process list(separated by comma) to monitor
	-P pid           display processes whose parent process ID is pid
	-N cmd_names     match the last component of command pathname with -S option
	-N user_names    match user name with -U option
	-r               sort by RSS
	-R               show real user name instead of effective user name
	-s               sort by SIZE
	-S               summarize by the same processes
	-t n             the number of processes: 1 <= n <= 100; def: 20
	-T               sort by TIME
	-u [!]users      filter by user; users: user1[,user2,...]
	-U               summarize by the same users
	-V               show version
	-x               show processes whose effective user ID is not equal to real user ID
	-y               show processes which are stopped
	-z zone          filter by zone
	-Z               print zone name in the output lines
	filter_options   [-g [!]strings | -G [!]cmd_names] [-u [!]users]

	interval         interval time(second)
	count            times to get the info

  설명

psinfo 명령어는 프로세스의 상태정보를 보여주는 명령어이다.
psinfo 명령어를 옵션 없이 실행하면, CPU 사용률이 제일 많은 순서로 20개의 프로세스를 화면에 출력한다. 이 결과를 가지고 시스템에서 CPU를 많이 사용하고 있는 프로세스가 무엇인지 확인할 수 있다.

# psinfo
Date.time 0729.12:45:34 proc 173 zomb 0 run 1 lwp 234 cpu 10.11% load1m 0.11 ptime 1208.0834 hp+stk 280.8M
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
  315   829 root     20.67M 19.37M 7.492M S    1   3.76%  3.76% 15.9%  0d33544    10:12.0102 netscape
  471   389 guest    7.719M 4.977M 1.289M S    6   1.67%  1.67%  4.1%  0d33407    02:00.0102 dtwm
  526   425 guest    13.60M 10.68M 7.781M S    1   1.30%  1.30%  8.7%  0d33395       34.1232 dtterm -sdtserver
 3216  1222 root     1.078M 0.906M 0.070M O    1   1.10%  1.10%  0.7%     0d10       19.0832 gwserv
 3870  2484 root     4.445M 3.930M 0.469M S    1   0.17%  0.17%  3.2%   0d2043       05.6749 perfmon
... skip ...

또한 -h 옵션을 사용하면, 프로세스가 실행되면서 다이나믹하게 할당 받은 메모리 크기 순서로 정렬하여 볼 수 있다.

# /opt/JSparm/bin/psinfo -h
Date.time 0123.12:27:07 proc 119 zomb 5 run 2 lwp 324 cpu 15.26% load1m 0.24 ptime 3298.2787 hp+stk 250.3M
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
19440 19438 guest    131.0M 84.38M 107.4M R    1   4.90%  4.90% 17.0%  8d73139 03:00:59.8623 netscape
13217 13216 nobody   44.42M 10.82M 26.12M S   59   0.00%  0.00%  2.2%   1d7702       16.1458 ns-httpd -d config
  200     1 root     6.070M 1.555M 2.875M S   10   0.00%  0.00%  0.3% 58d11424       16.6110 /usr/sbin/syslogd
  283     1 oracle   63.89M 41.88M 2.547M S    1   0.00%  0.00%  8.5% 58d11409       09.8534 ora_pmon_SOL
19345 19325 guest    9.258M 6.805M 2.141M S    7   0.68%  0.68%  1.4%  8d73245    05:59.8349 dtwm
19904 19903 guest    7.172M 4.438M 1.594M S    1   0.00%  0.00%  0.9%  8d66806       09.3740 dtpad -server
19339     1 guest    4.383M 3.250M 1.266M S    4   0.00%  0.00%  0.7%  8d73246       26.7633 /usr/dt/bin/ttsession
  285     1 oracle   63.02M 44.93M 1.258M S   22   0.00%  0.00%  9.1% 58d11409       02.3392 ora_dbw0_SOL
  ... skip ...

프로세스가 메모리를 할당 받으면, 그 메모리는 heap 영역을 차지한다. 만일 프로세스의 heap의 크기가 큰 프로세스가 있다면, 프로세스가 그 만큼의 메모리를 차지하는 프로세스인지 판단하여야 한다. 만일 프로그램의 특성상 메모리를 많이 사용할 필요가 없는 프로세스가 메모리를 많이 사용한다면, 그 프로세스가 메모리를 잘못 관리하기 때문이다.

-e 옵션을 사용하면, 최근에 실행된 순서로 프로세스 정보를 보여준다.

# /opt/JSparm/bin/psinfo -e
Date.time 0312.21:37:59 proc 69 zomb 1 run 0 lwp 150 cpu 1.49% load1m 0.05 ptime 12380.2334 hp+stk 67.21M
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
 1812  1811 root     1.242M 1.008M 0.117M O    1   0.29%  0.29%  0.8%      0d0       00.0623 psinfo -e
 1811   432 root     0.289M 0.289M 0.023M S    1   0.27%  0.27%  0.2%      0d5       00.0732 sh
 1813   407 guest    1.711M 1.180M 0.039M S    1   0.03%  0.03%  1.0%     0d29       00.0346 more /etc/termcap
 1791     1 root     0.672M 0.305M 0.062M S    1   0.00%  0.00%  0.3%    0d416       00.0500 /sbin/dhcpagent
 1788   419 root     0.289M 0.289M 0.023M S    1   0.00%  0.00%  0.2%    0d421       00.0602 sh
 1791     1 root     0.672M 0.305M 0.062M S    1   0.00%  0.00%  0.3%    0d535       00.0523 /sbin/dhcpagent
 1788   419 root     0.289M 0.289M 0.023M S    1   0.00%  0.00%  0.2%    0d540       00.0602 sh
  723   722 guest    20.00M 4.672M 0.148M S    1   0.00%  0.00%  3.9%   0d5196       00.1629 (dns helper)
  722   427 guest    42.64M 34.20M 20.82M S    1   0.04%  0.04% 28.8%   0d5196    01:04.3402 /opt/netscape/netscape
  432   391 guest    1.828M 1.219M 0.055M S    1   0.00%  0.00%  1.0%    1d340       00.8355 /usr/bin/ksh
  ... skip ...

이 옵션을 사용하여 최근에 실행된 프로세스가 무엇인지 확인할 수 있다. 여기서 ELAPSED에 표시된 숫자의 의미는 다음과 같다.

days d seconds

1d340은 그 프로세스가 실행된지 1일 340초가 지났다는 의미이다. 즉, 그 프로세스가 1일 340초 전에 실행되었다는 것을 의미한다.

psinfo 명령어의 옵션을 사용하면, 다음과 같은 컬럼에 대하여 정렬하는 순서를 지정할 수 있다.

컬럼 설명 옵션
SIZE 메모리가 큰 프로세스 순서 psinfo -s
RSS 프로세스 메모리 중에 물리적 메모리에 많이 적재된 프로세스 순서 psinfo -r
HP+STK Heap 과 Stack을 더한 크기가 큰 프로세스 순서 psinfo -h
NLWP LWP(light-weight process)가 많은 프로세스 순서 psinfo -l
WCPU%, CPU% CPU 사용률이 많은 프로세스 순서
WCPU% = CPU% * number of processors(CPU)
psinfo [-c]
MEM% 메모리 사용률이 많은 프로세스 순서(RSS 순서와 같음) psinfo -m
ELAPSED 최근에 실행된 프로세스 순서 psinfo -e
TIME CPU의 누적 사용시간이 많은 프로세스 순서 psinfo -T
CHILDTIME 자식 프로세스의 CPU의 누적 사용시간이 많은 프로세스 순서 psinfo -C
NPROC 프로세스 개수가 많은 순서.( -S 또는 -U 옵션에서만 사용 가능) psinfo -S -n
psinfo -U -n
-f 옵션을 사용하면, 80 컬럼 터미널에 맞게 출력되도록 몇 개의 컬럼을 표시하지 않고, 명령어 라인 대신 명령어 이름(CMD)만 표시한다.

# /opt/JSparm/bin/psinfo -f
Date.time 0312.21:54:37 proc 69 zomb 0 run 0 lwp 151 cpu 5.44% load1m 0.07 ptime 12380.7330 hp+stk 67.35M
  PID USERNAME HP+STK S NLWP   WCPU%   CPU%  ELAPSED          TIME CMD
  272 guest    14.71M S    1   2.09%  2.09%   0d9430    02:10.2363 Xsun
  722 guest    20.82M S    1   1.29%  1.29%   0d6194    01:35.2238 netscape
 1808 guest    0.047M S    1   0.72%  0.72%   0d1103       01.3934 vi
  391 guest    7.484M S    1   0.46%  0.46%   0d9360       21.3402 dtterm
  330 guest    10.78M S   15   0.35%  0.35%   0d9378       22.1340 java
 1821 root     0.117M O    1   0.29%  0.29%      0d0       00.0623 psinfo
  390 guest    1.070M S    1   0.10%  0.10%   0d9360       00.6134 dtterm
  371 guest    1.633M S    8   0.09%  0.09%   0d9369       20.2816 dtwm
  271 root     0.164M S   12   0.02%  0.02%   0d9432       04.3581 mibiisa
    3 root     0.016M S    1   0.02%  0.02%   0d9492       03.8195 fsflush
    0 root     0.016M T    1   0.00%  0.00%   0d9495       00.2208 sched
    1 root     0.078M S    1   0.00%  0.00%   0d9492       00.1430 init
  ... skip ...

모든 프로세스의 내용을 보려면,   # psinfo -a 를 사용할 수 있다. 이 경우에는 프로세스의 정렬 순서는 없다.

만일 60초 간격으로 100회 동안 CPU를 많이 사용하는 프로세스 순서로 보고 싶다면, 다음과 같이 할 수 있다.

# psinfo 60 100
... skip ...

만일 프로세스 정보를 저장한 후에 나중에 그 내용을 분석하려면 # psinfo -A를 사용하여 저장하여야 한다. -A 옵션으로 수집한 데이타는 psparse 명령어를 사용하여 다양한 정렬 순서로 가공해 볼 수 있다.

# psinfo -A 60 600 > psinfo-A.log
# psparse pspinfo-A.log
... skip ...
# psparse -h pspinfo-A.log
... skip ...
# psparse -S pspinfo-A.log
... skip ...

만일 특정 프로세스를 계속 모니터하고 싶을 경우에는 다음과 같이 -p 옵션을 사용할 수 있다.

# psinfo -p 1964 5
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED           TIME CMDLINE
 1964  1911 guest    1.227M 1.000M 0.039M R    1   1.73%  1.73%  0.8%      0d6       00.3212 find / -print
 1964  1911 guest    1.227M 1.000M 0.039M S    1   2.68%  2.68%  0.8%     0d11       00.6710 find / -print
 1964  1911 guest    1.227M 1.000M 0.039M R    1   3.49%  3.49%  0.8%     0d16       01.2929 find / -print
 1964  1911 guest    1.227M 1.000M 0.039M S    1   4.44%  4.44%  0.8%     0d21       01.7935 find / -print
 1964  1911 guest    1.227M 1.000M 0.039M S    1   4.77%  4.77%  0.8%     0d26       01.9333 find / -print
 1964  1911 guest    1.227M 1.000M 0.039M S    1   5.03%  5.03%  0.8%     0d31       02.2391 find / -print
 ... skip ...

위의 명령어는 PID 1964인 프로세스를 5초 간격으로 조사하여 화면에 출력한다.

만일, 일정 조건에 해당하는 프로세스를 주기적으로 관찰하려면, 다음과 같이 -M 옵션을 사용할 수 있다.

# psinfo -M wcpu=70,hs=40 60
    Date.time   PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
0421.09:54:20  1652  1646 guest    28.93M 22.04M 13.71M S    1  72.35% 72.35% 18.0%    0d520    01:50.0230 a.out
0421.09:55:20  1652  1646 guest    28.93M 22.04M 13.71M S    1  74.05% 74.05% 18.0%    0d580    02:30.2395 a.out
0421.09:56:20  1652  1646 guest    28.93M 22.04M 13.71M S    1  73.35% 73.35% 18.0%    0d640    03:10.1359 a.out
 ... skip ...

위의 명령어는 60초 간격으로 WCPU 사용률이 70% 이상이거나 HP+STK(heap+stack)의 크기가 40MB 이상인 프로세스를 화면에 출력한다.

이 명령어와 cron을 이용하면, 매일 CPU 사용률이 일정 수준 이상이거나 HP+STK가 일정 수준 이상인 프로세스를 날짜 별로 특정 디렉토리에 저장할 수 있다. parm에는 psinfo -M 명령어를 이용하여 프로세스 정보를 주기적으로 수집할 수 있게 하는 psinfo_dailymon이라는 쉘 스크립트가 있다. 먼저 /PSLOG 라는 디렉토리를 만들고 다음과 같은 라인을 cron table에 등록한다.

  0 0 * * * /opt/JSparm/bin/psinfo_dailymon /PSLOG wcpu=70,hs=40 60 1440
위의 /opt/JSparm/bin/psinfo_dailymon /PSLOG wcpu=70,hs=40 60 1440 명령어는 cron에 의해 매일 0 시에 실행된다.
이 명령어는 프로세스 정보를 60초 간격으로 1440번(60 *24 = 1440: 1 day) 조사하여 CPU 사용률이 70% 이상이거나 HP+STK(heap+stack)의 크기가 40MB 이상인 프로세스 정보를 /PSLOG/psinfo.dd (dd는 day(01-31)) 파일에 저장한다.
  * * * * * /opt/JSparm/bin/psinfo_dailymon /PSLOG wcpu=70,hs=40
위의 /opt/JSparm/bin/psinfo_dailymon /PSLOG wcpu=70,hs=40는 매분 cron에 의해 실행된다. 여기서 psinfo_dailymon은 한번만 데이타를 수집한다.

위의 두개의 cron entry중 필요한 것을 선택하여 지정하면 된다.
여기서 wcpu를 사용한 것에 유의하십시오.

특정 이름의 프로세스만 보고 싶으면, -G 옵션을 사용하여 프로세스명을 지정할 수 있다. 여러 개를 지정할 경우에는 콤마로 분리하여 지정한다.
콤마 차체를 명령어 이름으로 사용하려면, 콤마 앞에 백슬래쉬를 붙이면 된다.
첫번째 글자가 느낌표(!)이면, 지정한 명령어 이름과 일치하지 않는 프로세스 정보만 보여준다.

# psinfo -G ksh
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
 1725  1722 guest    1.969M 1.531M 0.047M S    1   0.00%  0.00%  1.3%  0d23798       00.1995 /bin/ksh
  460   456 guest    1.953M 1.383M 0.047M S    1   0.00%  0.00%  1.1%  0d36693       01.1701 /bin/ksh
  468   461 guest    1.969M 1.430M 0.047M S    1   0.00%  0.00%  1.2%  0d36692       00.4239 /bin/ksh -o vi
  471   462 guest    1.953M 1.336M 0.047M S    1   0.00%  0.00%  1.1%  0d36692       01.2345 /bin/ksh
# psinfo -G ksh -s
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED           TIME CMDLINE
 1725  1722 guest    1.969M 1.531M 0.047M S    1   0.00%  0.00%  1.3%  0d23798       00.1909 /bin/ksh
  468   461 guest    1.969M 1.430M 0.047M S    1   0.00%  0.00%  1.2%  0d36692       00.4223 /bin/ksh -o vi
  460   456 guest    1.953M 1.383M 0.047M S    1   0.00%  0.00%  1.1%  0d36693       01.1407 /bin/ksh
  471   462 guest    1.953M 1.336M 0.047M S    1   0.00%  0.00%  1.1%  0d36692       01.2331 /bin/ksh

정렬 순서를 지정하는 옵션(-c,-m,-h,-r,-s,-e,-l,-T,-C)을 지정하지 않으면, 특별한 순서없이 -G 옵션에 지정된 이름과 같은 명령어를 모두 보여준다.
정렬옵션을 지정하면, 지정된 정렬순서로 디폴트로 상위 20개의 프로세스 정보만 보여준다. 이 개수는 -t 옵션으로 변경할 수 있다.

-g 옵션에 CMDLINE에 있는 임의의 문자열을 지정하여 일치되는 프로세스 정보를 볼 수도 있다. 여러 개를 지정할 경우에는 콤마로 분리하여 지정한다.
콤마 차체를 문자열로 사용하려면, 콤마 앞에 백슬래쉬를 붙이면 된다.
첫번째 글자가 느낌표(!)이면, 지정한 문자열을 포함하지 않는 프로세스 정보만 보여준다.

# psinfo -g vi
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
 1145   440 guest    1.914M 1.352M 0.027M S    1   0.00%  0.00%  1.1%    0d917       00.8612 vi readme
 1159   428 guest    1.664M 1.273M 0.047M R    1   0.08%  0.08%  1.0%     0d49       00.2692 /bin/ksh -o vi
 1162  1159 guest    1.086M 0.930M 0.070M O    1   0.19%  0.19%  0.8%      0d0       00.0822 psinfo -g vi
 1157   434 guest    1.914M 1.469M 0.027M S    1   0.01%  0.01%  1.2%    0d462       00.9607 vi /etc/termcap

-S 옵션을 사용하면, 시스템에서 같은 이름을 가진 프로세스들을 하나로 그룹핑하여 각 프로세스에 대하여 다음과 같은 내용을 보여준다.

# psinfo -S
Date.time 1016.23:37:09 proc 65 zomb 0 run 0 lwp 144 cpu 1.63% load1m 0.03 ptime 12450.6689 hp+stk 40.93M
         COMMAND NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
            java     2    33    0.42%   0.42%   37.99M   174.0M   63.08M   32.32M  0d18435    01:31.7445       03.3300
         fsflush     1     1    0.20%   0.20%   0.008M   0.000M   0.000M   0.008M  0d19186       16.1461       00.0000
 gnome-netstatus     1     1    0.15%   0.15%   3.312M   69.81M   8.402M   3.312M  0d18446       27.4741       00.0000
              sh     1     1    0.07%   0.07%   0.012M   3.105M   1.105M   0.012M     0d19       00.0364       00.0000
            Xorg     1     1    0.05%   0.05%   20.67M   54.48M   11.67M   20.67M  0d19157       10.8972       00.3000
  gnome-terminal     1     2    0.05%   0.05%   6.523M   153.6M   10.73M   6.523M  0d18442       10.0028       00.0000
   mixer_applet2     1     1    0.04%   0.04%   0.523M   67.03M   7.238M   0.523M  0d18445       07.3121       00.0000
          psinfo     1     1    0.04%   0.04%   0.453M   2.230M   1.320M   0.453M      0d0       00.0078       00.0000
     gnome-panel     1     1    0.01%   0.01%   15.32M   135.6M   11.21M   15.32M  0d18450       03.6375       00.0000
 composite_aux_g     1     1    0.01%   0.01%   3.785M   117.6M   7.465M   3.785M  0d18454       02.6747       00.0000
             ksh     6     6    0.01%   0.01%   0.270M   3.500M   1.289M   0.047M   0d9967       02.4933    07:18.6700
              vi     2     2    0.01%   0.01%   0.062M   4.133M   1.680M   0.031M    0d459       00.3021       00.0000
           mmonx     1     1    0.01%   0.01%   0.594M   3.566M   0.977M   0.594M  0d19160       01.6248       00.0000
        devfsadm     1     7    0.00%   0.00%   0.309M   5.188M   1.035M   0.309M  0d19159       00.7336       00.0000
            nscd     1    30    0.00%   0.00%   1.711M   6.945M   2.168M   1.711M  0d19173       01.2140       00.0000
           iiimx     1     1    0.00%   0.00%   0.105M   3.777M   0.992M   0.105M  0d18464       00.0139       00.2300
            kcfd     1     3    0.00%   0.00%   0.367M   4.211M   1.691M   0.367M  0d19174       00.1758       00.0000
        Xsession     1     1    0.00%   0.00%   0.070M   3.242M   0.695M   0.070M  0d18465       00.0735       00.1600
        sendmail     2     2    0.00%   0.00%   1.016M   9.137M   1.453M   0.508M  0d19101       00.7930       00.1100
        iiim-xbe     1     3    0.00%   0.00%   0.312M   8.953M   1.703M   0.312M  0d18458       00.0579       00.0000

-U 옵션을 사용하면, 같은 사용자명을 가진 프로세스들을 하나로 그룹핑하여 각 사용자에 대하여 다음과 같은 내용을 보여준다.

# psinfo -U
Date.time 1017.00:24:21 proc 65 zomb 0 run 0 lwp 144 cpu 1.69% load1m 0.08 ptime 12680.2382 hp+stk 41.00M
        USERNAME NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
           guest    41    67    0.63%   0.63%   125.9M   174.0M   15.37M   24.46M    0d511    02:02.7105    07:22.7400
            root    40   169    0.36%   0.36%   29.78M   14.96M   2.555M   7.895M      0d0    01:14.2755       04.9100
        noaccess     1    18    0.14%   0.14%   32.32M   128.3M   63.19M   32.32M  0d19200       44.8103       00.0000
          daemon     2     4    0.00%   0.00%   0.855M   4.211M   1.691M   0.488M  0d19216       00.1785       00.0000
           smmsp     1     1    0.00%   0.00%   0.508M   9.137M   0.695M   0.508M  0d19153       00.0970       00.0400

-o 옵션을 사용하면, 현재 CPU를 사용하고 있는 프로세스와 CPU를 사용하기 위해 Run Queue에 대기하고 있는 프로세스 정보를 보여준다.

# psinfo -o
  PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
  439   436 guest    42.19M 24.28M 20.03M R    1   0.10%  0.10% 20.4%  0d14102    03:14.4040 netscape
  628   417 guest    1.516M 1.156M 0.055M R    1   7.01%  7.01%  1.0%    0d171       12.1341 find / -print
  747   743 root     1.305M 1.031M 0.109M O    1   0.24%  0.24%  0.9%      0d0       00.0539 psinfo -o
  746   436 guest    1.023M 0.828M 0.039M R    1   1.26%  1.26%  0.7%      0d2       00.2745 grep open test.txt

S 컬럼에 O는 CPU를 사용하고 있는 프로세스이고, R은 Run Queue에 대기하고 있는 프로세스를 나타낸다.

-x 옵션을 사용하면, real user ID가 effective user ID와 다른 프로세스 정보를 보여준다.

# psinfo -x
  PID  PPID USERNAME REALUSER   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
 1199  1196 root     guest    1.828M 1.336M 0.055M S    1   0.04%  0.04%  1.1%    0d139       00.0712 /usr/bin/ksh
 1210  1203 root     guest    2.102M 1.570M 0.094M S    1   0.16%  0.16%  1.3%     0d12       00.0656 passwd

real user ID와 effective user ID가 다르고, real user ID가 일반 사용자인 것은 setuid bit가 설정된 프로그램이다. 이 프로그램이 passwd와 같이 시스템에서 기본적으로 설정되어 있는 프로그램이 아니라면, 누군가 해킹을 위해 만들어 놓은 back door 프로그램일 확률이 매우 높다. 이 경우에 이 프로세스를 어떻게 실행했는지 REALUSER(guest)에게 확인하여야 한다.

-Z 옵션을 사용하면, zone 정보도 함께 보여준다.

# psinfo -Z
Date.time 0122.13:24:29 proc 68 zomb 1 run 0 lwp 215 cpu 1.84% load1m 0.05 ptime 382.5742 hp+stk 80.63M
      ZONE   PID  PPID USERNAME   SIZE    RSS HP+STK S NLWP   WCPU%   CPU%  MEM%  ELAPSED          TIME CMDLINE
    global  3837  3835 root     2.375M 1.445M 0.309M O    1   0.56%  0.56%  0.1%      0d0       00.1198 /opt/parm/bin/psinfo -Z
    global  3835  3829 root     1.582M 0.953M 0.039M S    1   0.34%  0.34%  0.1%     0d24       00.2201 ksh
    global   387     1 root     4.207M 1.777M 0.402M S   14   0.14%  0.14%  0.1%   0d3260       00.1318 /usr/sbin/syslogd
    global  3829  3826 guest    1.582M 0.969M 0.039M S    1   0.11%  0.11%  0.1%     0d31       00.1216 -ksh
    global  3826   349 root     3.668M 1.941M 0.043M S    1   0.09%  0.09%  0.2%     0d32       00.0990 /usr/sbin/in.telnetd
    global   349     1 root     6.109M 2.773M 1.656M S    4   0.08%  0.08%  0.2%   0d3260       00.8570 /usr/lib/inet/inetd start
    global     3     0 root     0.000M 0.000M 0.008M S    1   0.07%  0.07%  0.0%   0d3299       02.3269 fsflush
    global   146     1 daemon   4.578M 2.328M 0.648M S    4   0.05%  0.05%  0.2%   0d3286       00.6569 /usr/lib/crypto/kcfd
.... skip ...

특정 zone에 있는 프로세스 정보를 보고 싶을 경우에 -z 옵션에 zone 이름이나 zone ID를 지정하면 된다.

-S 옵션과 -Z 옵션을 함께 사용하면, zone 별로 그룹핑하여 프로세스 정보를 보여준다.

# psinfo -S -Z
Date.time 0122.13:58:06 proc 100 zomb 1 run 1 lwp 349 cpu 0.82% load1m 0.04 ptime 521.0635 hp+stk 0.789M
         COMMAND NPROC  NLWP    WCPU%    CPU%   HP+STK MAX_SIZE  MAX_RSS   MAX_HS  ELAPSED          TIME     CHILDTIME
          global    68   221    0.69%   0.69%   0.789M   129.4M   109.4M   0.469M      0d0    01:18.4319    05:44.0800
           zone1    32   128    0.13%   0.13%   0.000M   128.7M   84.16M   0.000M    0d932    01:01.1716       37.3800

  다음은 상태표시 라인에 대한 설명이다.

psinfo 명령어의 첫번째 라인에는 다음과 같은 형식의 정보가 출력된다.

Date.time 1016.23:37:09 proc 65 zomb 0 run 0 lwp 144 cpu 1.63% load1m 0.03 ptime 12450.6689 hp+stk 40.93M
상태표시설명
Date.time 1016.23:37:09Date.time의 형식은 다음과 같다. mmdd.HHMMSS psinfo를 실행한 시간. 10월 16일 23시 37분 09초
proc 65전체 프로세스 개수(65)
zomb 0좀비(zombie) 프로세스 개수(0)
run 0runnabe 프로세스 개수(0)
lwp 144전체의 프로세스의 LWP 개수(144)
cpu 1.63%전체의 프로세스의 CPU 사용률 합계(1.63%)
load1m 0.03지난 1분간 run queue에서 대기한 1초당 쓰레드의 개수이다.
ptime 12450.6689전체의 프로세스가 CPU를 사용한 누적시간의 합계(TIME+CHILDTIME)
(단위: second.nnnn (nnnn은 1/10000초)

psinfo 명령어가 시스템 전체 lock을 걸고 모든 프로세스 정보를 수집하고 난 뒤에 lock을 푸는 것이 아니기 때문에, 1)   부모 프로세스 정보를 수집한 후에 그 자식 프로세스 정보를 수집하기 전에 그 자식 프로세스가 종료되거나, 2)   자식 프로세스 정보를 수집한 후 그 부모 프로세스 정보를 수집하기 전에 자식 프로세스가 종료될 경우에 오차가 발생할 수 있다.

hp+stk 40.93M전체의 프로세스의 heap과 stack의 합계 (MB 단위)

  psinfo 명령어의 각 컬럼에 대한 의미는 다음과 같다.

필드설명
DATE.TIME psinfo 명령어를 실행한 시간을 다음과 같은 형식으로 표시한다.

mmdd.HH:MM.SS

이 컬럼은 -0 옵션을 사용할 경우에 출력된다.

ZONE프로세스가 실행되고 있는 zone을 표시 (-Z 옵션 사용시에 표시됨)
PID프로세스 ID
PPID부모 프로세스 ID
USERNAME유효 사용자명(effective user name)
REALNAME실제 사용자명(real user name)
-x 옵션 또는 -R 옵션 사용시에 이 컬럼이 출력된다.
SIZE프로세스가 차지하는 메모리 크기
RSS프로세스가 차지하는 메모리 중 물리적 메모리에 적재된 크기
HP+STK프로세스의 heap과 stack 크기의 합계
여기서 heap은 프로세스가 다이나믹하게 메모리를 할당한 것은 말한다.
(주로 malloc()함수에 의해 요청된 크기)
S프로세스의 상태(state)를 표시한다.
S    Sleeping process
O    process On processor
R    Runnable process
Z    Zombie state
T    process stopped ether by a job control signal or because of being Traced.
NLWP프로세스에 있는 LWP(light-weight process)의 개수
CPU%
WCPU%
CPU%는 CPU 사용량의 백분률
WCPU%(weighted CPU%) = CPU% * processor 개수
WCPU%란 각 프로세스가 사용한 CPU 사용률을 CPU가 1 개인 시스템에 비례한 사용률을 말한다. 예를 들면, CPU가 4개인 시스템에서 CPU%가 20%이면 WCPU%는 80%(20*4)가 된다.
MEM%물리적 메모리에 적재된 메모리 사용량의 백분률
MAX_SIZE 프로세스 중에서 SIZE 가 제일 큰 프로세스의 SIZE를 보여준다.
이 컬럼은 -S 또는 -U 옵션을 지정할 때, 표시된다.
MAX_RSS 프로세스 중에서 RSS 가 제일 큰 프로세스의 RSS를 보여준다.
이 컬럼은 -S 또는 -U 옵션을 지정할 때, 표시된다.
MAX_HS 프로세스 중에서 HP+STK 가 제일 큰 프로세스의 HP+STK를 보여준다.
이 컬럼은 -S 또는 -U 옵션을 지정할 때, 표시된다.
ELAPSED프로세스가 시작한 후에 경과된 시간(second)
형식: day d second
1d12419:   1일 12419초가 경과함

-. 옵션을 지정하면

hour . second 형식으로 표시한다.
1.0029 이면, 1 시간 29초가 경과함.
TIME프로세스가 지금까지 사용한 CPU 사용량
형식: [[[day-[[HH:]MM:]]SS.nnnn (nnnn은 1/10000초)
CHILDTIME -E 옵션 사용시에 이 컬럼이 출력된다.
자식 프로세스가 사용한 CPU사용량이며, 자식 프로세스가 종료될 때, 부모 프로세스에게 반영된다.
형식: [[[day-[[HH:]MM:]]SS.nnnn (nnnn은 1/10000초)
CMDLINE명령어 및 인수
CMD명령어 패스의 마지막 파일명
예를 들어 명령어가 /usr/openwin/bin/htt -nosm 경우에 htt을 나타낸다. /usr/openwin/bin/htt -nosm ---> htt 이 컬럼은 -f 옵션을 사용할 경우에 출력된다.

  다음은 psinfo의 각 옵션에 대하여 설명한다.

옵션설명
-. -. 옵션을 지정하면, ELAPSED 시간표시를 hour.second 형식으로 보여준다.
-0 -0 옵션을 지정하면, 다음과 같이 첫컬럼에 날짜와 시간 정보를 출력하게 한다.

# psinfo -0 -t5 -f
Date.time 0209.12:42:49 proc 84 zomb 0 run 0 lwp 261 cpu 1.51% load1m 0.04 ptime 286.7851 hp+stk 186.7M
        DATE.TIME   PID USERNAME HP+STK S NLWP   WCPU%   CPU%  ELAPSED          TIME CMD
    0409.12:42:49   881 guest    5.641M S   15   0.21%  0.21%   0d2483       06.5135 java
    0409.12:42:49   131 daemon   0.648M S    4   0.18%  0.18%   0d2856       00.1505 kcfd
    0409.12:42:49   705 noaccess 30.13M S   18   0.18%  0.18%   0d2828       13.4921 java
    0409.12:42:49   856 guest    3.312M S    1   0.15%  0.15%   0d2494       03.5246 gnome-netstatus
    0409.12:42:49   347 root     1.656M S    4   0.12%  0.12%   0d2845       00.4875 inetd

-6 -6 옵션을 지정하면, 64 bit 프로세스 정보만 보여준다.
-a -a 옵션을 사용하면 프로세스 전체를 보여주며, 출력되는 프로세스의 순서는 없으며, Date.time 라인 정보는 맨 끝에 출력된다.
-A -A 옵션을 사용하면 프로세스 전체에 대해 좀 더 자세한 정보로 보여준다. 첫번째 라인에는 다음과 같은 정보가 추가된다.

PSINFO-A: INTERVAL 60 CPU 1

출력되는 정보에는 순서가 없으며, SIZE, RSS, HP+STK에 대하여 KB 단위로 보여주고, TIME과 CHILDTIME에 대하여 소수점 이하 두자리 숫자를 항상 보여준다.
또한 명령어라인(CMDLINE)에 개행문자(NEWLINE)가 있을 경우, 이 문자는 +(plus) 기호로 바꾼다.
Date.time 라인 정보는 맨 끝에 출력된다.

이 옵션을 사용한 psinfo 명령어의 결과를 파일로 저장한 후에 psparse 명령어를 사용하여 데이타를 다양한 형태로 가공하여 볼 수 있다.

또한 수집한 데이타에 대해서는 gpsinfo 명령어를 사용하여, 프로세스 정보에 대한 그래프를 만들 수 있다.

-c -c 옵션은 CPU 사용률이 큰 순서로 -t 옵션에 지정한 개수 만큼 출력한다(디폴트 옵션이다).
-C -C 옵션은 자식 프로세스의 누적 CPU 사용량이 큰 순서로 -t 옵션에 지정한 개수 만큼 출력한다. -E 옵션을 지정하지 않아도 CHILDTIME을 보여준다.
-d delimiter -d delimiter 옵션은 -I 옵션과 함께 사용되며, PID 분리자를 지정한다.
-e -e 옵션은 최근에 실행된 프로세스 순서로 -t 옵션에 지정한 개수 만큼 출력한다.
-E -E 옵션은 자식 프로세스(child process)의 CPU 누적 사용량을 보여준다.
자식 프로세스의 CPU 누적 사용량은 자식 프로세스가 종료될때 부모 프로세스에게 반환된다. 자식 프로세스가 또 자식 프로세스를 만든 경우에 손자 프로세스의 CPU 누적 사용량도 합산되어 부모 프로세스에게 반환된다.
-f -f 옵션은 다음과 같은 정보만 화면에 보여준다.
  PID USERNAME HP+STK S NLWP   WCPU%   CPU%  ELAPSED      TIME CMD
-g [!]strings -g string 옵션을 사용하면, CMDLINE에 출력될 명령어(command)와 인수(arguments) 중에서 지정한 string과 같은 문자열이 포함된 프로세스의 정보를 모두 출력한다.

정렬 순서를 지정하는 옵션(-c,-m,-h,-r,-s,-e,-l,-T,-C)을 지정하지 않으면, 특별한 순서없이 -g 옵션에 지정된 이름을 포함하는 명령어를 모두 보여준다.
정렬옵션을 지정하면, 지정된 정렬순서로 디폴트로 상위 20개의 프로세스 정보만 보여준다. 이 개수는 -t 옵션으로 변경할 수 있다.

여러 개를 지정할 경우에는 콤마로 분리하여 지정한다. 콤마 차체를 문자열로 사용하려면, 콤마 앞에 백슬래쉬를 붙이면 된다.
첫번째 글자가 느낌표(!)이면, 지정한 문자열을 포함하지 않는 프로세스 정보만 보여준다.

-G [!]cmd_names -G cmd_name 옵션을 사용하면, 명령어 이름과 cmd_name과 일치하는 프로세스 정보를 출력한다. 명령어에 path가 붙어 있다면, cmd_name을 지정할 때, 반드시 path의 마지막 있는 파일명만 지정하여야 한다.

예제)

/usr/bin/ksh --> ksh

정렬 순서를 지정하는 옵션(-c,-m,-h,-r,-s,-e,-l,-T,-C)을 지정하지 않으면, 특별한 순서없이 -G 옵션에 지정된 이름과 같은 명령어를 모두 보여준다.
정렬옵션을 지정하면, 지정된 정렬순서로 디폴트로 상위 20개의 프로세스 정보만 보여준다. 이 개수는 -t 옵션으로 변경할 수 있다.

여러 개를 지정할 경우에는 콤마로 분리하여 지정한다. 콤마 차체를 명령어 이름으로 사용하려면, 콤마 앞에 백슬래쉬를 붙이면 된다.
첫번째 글자가 느낌표(!)이면, 지정한 명령어 이름과 일치하지 않는 프로세스 정보만 보여준다.

-h -h 옵션은 프로세스 메모리 중에 heap과 stack을 합친 값이 큰 순서로 -t 옵션에 지정한 개수 만큼 출력한다.
-H -H 옵션은 개별 프로세스 정보를 보여주지 않고, 다음과 같은 전체 프로세스 정보만 보여준다.
Date.time  proc zomb run lwp cpu load1m ptime hp+stk  time  childtime
time는 전체 프로세스가 사용한 CPU 누적 사용량이고, childtime는 자식 프로세스들이 사용한 CPU 누적 사용량이다. 형식은 다음과 같다.

형식: [[[day-]HH:]MM:]SS.nnnn (nnnn은 1/10000초)

ptime은 time과 childtime의 합계이며 형식은 다음과 같다.

형식: second.nnnn (nnnn은 1/10000초)

-I -I 옵션을 지정하면, 출력될 프로세스 정보에서 프로세스의 PID 만 공백으로 분리하여 출력한다.

# psinfo -I
771 3 7394 608 715 510 3829 166 149 524 661 0 1 2 387 7 9 300 351 307

-d delimiter 옵션을 사용하여 PID 분리자를 지정할 수 있다.

# psinfo -t5 -I -d,
771,3,608,7394,715

-I 옵션을 지정하면, psinfo 자신의 프로세스 PID는 출력하지 않는다.

-j -j 옵션은 CPU를 많이 사용하는 순서로 5개의 프로세스 정보와 HP+STK(heap+stack)이 큰 순으로 5개의 프로세스를 더 보여준다.
예를 들어 # psinfo -j 라고하면 CPU를 많이 사용하는 순으로 5개의 프로세스와 HP+STK(heap+stack)가 큰 순으로 5개의 프로세스를 추가적으로 보여준다.
-j 옵션을 사용하면 첫번째 라인에는 다음과 같은 정보가 추가된다.

PSINFO-j: INTERVAL 60 CPU 1
60은 psinfo -j가 데이타를 수집하는 시간 간격 60초를 나타내고 1은 한개의 CPU가 있다는 것을 나타낸다.
-t n 옵션으로 숫자를 지정하면 CPU를 많이 사용하는 프로세스 개수를 변경할 수 있다. 이 옵션은 getdata 명령어에서 프로세스 정보를 수집할 때, 사용된다.

-j 옵션을 사용하여 수집한 데이타에 대해서는 gpsinfo 명령어를 사용하여, 프로세스 정보에 대한 그래프를 만들 수 있다.

-k -k 옵션을 지정하면, SIZE, RSS, HP+STK 컬럼의 값을 Kilobyte 단위로 표시한다.
-l -l 옵션을 지정하면, LWP(light-weight process)를 많은 가지고 있는 프로세스 순서로 출력한다.
-M condition -M condition 옵션은 프로세스를 조사하여 지정한 조건이 만족되는 프로세스 정보를 출력한다.

condition의 형식)

field=value[,field=value,...] 각 필드와 조건 및 단위는 아래에 열거되었고, 각각에 열거되는 조건은 OR 조건이다.
field value
size   >=     SIZE (MB 단위)
rss   >=     RSS (MB 단위)
hs   >=     HP+STK (MB 단위)
state   =     one of   S   O   R   Z   T
nlwp   >=     NLWP (number of LWP)
wcpu   >=     WCPU (%)
wcpu1   >=     WCPU (%) and NLWP == 1
(해당 프로세스의 쓰레드 개수가 1 개이고, WCPU 값이 지정한 값 이상인 프로세스)
cpu   >=     CPU (%)
mem   >=     MEM (%)
elapsed   <=     ELAPSED (second)
time   >=     TIME (second)
childtime   >=     CHILDTIME (second)
예제) psinfo -M wcpu=90,hs=10 WCPU 값이 90% 이상이거나 HP+STK 값이 10MB 이상인 프로세스 정보를 출력한다.
-m -m 옵션은 MEM%가 큰 순서로 -t 옵션에 지정한 개수 만큼 출력한다.
이것은 RSS가 큰 순서로 정렬한 것과 같다.
-n -n 옵션은 프로세스 개수가 많은 순서로 -t 옵션에 지정한 개수 만큼 출력한다.
이 옵션은 -S 옵션에서만 사용 가능하다.
-o -o 옵션은 실행되고 있는 프로세스 또는 run queue에 대기하고 있는 프로세스들을 모두 보여준다.
-p plist -p plist 옵션은 모니터할 특정 프로세스 ID를 지정한다. plist는 다음과 같다. pid[,pid,pid...]
-P pid -P pid 옵션을 지정하면, 프로세스의 부모 프로세스의 PID가 pid와 같은 프로세스 정보를 모두 보여준다. pid[,pid,pid...]
-r -r 옵션은 RSS가 큰 순서로 -t 옵션에 지정한 개수 만큼 출력한다.
-R -R 옵션은 사용자명에 실제 사용자명(real user name)을 보여준다.
-s -s 옵션은 SIZE가 큰 순서로 -t 옵션에 지정한 개수 만큼 출력한다.
-S [-N cmd_names]

-U [-N user_names]

-S 옵션은 시스템에 실행되고 있는 프로세스들 중에 같은 이름을 가진 프로세스 별로 모아서 정리하여 보여주고, -U 옵션은 시스템에 실행되고 있는 프로세스들 중에 같은 사용자를 이름을 가진 프로세스 별로 모아서 정리하여 보여준다.
정렬 순서를 지정하지 않으면, CPU를 많이 사용한 프로세스 순서로 -t 옵션에 지정한 개수 만큼 출력한다.

-U 또는 -S 옵션을 사용할 때, 다음과 같은 헤더가 출력된다.

COMMAND NPROC NLWP WCPU% CPU% HP+STK MAX_SIZE MAX_RSS MAX_HS ELAPSED TIME CHILDTIME
NPROC는 프로세스의 개수이다.
NPROC, NLWP, WCPU/CPU, TIME, HP+STK 필드에 출력되는 값은 해당되는 프로세스들의 합계이고,
MAX_SIZE는 프로세스중에서 SIZE가 가장 큰 값을 표시하고,
MAX_RSS는 프로세스중에서 RSS가 가장 큰 값을 표시하고,
MAX_HS는 프로세스중에서 HP+STK가 가장 큰 값을 표시한다.
ELAPSED는 프로세스를 실행한 뒤에 경과된 시간이며, 프로세스가 여러 개 있을 경우에는 최후에 실행된 프로세스에 대한 정보를 보여준다.
TIME은 현재 프로세스가 사용한 CPU 사용 누적 시간의 합계이고, CHILDTIME는 자식 프로세스가 사용한 CPU 사용 누적 시간의 합계이다.

-S 옵션에 -N cmd_names을 지정하면, 지정한 프로세스명에 대한 정보만 보여준다.
cmd_names에 여러개의 명령어를 지정하려면, 다음과 같이 콤마로 분리하여 여러 개의 명령어를 지정할 수 있다.

	# psinfo -S -N java,ksh,httpd
지정하려고 하는 명령어에 콤마가 들어 있으면, 백슬래쉬를 콤마 앞에 붙이면, 백슬래쉬 뒤에 콤마를 명령어의 일부로 인식합니다.
	# psinfo -S -N "java,ksh,httpd,send\,a"
위의 명령어는 'java', 'ksh', 'httpd', 'send,a' 명령어들에 대하여 정보를 수집한다.

-U 옵션에 -N user_names을 지정하면, 지정한 사용자에 대한 정보만 보여준다.

-T -T 옵션은 TIME이 큰 순서로 -t 옵션에 지정한 개수 만큼 출력한다.

-t n -t n 옵션을 사용할 경우 1 - 100 까지 지정할 수 있으며, 지정하지 않으면, 디폴트로 20이다.
-u [!]users 프로세스중에 effective user ID가 지정한 사용자(user)와 같은 프로세스만 보여준다.
user는 사용자명 또는 사용자 ID number를 지정할 수 있다.

여러 개를 지정할 경우에는 콤마로 분리하여 지정한다.
첫번째 글자가 느낌표(!)이면, 지정한 사용자 이름과 일치하지 않는 프로세스 정보만 보여준다.

정렬 순서를 지정하는 옵션(-c,-m,-h,-r,-s,-e,-l,-T,-C)을 지정하지 않으면, 특별한 순서없이 -u 옵션에 사용자 이름과 같은 소유자인 명령어를 모두 보여준다. 정렬옵션을 지정하면, 지정된 정렬순서로 디폴트로 상위 20개의 프로세스 정보만 보여준다. 이 개수는 -t 옵션으로 변경할 수 있다.

-V -V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.
-x -a 옵션과 함께 사용하면, effective user ID(USERNAME)와 real user ID(REALNAME)가 다른 프로세스를 모두 보여준다.
-a 옵션이 없으면 effective user ID(USERNAME)와 real user ID(REALNAME)가 다른 프로세스중에서 real user ID가 root가 아니고, 실행중인 명령어(psinfo)가 아닌 프로세스만 보여준다.
즉, -x 옵션만 사용하면 set-user-ID bit가 설정되어 실행되고 있는 프로세스를 찾을 수 있다.
-y -y 옵션을 지정하면, job control 이나 trace되는 이유로 중지된 프로세스 정보를 보여준다.
-Z -Z 옵션을 지정하면, 해당 프로세스가 실행되고 있는 Zone 이름도 보여준다.
-z zone -z 옵션에 zone 이름이나 zone ID를 지정하면, 해당 Zone에서 실행되고 있는 프로세스 정보만 보여준다.
filter_options filter_options 옵션에는 다음과 같다.
-g [!]strings | -G [!]cmd_names
-u [!]users

-g [!]strings | -G [!]cmd_names -g 또는 -G 옵션에 일치하는 문자열을 가지고 있는 프로세스 정보에 대해서만 처리한다.
여러 개를 지정할 때에는 콤마로 구분한다. string의 맨 첫글자에 ! 를 지정하면, 지정한 string과 일치하지 않은 프로세스 정보에 대해서만 처리한다.

        -G httpd,java
        -G !httpd,java
        -g ora_
        -g !ora
        -g "java -server"
-u [!]users -u 옵션에는 사용자 이름을 지정한다. 지정한 사용자 이름과 일치하는 프로세스 정보에 대해서만 처리한다.
여러 개를 지정할 때에는 콤마로 구분한다. user 이름의 맨 첫글자에 ! 를 지정하면, 지정한 user 이름과 일치하지 않은 프로세스 정보에 대해서만 처리한다.

        -u root
        -u guest1,guest2
        -u !root,nobody

interval [count] interval의 시간 간격으로 count 횟수 만큼 반복하여 프로세스 정보를 수집한다. count를 지정하지 않으면, 지정한 시간 간격으로 무한히 반복한다. intervalcount 둘 다 지정되지 않으면, 프로세스를 정보를 한번만 수집한다.

데이타를 수집할 때, 지정한 시간 간격으로 데이타를 수집한다. 그런데 지정한 시간 간격이 지나도 앞 시간대의 프로세스 정보를 모두 수집하지 못 했을 때 그 시간대의 데이타는 수집하지 않고 다음 데이타 수집 시간에 데이타를 수집한다.