ps 命令详解

From:http://blog.chinaunix.net/uid-25681671-id-3201927.html

进程和作业管理命令:http://man.linuxde.net/sub/进程和作业管理

Linux 关于 进程/线程 的命令

简介

Linux中的ps命令是Process Status的缩写ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 或者 htop 。kill 命令用于杀死进程。

十二 个经典 Linux 进程管理命令介绍

[plain]  view plain  copy
  1. ps  
  2. ps 是 Linux 中最基础的浏览系统中的进程的命令。  
  3. 能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等  
  4. ps -a - 列出所有运行中/激活进程  
  5. ps -ef |grep - 列出需要进程  
  6. ps -aux - 显示进程信息,包括无终端的(x)和针对用户(u)的进程:如USER, PID, %CPU, %MEM等  
  7.   
  8. pstree   
  9. linux中,每一个进程都是由其父进程创建的。pstree以可视化方式显示进程,通过显示进程的树状图来展示进程间关系。  
  10. 如果指定了pid了,那么树的根是该pid,不然将会是init(pid: 1)。  
  11.   
  12. top  
  13. top 是一个更加有用的命令,可以监视系统中不同的进程所使用的资源。它提供实时的系统状态信息。  
  14. 显示进程的数据包括 PID、进程属主、优先级、%CPU、%memory等。可以使用这些显示指示出资源使用量。  
  15.   
  16. htop  
  17. htop与top很类似,但是htop是交互式的文本模式的进程查看器。  
  18. 它通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。  
  19. 使用上下光标键选择进程,F7和F8改变优先级,F9杀死进程。Htop不是系统默认安装的,所以需要额外安装  
  20.   
  21. nice  
  22. 通过nice命令的帮助,用户可以设置和改变进程的优先级。提高一个进程的优先级,内核会分配更多CPU时间片给这个进程。  
  23. 默认情况下,进程以0的优先级启动。进程优先级可以通过top命令显示的NI(nice value)列查看。  
  24. 进程优先级值的范围从-20到19。值越低,优先级越高。  
  25. nice <优先值> <进程名> - 通过给定的优先值启动一个程序  
  26.   
  27. renice  
  28. renice命令类似nice命令。使用这个命令可以改变正在运行的进程优先值。  
  29. 注意,用户只能改变属于他们自己的进程的优先值。  
  30. renice -n -p - 改变指定进程的优先值  
  31. renice -u -g - 通过指定用户和组来改变进程优先值  

  32. kill  
  33. 这个命令用于发送信号来结束进程。如果一个进程没有响应杀死命令,这也许就需要强制杀死,使用-9参数来执行。  
  34. 注意,使用强制杀死的时候一定要小心,因为进程没有时机清理现场,也许写入文件没有完成。  
  35. 如果我们不知道进程PID或者打算用名字杀死进程时候,killall就能派上用场。  
  36. kill <pid>  
  37. kill -9 <pid>  
  38. killall -9 - 杀死所有拥有同样名字的进程  
  39. 如果你使用kill,你需要知道进程ID号。pkill是类似的命令,但使用模式匹配,如进程名,进程拥有者等。  
  40. pkill <进程名>  

  41. ulimit  
  42. -f - 最大文件尺寸大小  
  43. -v - 最大虚拟内存大小(KB)  
  44. -n - 增加最大文件描述符数量  
  45. -H : 改变和报告硬限制  
  46. -S : 改变和报告软限制  
  47. 该命令用于控制系统资源在shell和进程上的分配量。  
  48. 对于系统管理员是最有用的,可以管理重度使用和存在性能问题的系统。  
  49. 限制资源大小可以确保重要进程持续运行,其他进程不会占用过多资源。  
  50. ulimit -a - 显示当前用户关联的资源限制  

  51. w   
  52. 提供当前登录的用户及其正在执行的进程的信息。  
  53. 显示信息头包含信息,如当前时间、系统运行时长、登录用户总数、过去的1,5,15分钟内的负载均衡数。  
  54. 基于这些用户信息,用户在终止不属于他们的进程时要小心。  
  55.   
  56. who  
  57. 是和 w 类似命令,提供当前登录用户列表、系统启动时间、运行级别等。  
  58.   
  59. whoami 命令输出当前用户ID  
  60. pgrep  
  61. pgrep的意思是”进程号全局正则匹配输出”。  
  62. 该命令扫描当前运行进程,然后按照命令匹配条件列出匹配结果到标准输出。对于通过名字检索进程号是很有用。  
  63. pgrep -u mint sh  
  64. 这个命令将会显示用户为‘mint’和进程名为‘sh’的进程ID。  
  65.   
  66. fg , bg  
  67. 有时,命令需要很长的时间才能执行完成。对于这种情况,我们使用‘bg’命令可以将任务放在后台执行,而用‘fg’可以调到前台来使用。  
  68. 我们可以通过‘&’在后台启动一个程序:  
  69. find . -name *iso > /tmp/res.txt &  
  70. 一个正在运行的程序也可以通过“CTRL+Z”和“bg”命令组合放到后台运行。  
  71. find . -name *iso > /tmp/res.txt &     -  启动一个程序  
  72. ctrl+z      -   挂起当前执行程序  
  73. bg   -  将程序放到后台运行  
  74. 我们可以使用‘jobs’命令列出所有后台进程。  
  75. jobs  
  76. 使用‘fg’命令可以将后台程序调到前台执行。  
  77. fg %进程id  
  78.   
  79. ipcs  
  80. ipcs命令报告进程间通信设施状态。(共享内存,信号量和消息队列)  
  81. 用-p参数联合-m、-s或-q使用,可以获得相关的进程间通信的进程ID。  
  82. ipcs -p -m  

