Chinaunix首页 | 论坛 | 博客
  • 博客访问: 253830
  • 博文数量: 44
  • 博客积分: 1052
  • 博客等级: 少尉
  • 技术积分: 742
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-17 16:51
文章分类

全部博文(44)

文章存档

2013年(7)

2012年(14)

2011年(23)

分类: LINUX

2012-11-24 19:24:26

每次用ps命令总感觉该命令强大且复杂,后来仔细看了它的manpage,发现其实该命令很方便使用,参数挺有规律的。


1:语法
ps [options]

2:简介
ps命令可以接受如下几种形式的选项
(1)UNIX选项,选项前必须加-
(2)BSD选项,选项前千万不要加-
(3)GNU长选项,选项前加--

ps的选项包括一下几种类型:
(1)简单的进程选择:例如 -e选择全部的进程, ax也可以选择全部的进程
(2)用list方式来选择进程:例如-C cmdname1,cmdname2 指定进程的名字进行选择,-p pid1,pid2...按指定的进程号进行选择
(3)输出格式控制:即选择何种格式输出,如选项l为BSD long format -L
(4)输出格式修饰符:如-H可以将输出按进程树的形式输出。
(5)线程输出的选项:如-L显示线程。

另外的就是根据自定义输出格式相关的东西
如ps -Lo etime,pid,lwp,psr -C sample,该命令可以查看sample的各个线程的线程号lwp,以及正在运行的cpu号psr。
其中-o后的参数控制输出格式,-L输出线程,-C 输出进程名为sample的进程。


3:简单的进程选择

  1. BSD options
  2. a      选出有terminal的进程
  3. T      与当前terminal关联的进程
  4. r      仅仅是正在运行的进程
  5. x      仅显示当前用户的进程,不管是否有terminal
  6. ax     显示全部进程

  7. UNIX options
  8. -A     显示全部进程,同 -e
  9. -a     显示除session leader和没有terminal之外的进程
  10. -d     显示出session leader之外的全部进程
  11. -e     显示全部进程
  12. -N     选出不满足特定条件的进程
常用的可能就是ps -e或者ps ax,选出全部进程。

4:用list方式选择
这些选项有单个参数,参数形式为空格分割或逗号分割的list
如 ps -p "1 2" -p 3,4

  1. BSD options
  2. 123 等价于 --pid 123
  3. p pidlist 等价于 -p,按指定的pid输出
  4. t ttylist 几乎等价于-t
  5. U userlist 用effective user ID或name来选择,如ps U root

  6. UNIX options
  7. -C cmdlist 指定命令名进行选择

  8. -G grplist 用real group ID或name进行选择
  9. -g grplist 用session或effective group name进行选择
  10. -U userlist 用real user ID或name进行选择
  11. -u userlist 用effective user ID或name进行选择

  12. -p pidlist 用pidlist进行选择,例如ps -p `echo {1..1000}`,顺序输出进程号在1~1000范围内的进程
  13. --ppid pidlist 按父进程号进行选择。

  14. -t ttylist 指定tty进行选择。“-”选择没有terminal的进程。
用指定的方式进行选择基本就是这么4个维度:pid,tty,cmdname,GID/UID.
按pid选择,用-p
按tty选择,用-t
按cmdname选择,用-C
按GID/UID选择,用-G/-g/-U/-g

5:输出格式控制
控制输出的信息。

  1. BSD options
  2. j         作业控制格式
  3. l         BSD长格式
  4. O format  指定格式(有一些预定义的列)
  5. o format  与-o相同
  6. s         signal format,显示PENDING,BLOCKED,IGNORED,CAUGHT的信号
  7. u         面向用户的格式,类似于top之后看到的那些
  8. v         显示虚拟内存格式
  9. X         register format,显示寄存器ESP,EIP,STACKP的值


  10. UNIX options
  11. -f        全格式输出,会输出命令行参数,与-L一起使用会输出NLWP和LWP信息
  12. -j        作业格式
  13. -l        长格式
  14. -O format 输出指定的列和一些预定义的列,等价于-o pid,format,state,tname,time,command
  15. -o format 用户指定格式,能够使用的格式在后面描述,而且可以重命名输出,如ps -o pid,comm=Command。
  16. -y        不显示flags,只能与-l共用。
至于这些signal format,long format,register format,vitual mem format,job format,full format,还是自己输命令了查看都有哪些字段吧。 这里不统计。

常用的可能是:
l    BSD长格式
u   面向用户的格式,ps axu用的挺多。
o format    指定格式输出。
-f  全格式
-l  长格式
-o format   指定格式输出。
-O format  指定格式输出。


