AIX进程监控工具

http://blog.163.com/xjming487@126/blog/static/21295135201211745550842/

AIX平台有一组功能强大的进程监控工具,利用它们可以进行进程监控、定位问题。不使用这些工具,直接从/proc/procssId目录下也可以获得这些信息。e.g.

/proc/177022>ls -lt
total 16
-rw-------    1 root     system            0 Feb 22 16:55 as
-r--------    1 root     system          128 Feb 22 16:55 cred
--w-------    1 root     system            0 Feb 22 16:55 ctl
dr-x------    1 root     system            0 Feb 22 16:55 fd
dr-xr-xr-x    1 root     system            0 Feb 22 16:55 lwp
-r--------    1 root     system            0 Feb 22 16:55 map
dr-x------    1 root     system            0 Feb 22 16:55 object
-r--r--r--    1 root     system          448 Feb 22 16:55 psinfo
-r--------    1 root     system        12288 Feb 22 16:55 sigact
-r--------    1 root     system         1520 Feb 22 16:55 status
-r--r--r--    1 root     system            0 Feb 22 16:55 sysent
lr-x------   36 root     system            0 Feb 22 13:35 cwd

一、存放路径

    这些工具存放在/usr/bin目录下,如下所示:

$which procstack

/usr/bin/procstack

二、工具列表

    这些工具名称为procXXXX。分别有:

$ls *proc* /usr/bin/

-r-xr-xr-x    1 bin      bin            8282 Mar 13 2009  proccred

-r-xr-xr-x    1 bin      bin           17340 Mar 13 2009  procfiles

-r-xr-xr-x    1 bin      bin           14424 Mar 13 2009  procflags

-r-xr-xr-x    1 bin      bin           10898 Mar 13 2009  procldd

-r-xr-xr-x    1 bin      bin           11602 Mar 13 2009  procmap

-r-xr-xr-x    1 bin      bin            8158 Mar 13 2009  procrun

-r-xr-xr-x    1 bin      bin            8938 Mar 13 2009  procsig

-r-xr-xr-x    1 bin      bin           20524 Mar 18 2009  procstack

-r-xr-xr-x    1 bin      bin           21774 Mar 18 2009  procstack64

-r-xr-xr-x    1 bin      bin            8578 Mar 13 2009  procstop

-r-xr-xr-x    1 bin      bin           20022 Mar 13 2009  proctree

-r-xr-xr-x    1 bin      bin           13216 Mar 13 2009  procwait

-r-xr-xr-x    1 bin      bin            8754 Mar 13 2009  procwdx

三、用法示例

下面将一一认识一下这些命令。

proccred

    显示进程所属的有效的、真实的、保留的用户ID和组ID。什么叫“有效的、真实的、保留的”?尚不大清楚。

$proccred 451098

451098: e/r/suid=205  e/r/sgid=1

procfiles

显示进程打开的文件描述符信息。该命令对于监控程序是否有句柄泄露非常有用。

$procfiles 451098

451098 : acsql

  Current rlimit: 2147483647 file descriptors

   0: S_IFCHR mode:00 dev:10,4 ino:9515 uid:205 gid:1 rdev:23,24

      O_RDWR 

   1: S_IFCHR mode:00 dev:10,4 ino:9515 uid:205 gid:1 rdev:23,24

      O_RDWR 

   2: S_IFCHR mode:00 dev:10,4 ino:9515 uid:205 gid:1 rdev:23,24

      O_RDWR 

   3: S_IFREG mode:0600 dev:41,1 ino:538130 uid:205 gid:1 rdev:0,0

      O_RDWR size:0 

   4: S_IFREG mode:0600 dev:41,1 ino:538130 uid:205 gid:1 rdev:0,0

      O_RDWR size:0 

   5: S_IFREG mode:0600 dev:41,1 ino:538130 uid:205 gid:1 rdev:0,0

      O_RDWR size:0 

   6: S_IFREG mode:0600 dev:41,1 ino:538130 uid:205 gid:1 rdev:0,0

      O_RDWR size:0 

   7: S_IFREG mode:0600 dev:41,1 ino:538130 uid:205 gid:1 rdev:0,0

      O_RDWR size:0 

   8: S_IFREG mode:0600 dev:41,1 ino:538130 uid:205 gid:1 rdev:0,0

      O_RDWR size:0 

   9: S_IFREG mode:0600 dev:41,1 ino:538130 uid:205 gid:1 rdev:0,0

      O_RDWR size:0 

   10: S_IFREG mode:0600 dev:41,1 ino:538130 uid:205 gid:1 rdev:0,0

      O_RDWR size:0 

   11: S_IFREG mode:0600 dev:41,1 ino:538130 uid:205 gid:1 rdev:0,0

      O_RDWR size:0 

   13: S_IFREG mode:0444 dev:0,0 ino:8416777 uid:205 gid:1 rdev:0,0

      O_RDONLY size:448 