linux上进程有5种状态

5种进程状态

[plain]  view plain  copy
  1. 1. 运行(正在运行或在运行队列中等待)   
  2. 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)   
  3. 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)   
  4. 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)   
  5. 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)   

ps工具标识进程的5种状态码: 

[plain]  view plain  copy
  1. D 不可中断 uninterruptible sleep (usually IO)   
  2. R 运行 runnable (on run queue)   
  3. S 中断 sleeping   
  4. T 停止 traced or stopped   
  5. Z 僵死 a defunct (”zombie”) process  


ps命令支持三种使用的语法格式

三种语法格式

[plain]  view plain  copy
  1. 1.UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符  
  2. 2.BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符  
  3. 3.GNU 风格的长选项,选项前有两个“-”连字符  

能够混用这几种风格,但是可能会发生冲突。较多使用 UNIX 风格的ps命令。

日常生活中使用的ps命令的例子(UNIX 风格)。

[plain]  view plain  copy
  1. 1. 不加参数执行ps命令. 这是一个基本的 ps 使用  
  2. 2. 显示所有当前进程. 使用 -a 参数。-a 代表 all。同时加上x参数会显示没有控制终端的进程。ps -ax | less  
  3. 3. 根据用户过滤进程. 在需要查看特定用户进程的情况下,我们可以使用 -u 参数。  
  4.    比如我们要查看用户'pungki'的进程,可以通过下面的命令: $ ps -u pungki  
  5. 4. 通过cpu和内存使用来过滤进程.  ps -aux | less   默认的结果集是未排序的。  
  6.    可以通过 --sort命令来排序。. 根据 CPU 使用来升序排序. ps -aux --sort -pcpu | less  
  7.    根据 内存使用 来升序排序 .ps -aux --sort -pmem | less  
  8.    ps -aux --sort -pcpu,+pmem | head -n 10  
  9. 5. 通过进程名和PID过滤  
  10.    使用 -C 参数,后面跟你要找的进程的名字。比如想显示一个名为getty的进程的信息,就可以使用下面的命令:  
  11.    $ ps -C getty  
  12.    如果想要看到更多的细节,我们可以使用-f参数来查看格式化的信息列表:$ ps -f -C getty  
  13. 6. 根据线程来过滤进程. 如果我们想知道特定进程的线程,可以使用-L 参数,后面加上特定的PID。$ ps -L 1213  
  14. 7. 树形显示进程. 有时候我们希望以树形结构显示进程,可以使用 -axjf 参数。 $ps -axjf. 或者使用另一个命令:pstree  
  15. 8. 显示安全信息. 如果想要查看现在有谁登入了你的服务器。可以使用ps命令加上相关参数:$ ps -eo pid,user,args  
  16.    参数 -e 显示所有进程信息,-o 参数控制输出。Pid,User 和 Args参数显示PID,运行应用的用户和该应用。  
  17. 9. 格式化输出root用户(真实的或有效的UID)创建的进程  
  18.    系统管理员想要查看由root用户运行的进程和这个进程的其他相关信息时,可以通过下面的命令:  
  19.    $ ps -U root -u root u  
  20.    -U 参数按真实用户ID(RUID)筛选进程,它会从用户列表中选择真实用户名或 ID。真实用户即实际创建该进程的用户。  
  21.    -u 参数用来筛选有效用户ID(EUID)。  
  22.    最后的u参数用来决定以针对用户的格式输出,由User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND这几   列组成。  
  23. 10. 使用PS实时监控进程状态. ps 命令会显示你系统当前的进程状态,但是这个结果是静态的。  
  24.     当有一种情况,我们需要像上面第四点中提到的通过CPU和内存的使用率来筛选进程,并且我们希望结果能够每秒刷新一次。  
  25.     为此,我们可以将ps命令和watch命令结合起来。$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’  
  26.     如果输出太长,我们也可以限制它,比如前20条,我们可以使用head命令来做到。  
  27.     $ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’  
  28.     这里的动态查看并不像top或者htop命令一样。但是使用ps的好处是你能够定义显示的字段,你能够选择你想查看的字段。  
  29.     举个例子,如果你只需要看名为'pungki'用户的信息,你可以使用下面的命令:  
  30.     $ watch -n 1 ‘ps -aux -U pungki u --sort -pmem, -pcpu | head 20’  