6:输出控制修饰符
对输出进行修饰的,如更改列宽等。
  1. BSD options
  2. c       显示真正的command name,即可执行文件的名称,而不是argv的值。
  3. e       在command后显示环境变量
  4. f       树的形式显示(有斜线的)
  5. h       no header,即没有最上面那一行的描述
  6. k spec  指定sorting order, [+|-]key[,[+|-]key[,...]]。如ps a kpid,按pid递增的顺序排列。ps kstart_time -ef,按进程启动时间先后顺序排列。+表示递增,-表示递减,默认为递增。
  7. n       数字形式输出WCHAN和USER,即数字形式的UID/GID
  8. S       sum up some information。对一些信息进行求和,如CPU使用率
  9. w       wide output

  10. UNIX options
  11. -H      树的形式显示(无斜线)
  12. -w      wide output

  13. --width n     set screen width
  14. --sort spec   指定排序顺序
可能排序和命令c,-H,f会需要经常用到。

7:线程相关
  1. BSD options
  2. H 将线程当成进程显示
  3. m 在进程后显示线程


  4. UNIX options
  5. -L 显示线程,通常会显示LWP和NLWP
  6. -m 进程后显示线程
  7. -T 显示线程,会显示SPID (不知道SPID是什么,好像就是LWP)

8:其他选项

  1. --help
  2. --info
  3. --version

  4. BSD options
  5. L 列出全部的format specifiers
  6. V 版本信息

  7. UNIX options
  8. -V
比较有用的也就是L命令,这样在使用-o命令的时候若忘了要显示的域,可以用L来查看。


9:输出格式及输出说明
(1)进程FLAGS
指定flags域后,显示进程会有“F”列,其值的意思有:
1     forked但未执行
4     使用超级用户权限
(2)进程状态 STATE
specifier:s,stat,state
header:STAT, S

  1. D     uninterruptible sleep
  2. R     running or runnable
  3. S     interruptible sleep
  4. T     stopped
  5. X     dead(不该看到这个)
  6. Z     僵尸进程  

  7. BSD格式或当stat被使用的时候会有其他一些信息
  8. <     high-priority
  9. N     low-priority
  10. L     has pages locked into memory
  11. s     session leader
  12. l     是多线程的
  13. +     in foreground process group

(3)排序关键词

没有全列,更多的参考manpage
  1. cmd     执行文件的名字
  2. pcpu    cpu utilization
  3. flags
  4. pgrp    process group id
  5. utime   user time
  6. pid     process id
  7. ppid    parent process id
  8. rss     resident set size
  9. size    memory size in kilobytes
  10. share
  11. tty
  12. start_time    启动时间
  13. uid     user ID number
  14. user    user name
  15. vsize   total VM size in kB
  16. priority      kernel scheduling priority
(4)standard format specifiers
仅列出可能常用的,其余的用ps L命令或在manpage上查看

  1. CPU和内存:
  2. %cpu cpu使用率
  3. %mem 进程占用的物理内存
  4. cp per-mill cputime
  5. pcpu
  6. pmem
  7. rss
  8. rssize

  9. 命令名:
  10. cmd
  11. command
  12. comm
  13. fname
  14. ucmd
  15. ucomm

  16. 信号:
  17. pending/sig
  18. blocked/sigmask
  19. caught/sigcatch
  20. ignored/sigignore

  21. 时间:
  22. bsdstart 启动时间
  23. bsdtime 累计cpu时间
  24. cputime cumulative cpu time
  25. etime elapsed time
  26. lstart
  27. start
  28. start_time
  29. stime

  30. 各类ID:
  31. uid
  32. uname
  33. user
  34. egid
  35. egroup
  36. euid
  37. euser
  38. fgid
  39. fgroup
  40. gid
  41. group
  42. lwp/spid/tid
  43. pid
  44. pgid
  45. pgrp
  46. ppid
  47. psr
  48. rgid
  49. rgroup
  50. ruid
  51. ruser
  52. sess
  53. sgi_p 但前正在执行的processor ID
  54. sgid
  55. sgroup
  56. sid
  57. suid
  58. supgid
  59. supgrp
  60. suser

  61. 控制台
  62. tt
  63. tty
  64. tname


  65. 优先级
  66. ni
  67. nice
  68. pri

  69. 标记:
  70. f/flag/flags
  71. s/state/stat


















阅读(3726) | 评论(0) | 转发(0) |
0

上一篇:linux设备:初始化

下一篇:linux设备:device

给主人留下些什么吧!~~