procflags

    打印 /proc 跟踪标志、暂挂和挂起信号,和指定进程中每个线程的其它 /proc 状态信息。显示进程的跟踪标志。加“-r”选项可以打印寄存器内容。

$procflags 451098

451098 : acsql 

data model = _LP64 flags = PR_FORK 

/872965: flags = PR_ASLEEP | PR_NOREGS  

procldd

列出进程装入的动态库,包括使用 dlopen() 显式连接的共享对象。

$procldd 451098

451098 : acsql 

acsql

/usr/ccs/bin/usla64

/usr/lib/libc.a[pse_64.o]

/usr/lib/liblvm.a[shr_64.o]

/usr/lib/libcfg.a[shr_64.o]

/usr/vacpp/lib/libC.a[shrcore_64.o]

/usr/vacpp/lib/libC.a[ansicore_64.o]

/usr/lib/libcrypt.a[shr_64.o]

/usr/lib/libxti.a[shr_64.o]

/usr/lib/libperfstat.a[shr_64.o]

/usr/lib/libodm.a[shr_64.o]

/usr/lib/libdl.a[shr_64.o]

/usr/vacpp/lib/libC.a[ansi_64.o]

/usr/vacpp/lib/libC.a[shr3_64.o]

/usr/vacpp/lib/libC.a[shr2_64.o]

/usr/vacpp/lib/libC.a[shr_64.o]

/usr/lib/libptools_ptr.a[shr_64.o]

/usr/lib/libpthreads.a[shr_xpg5_64.o]

/usr/lib/libc_r.a[shr_64.o]

/project/pb01/hss/lib/libACE.a[libACE.so.5]

/ora10/product/10.2.0/lib/libsqlplus.so

/project/pb01/hss/lib/libplatform.so

/ora10/product/10.2.0/lib/libclntsh.so

/project/pb01/hss/lib/librdbutil.so

procmap

打印进程的地址空间映射。

$procmap 451098

451098 : acsql 

100000000       4304K  read/exec         acsql

110000cc3        374K  read/write        acsql

9fffffff0000000        44K  read/exec         /usr/ccs/bin/usla64

9fffffff000b30a         0K  read/write        /usr/ccs/bin/usla64

900000000873000         0K  read/exec         /usr/lib/libc.a[pse_64.o]

9001000a024c000         0K  read/write        /usr/lib/libc.a[pse_64.o]

9000000003d0880       484K  read/exec         /usr/lib/liblvm.a[shr_64.o]

9001000a0121ac8       135K  read/write        /usr/lib/liblvm.a[shr_64.o]

900000000369100        74K  read/exec         /usr/lib/libcfg.a[shr_64.o]

9001000a00f5e50        26K  read/write        /usr/lib/libcfg.a[shr_64.o]

900000000601a80       137K  read/exec         /usr/vacpp/lib/libC.a[shrcore_64.o]

9001000a0117280        13K  read/write        /usr/vacpp/lib/libC.a[shrcore_64.o]

90000000045f180       112K  read/exec         /usr/vacpp/lib/libC.a[ansicore_64.o]

9001000a010d380        37K  read/write        /usr/vacpp/lib/libC.a[ansicore_64.o]

900000000354280         2K  read/exec         /usr/lib/libcrypt.a[shr_64.o]

9001000a00d4760         0K  read/write        /usr/lib/libcrypt.a[shr_64.o]

900000005984e80        48K  read/exec         /usr/lib/libxti.a[shr_64.o]

9001000a0810b58         7K  read/write        /usr/lib/libxti.a[shr_64.o]

90000000044a080        83K  read/exec         /usr/lib/libperfstat.a[shr_64.o]

9001000a01d0818         9K  read/write        /usr/lib/libperfstat.a[shr_64.o]

900000000328400        85K  read/exec         /usr/lib/libodm.a[shr_64.o]

9001000a00d5d08        35K  read/write        /usr/lib/libodm.a[shr_64.o]

900000000863000         0K  read/exec         /usr/lib/libdl.a[shr_64.o]

9001000a036b000         0K  read/write        /usr/lib/libdl.a[shr_64.o]

90000000047c300      1552K  read/exec         /usr/vacpp/lib/libC.a[ansi_64.o]

9001000a01d5900       269K  read/write        /usr/vacpp/lib/libC.a[ansi_64.o]

9000000003558c8         2K  read/exec         /usr/vacpp/lib/libC.a[shr3_64.o]

9001000a01d38c8         0K  read/write        /usr/vacpp/lib/libC.a[shr3_64.o]

90000000065e6d0         2K  read/exec         /usr/vacpp/lib/libC.a[shr2_64.o]

9001000a01d46d0         0K  read/write        /usr/vacpp/lib/libC.a[shr2_64.o]

90000000037cb00       135K  read/exec         /usr/vacpp/lib/libC.a[shr_64.o]