一些参数和使用实例

一些参数


[plain]  view plain  copy
  1. -A    列出所有的进程  
  2. -w    显示加宽可以显示较多的资讯  
  3. -au    显示较详细的资讯  
  4. -aux    显示所有包含其他使用者的行程  
  5. ############################################################  
  6. 常用参数:  
  7. -A 显示所有进程(等价于-e)(utility)  
  8. -a 显示一个终端的所有进程,除了会话引线  
  9. -N 忽略选择。  
  10. -d 显示所有进程,但省略所有的会话引线(utility)  
  11. -x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)  
  12. -p pid 进程使用cpu的时间  
  13. -u uid or username 选择有效的用户id或者是用户名  
  14. -g gid or groupname 显示组的所有进程。  
  15. U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)  
  16. -f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.  
  17. -l 长格式(有F,wchan,C 等字段)  
  18. -j 作业格式  
  19. -o 用户自定义格式。  
  20. v 以虚拟存储器格式显示  
  21. s 以信号格式显示  
  22. -m 显示所有的线程  
  23. -H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)  
  24. e 命令之后显示环境(如:ps -d e; ps -a e)(utility)  
  25. h 不显示第一行  

使用实例

[plain]  view plain  copy
  1. ############################################################  
  2. ps命令常用用法(方便查看系统进程)  
  3. 1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。  
  4. 2)ps -A 显示所有进程。  
  5. 3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。  
  6. 4)ps -e 此参数的效果和指定"A"参数相同。  
  7. 5)ps e 列出程序时,显示每个程序所使用的环境变量。  
  8. 6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。  
  9. 7)ps -H 显示树状结构,表示程序间的相互关系。  
  10. 8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。  
  11. 9)ps s 采用程序信号的格式显示程序状况。  
  12. 10)ps S 列出程序时,包括已中断的子程序资料。  
  13. 11)ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。  
  14. 12)ps -u root  显示root用户信息  
  15. 13)ps x  显示所有程序,不以终端机来区分。  
  16. 最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。  
  17. ############################################################  
  18. 实例3:显示所有进程信息,连同命令行  
  19.       命令:ps -ef  
  20. 实例4:ps 与grep 常用组合用法,查找特定进程  
  21.       命令:ps -ef|grep ssh  
  22. 实例5:将目前属于您自己这次登入的 PID 与相关信息列示出来  
  23.       命令:ps -l  
  24.     说明:  
  25.     各相关信息的意义:  
  26.     F 代表这个程序的旗标 (flag), 4 代表使用者为 super user  
  27.     S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍  
  28.     UID 程序被该 UID 所拥有  
  29.     PID 就是这个程序的 ID !  
  30.     PPID 则是其上级父程序的ID  
  31.     C CPU 使用的资源百分比  
  32.     PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍  
  33.     NI 这个是 Nice 值,在下一小节我们会持续介绍  
  34.     ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"  
  35.     SZ 使用掉的内存大小  
  36.     WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作  
  37.     TTY 登入者的终端机位置  
  38.     TIME 使用掉的 CPU 时间。  
  39.     CMD 所下达的指令为何  
  40.     在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID 而已,所以, 当我使用 ps -l 的时候,只有三个 PID。  
  41. 实例6:列出目前所有的正在内存当中的程序  
  42.     命令:ps aux  
  43. 说明:  
  44. USER:该 process 属于那个使用者账号的  
  45. PID :该 process 的号码  
  46. %CPU:该 process 使用掉的 CPU 资源百分比  
  47. %MEM:该 process 所占用的物理内存百分比  
  48. VSZ :该 process 使用掉的虚拟内存量 (Kbytes)  
  49. RSS :该 process 占用的固定的内存量 (Kbytes)  
  50. TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。  
  51. STAT:该程序目前的状态,主要的状态有  
  52. R :该程序目前正在运作,或者是可被运作  
  53. S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。  
  54. T :该程序目前正在侦测或者是停止了  
  55. Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态  
  56. START:该 process 被触发启动的时间  
  57. TIME :该 process 实际使用 CPU 运作的时间  
  58. COMMAND:该程序的实际指令  
  59. 实例7:列出类似程序树的程序显示  
  60. 命令:ps -axjf  
  61. 实例8:找出与 cron 与 syslog 这两个服务有关的 PID 号码  
  62. 命令:ps aux | egrep '(cron|syslog)'  
  63.   
  64. 3. 输出指定的字段  
  65. 命令:ps -o pid,ppid,pgrp,session,tpgid,comm  
  66.   
  67. 注意:"ps aux"和"ps -aux"不相同。例如"-u"用来显示该用户的进程。但是"u"则是显示详细的信息。  
  68. BSD风格:在BSD风格的语法选项前不带连字符。例如: ps aux   
  69. UNIX/LINUX的风格:在linux风格的语法选项前面有一个破折号.例如: ps -ef   
  70. 混合使用两种Linux系统上的语法风格是好事儿。例如“ps ax -f”。  
  71. 1、显示所有进程:  
  72. $ ps ax   
  73. $ ps -ef  
  74. "u"或者"-f"参数来显示所有进程的详细信息  
  75. $ ps aux   
  76. $ ps -ef -f   
  77. 注意:为什么用户列不显示我的用户名,但显示其他用户,如root、www等,对于所有的用户名(包括你)如果长度大于8个字符,然后ps将只显示UID,而不是用户名。  
  78. 2、根据用户显示进程:  
  79. 由进程的所属用户使用“-u”选项后跟用户名来显示。多个用户名可以提供以逗号分隔。  
  80. $ ps -f -u www-data   
  81. 3、通过名字和进程ID显示进程:  
  82. 通过名字或命令搜索进程,使用“-C”选项后面加搜索词。  
  83. $ ps -C apache2   
  84. 4、根据CPU或者内存进行排序:  
  85. “–sort”选项由逗号分隔的多个字段可以用指定。此外,该字段可以带有前缀“-”或“”符号,表示降序或升序分别排序。通过进程列表进行排序有很多参数,你可以检查手册页的完整列表。  
  86. $ ps aux --sort=-pcpu,+pmem   
  87. $ ps aux --sort=-pcpu | head -5  
  88. 5、用树的风格显示进程的层次关系:  
  89. 许多进程实际上是一些父进程分的分支,知道这父子进程关系往往是有用的。在'–forest'选项将建立ASCII艺术风格层次的树视图。  
  90. 下面的命令将搜索进程名字为Apache2,形成一个树结构来显示详细的信息。  
  91. $ ps -f --forest -C apache2   
  92. 6、显示一个父进程的子进程:  
  93. 这里有一个例子显示所有apache进程的分支  
  94. $ ps -o pid,uname,comm -C apache2   
  95. 7、显示一个进程的线程:  
  96. “-L”选项将显示进程的线程。它可以用来显示特定进程的所有线程或者所有进程。  
  97. 下面的命令将显示所有id为3150的进程所拥有的线程。  
  98. $ ps -p 3150 -L   
  99. 8、改变要显示的列:  
  100. ps命令可以配置为只显示选中的列表。为了显示完整列表可以查看手册。  
  101. 下面的命令只显示PID,用户名,CPU,内存和命令的列。  
  102. $ ps -e -o pid,uname,pcpu,pmem,comm   
  103. 可以重命名列标签,相当的灵活。  
  104. $ ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm   
  105. 9、显示进程运行的时间:  
  106. 表示进程的运行时间。对于运行的时间,列默认情况下是不显示的,可以使用“-O”选项查看。  
  107. $ ps -e -o pid,comm,etime   
  108. 10、把ps命令变成一个实时查看器:  
  109. 像往常一样,watch命令可以用来实时捕捉ps显示进程。简单的例子如下:  
  110. $ watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'   

要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps
(1) ps :是显示瞬间进程的状态,并不动态连续;
(2) top:如果想对进程运行时间监控,应该用 top 命令;
(3) kill 用于杀死进程或者给进程发送信号;
(4) 查看文章最后的man手册,可以查看ps的每项输出的含义,to find: STANDARD FORMAT SPECIFIERS

[plain]  view plain  copy
  1. ===================================ps 的参数说明=============================  
  2. l 长格式输出;  
  3. u 按用户名和启动时间的顺序来显示进程;  
  4. j 用任务格式来显示进程;  
  5. f 用树形格式来显示进程;  
  6. a 显示所有用户的所有进程(包括其它用户)。显示所有进程  
  7. -a 显示同一终端下的所有程序  
  8. x 显示无控制终端的进程;  
  9. r 显示运行中的进程;  
  10. ww 避免详细参数被截断;  
  11. -A 列出所有的进程  
  12. -w 显示加宽可以显示较多的资讯  
  13. -au 显示较详细的资讯  
  14. -aux 显示所有包含其他使用者的进程  
  15. -e 显示所有进程,环境变量  
  16. -f 全格式  
  17. -h 不显示标题  
  18. -l 长格式  
  19. -w 宽输出  
  20. a   显示终端上地所有进程,包括其他用户地进程  
  21. r   只显示正在运行地进程  
  22. x   显示没有控制终端地进程  
  23. 我们常用的选项是组合是 aux 或 lax,还有参数 f 的应用。  
  24. pids 只列出进程标识符,之间运用逗号分隔.该进程列表必须在命令行参数地最后一个选项后面紧接着给出,中间不能插入空格.比如:ps -f1,4,5 显示的是进程ID为1,4,5的进程  
  25. 下介绍长命令行选项,这些选项都运用“--”开头:  
  26. --sort X[+|-] key [,[+|-] key [,…]] 从SORT KEYS段中选一个多字母键.“+”字符是可选地,因为默认地方向就是按数字升序或者词典顺序,“-”字符是逆序排序(即降序).  
  27. 比如: ps -jax -sort=uid,-ppid,+pid.  
  28. --help 显示帮助信息.  
  29. --version 显示该命令地版本信息.  
  30. 在前面地选项说明中提到了排序键,接下来对排序键作进一步说明.需要注意地是排序中运用地值是ps运用地内部值,并非仅用于某些输出格式地伪值.排序键列表见下表.  
  31. ============排序键列表==========================  
  32. c cmd   可执行地简单名称   
  33. C cmdline   完整命令行   
  34. f flags   长模式标志   
  35. g pgrp   进程地组ID   
  36. G tpgid   控制tty进程组ID   
  37. j cutime   累计用户时间   
  38. J cstime   累计系统时间   
  39. k utime   用户时间   
  40. K stime   系统时间   
  41. m min_flt   次要页错误地数量   
  42. M maj_flt   重点页错误地数量   
  43. n cmin_flt 累计次要页错误   
  44. N cmaj_flt 累计重点页错误   
  45. o session   对话ID   
  46. p pid   进程ID   
  47. P ppid   父进程ID   
  48. r rss   驻留大小   
  49. R resident 驻留页   
  50. s size   内存大小(千字节)   
  51. S share   共享页地数量   
  52. t tty   tty次要设备号   
  53. T start_time 进程启动地时间   
  54. U uid   UID  
  55. u user   用户名  
  56. v vsize   总地虚拟内存数量(字节)   
  57. y priority 内核调度优先级  