9001000a011b900        19K  read/write        /usr/vacpp/lib/libC.a[shr_64.o]

900000006a4e080        18K  read/exec         /usr/lib/libptools_ptr.a[shr_64.o]

9001000a09d6cc8         5K  read/write        /usr/lib/libptools_ptr.a[shr_64.o]

900000000624000       228K  read/exec         /usr/lib/libpthreads.a[shr_xpg5_64.o]

9001000a0144000       558K  read/write        /usr/lib/libpthreads.a[shr_xpg5_64.o]

900000000042500      2966K  read/exec         /usr/lib/libc_r.a[shr_64.o]

9001000a0000788       844K  read/write        /usr/lib/libc_r.a[shr_64.o]

90000000ce9c100      2620K  read/exec         /project/pb01/hss/lib/libACE.a[libACE.so.5]

9001000a1636f0f       273K  read/write        /project/pb01/hss/lib/libACE.a[libACE.so.5]

9000000044ce000     17161K  read/exec         /ora10/product/10.2.0/lib/libsqlplus.so

9001000a024d590       957K  read/write        /ora10/product/10.2.0/lib/libsqlplus.so

90000000ce81000       107K  read/exec         /project/pb01/hss/lib/libplatform.so

9001000a162d448        10K  read/write        /project/pb01/hss/lib/libplatform.so

900000003447000     16814K  read/exec         /ora10/product/10.2.0/lib/libclntsh.so

9001000a0623808       993K  read/write        /ora10/product/10.2.0/lib/libclntsh.so

90000000ce55000       174K  read/exec         /project/pb01/hss/lib/librdbutil.so

9001000a1630930        20K  read/write        /project/pb01/hss/lib/librdbutil.so

   Total       51758K

procrun

     启动在 PR_REQUESTED 事件中停止的进程。 “PR_REQUESTED 事件”没有接触过。  

$procrun 451098

451098 : ctl: Device busy

procsig

列出进程定义的信号操作。

$procsig 451098

451098 : acsql 

HUP         default  

INT         default  

QUIT        default  RESTART

ILL         default  RESTART

TRAP        default  RESTART

ABRT        default  RESTART

EMT         default  RESTART

FPE         default  RESTART

KILL        default  RESTART

BUS         default  RESTART

SEGV        default  RESTART

SYS         default  RESTART

PIPE        default  

ALRM        default  

TERM        default  

URG         default  

STOP        default  

TSTP        default  

CONT        default  

CHLD        default  

TTIN        default  

TTOU        default  

IO          default  

XCPU        default  

XFSZ        default  

MSG         default  

WINCH       default  

PWR         default  

USR1        default  

USR2        default  

PROF        default  

DANGER      default  

VTALRM      default  

MIGRATE     default  

PRE         default  RESTART

VIRT        default  

ALRM1       default  

WAITING     default  RESTART

RECONFIG    default  

CPUFAIL     default  

KAP         default  

RETRACT     default  

SOUND       default  

SAK         default

procstack

查看进程的堆栈。

$procstack 451098

open: Permission denied

Warning: executed in non-root mode

procstack cannot verify that /unix matches the running kernel.

Kernel symbols might not be validated.

451098: acsql

0x09000000000680f0  read(??, ??, ??) + 0x1c4

0x09000000000659cc  __filbuf(??) + 0x3fc

0x0900000000064f84  fgets(??, ??, ??) + 0x184

0x0000000100316898  CConnectMgr::ExecuteCmd()(0x1100726d0) + 0xb0

0x00000001002f3514  hbconnect(const char*)(0xfffffffffffaeac) + 0x74

0x000000010000bc28  main(0x100000001, 0xffffffffffff490) + 0xe74

0x0000000100000320  __start() + 0x98

procstack64

同procstack。是否只是支持64位程序?

$procstack64 451098

open: Permission denied

Warning: executed in non-root mode

procstack cannot verify that /unix matches the running kernel.

Kernel symbols might not be validated.

451098: acsql

0x09000000000680f0  read(??, ??, ??) + 0x1c4

0x09000000000659cc  __filbuf(??) + 0x3fc

0x0900000000064f84  fgets(??, ??, ??) + 0x184

0x0000000100316898  CConnectMgr::ExecuteCmd()(0x1100726d0) + 0xb0

0x00000001002f3514  hbconnect(const char*)(0xfffffffffffaeac) + 0x74

0x000000010000bc28  main(0x100000001, 0xffffffffffff490) + 0xe74

0x0000000100000320  __start() + 0x98

procstop

停止 PR_REQUESTED 事件的进程。什么是“PR_REQUESTED 事件”?

$procstop 451098

procwait

    等待全部指定的进程终止。

$procwait 451098

procwdx

    查看进程的当前工作目录。

$procwdx 451098    

451098: /public/abp/abp_hss/AsynchronousCache.jammy/release/bin/


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值