ps aux 或 lax 输出的解释

[plain]  view plain  copy
  1. ========================================ps aux 或 lax 输出的解释=========================  
  2. 2、ps aux 或 lax 输出的解释  
  3. au(x) 输出格式 :   
  4. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND  
  5.   
  6. USER: 进程所有者  
  7. PID: 进程ID  
  8. %CPU: 占用的 CPU 使用率  
  9. %MEM: 占用的内存使用率  
  10. VSZ: 占用的虚拟内存大小  
  11. RSS: 占用的内存大小  
  12. TTY: 终端的次要装置号码 (minor device number of tty)  
  13. STAT: 进程状态:  
  14. START: 启动进程的时间;   
  15. TIME: 进程消耗CPU的时间;  
  16. COMMAND:命令的名称和参数;  

进程 stat 状态

[plain]  view plain  copy
  1. =========================================进程STAT状态==================================  
  2. D 无法中断的休眠状态(通常 IO 的进程);   
  3. R 正在运行,在可中断队列中;   
  4. S 处于休眠状态,静止状态;   
  5. T 停止或被追踪,暂停执行;   
  6. W 进入内存交换(从内核2.6开始无效);   
  7. X 死掉的进程;   
  8. Z 僵尸进程不存在但暂时无法消除;  
  9. W: 没有足够的记忆体分页可分配  
  10. WCHAN 正在等待的进程资源;  
  11. <: 高优先级进程  
  12. N: 低优先序进程  
  13. L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O),即,有些页被锁进内存  
  14.   
  15. s 进程的领导者(在它之下有子进程);   
  16. l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);   
  17. + 位于后台的进程组;  


kill 终止进程

[plain]  view plain  copy
  1. ========================================kill 终止进程================================  
  2. kill 终止进程  
  3. 有十几种控制进程的方法,下面是一些常用的方法:  
  4. kill -STOP [pid]   
  5. 发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。  
  6. kill -CONT [pid]   
  7. 发送SIGCONT (19,18,25)重新开始一个停止的进程。  
  8. kill -KILL [pid]   
  9. 发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。  
  10. kill -9 -1   
  11. 终止你拥有的全部进程。  
  12. SIGKILL 和 SIGSTOP 信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。  

==================================================范例==============================
$ ps
PID TTY TIME COMMAND
5800 ttyp0 00:00:00 bash
5835 ttyp0 00:00:00 ps
可以看到,显示地项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时 间)、COMMAND(该进程地命令行输入).
可以运用u选项来查看进程所有者及其他少许详细信息,如下所示:
$ ps u
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u
在bash进程前面有条横线,意味着该进程便是用户地登录shell,所以对于一个登录用户来说带短横线地进程只有一个.还可以看 到%CPU、%MEM两个选项,前者指该进程占用地CPU时间
和总时间地百分比;后者指该进程占用地内存和总内存地百分比.
在这种情况下看到了所有控制终端地进程;当然对于其他那些没有控制终端地进程 还是没有观察到,所以这时就需要运用x选项.运用x选项可以观察到所有地进程情况.
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u  以用户为主的格式来显示程序状况。
13)ps x  显示所有程序,不以终端机来区分。


 最常用的方法是ps -aux,然后再用管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
==================================================
luther@gliethttp:~$ ps --help
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheduling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy

猜你喜欢

转载自blog.csdn.net/qq_15037231/article/details/80394633