免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 999 | 回复: 0
打印 上一主题 下一主题

ps命令详解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-14 17:37 |只看该作者 |倒序浏览

PS命令详解
首先要明白什么是进程
进程是一个正在运行的程序。也就是说在Linux系统上运行的所有东西都是进程。和进程相比较,作业是一系列按一定顺序执行的命令。一条简单的命令可能会涉及多个进程,尤其是当使用管道和重定向时。例如命令:

# nroff –man ps.1 | grep kill | more
将产生三个进程,每一条命令一个。
Linux操作系统有好几种进程,每一种都有其各自的品质和特性。下面给出了Linux系统的三种进程:
■ 交互式进程:一个由shell启动并控制的进程。交互式进程既可在前台也可在后台运行。
■ 批处理进程:与终端无关,安排在指定时刻完成的一系列进程。
■ 守护进程:在引导系统时起动,以执行即时的操作系统任务,如 lpd、inetd、named等。
1. ps简介
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
2. ps命令的输出
ps命令通常以行列的形式输出结果。系统中的每一个进程都有一个唯一的标志符以便Linux可以识别它们。Linux通过给每一个进程分配唯一的数码来处理进程,这个数码叫做进程ID号(或PID号)。PID号当系统被引导时从0开始,每增加一个进程就加1位,直到系统确定的一个数字,例如65564。然后,PID号再从0开始,周而复始,不断循环。通常PID号较小的进程是系统的核心和守护进程,当系统被引导时它们就存在,并只要系统还在运行,它们就处于活跃状态。当用户管理进程时(比如终止它们),就必须要用到PID号。ps命令输出的TTY列告诉用户进程从哪一个终端开始。如果作为普通用户登录,那么通常就是用户自己的终端或控制台。如果在一个多控制台的系统上工作,用户将看到自己在每一个控制台起动的所有进程。
ps命令输出的STAT列告诉用户当前进程的状态。进程最常见的两种状态是S(sleeping)代表沉睡的进程和R(running)代表运行的进程。运行的进程是当前正在CPU中执行的进程,而沉睡的进程是当前并不活动的进程。进程可以每秒种在沉睡和运行两种状态间转换多次。
ps命令输出的TIME列告诉用户进程占用CPU的总共时间,这些时间通常都很短,这是因为大多数进程运行结束只需很短的时间就够了。
COMMANDS列,这一列包含了用户所运行的所有命令的名称。出现在COMMANDS列中的通常都是用户使用的命令,但有些命令还会引起其它的进程,这些进程被称为子进程。
3. ps命令及其参数
  ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设
备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。
  该命令语法格式如下:
  ps
technet:选项
  下面对命令选项进行说明:
  -e 显示所有进程。
  -f 全格式。
  -h 不显示标题。
  -l 长格式。
  -w 宽输出。
  a 显示终端上的所有进程,包括其他用户的进程。
  r 只显示正在运行的进程。
 O
+
k1 [,
+
k2
technet:,…
] 根据SHORT KEYS、k1、k2中快捷键指定的多级排序顺序显示进程列表。对于ps的不同格式都存在着默认的顺序指定。
这些默认顺序可以被用户的指定所覆盖。其中"+"字符是可选的,"-"字符是倒转指定键的方向。
  
  以下介绍长命令行选项,这些选项都使用“--”开头:
  --sort X
+
key [,
+
key
technet:,…
] 从SORT KEYS段中选一个多字母键。“+”字符是可选的,因为默认的方向就是按数字升序或者词典顺序。比如: ps -jax -sort=uid,-ppid,+pid。
  --help 显示帮助信息。
  --version 显示该命令的版本信息。
  在前面的选项说明中提到了排序键,接下来对排序键作进一步说明。需要注意的是排序中使用的值是ps使用的内部值,并非仅用于某些输出格式的伪值。
  


排序键 短格式 长格式  说明
    c cmd  可执行的简单名称
    C cmdline  完整命令行
    f flags  长模式标志
  g pgrp  进程的组ID
  G tpgid  控制tty进程组ID
  j cutime  累计用户时间
  J cstime  累计系统时间
  k utime  用户时间
  K stime  系统时间
  m min_flt  次要页错误的数量
  M maj_flt  主要页错误的数量
  n cmin_flt 累计次要页错误
  N cmaj_flt 累计主要页错误
  o session  对话ID
  p pid  进程ID
  P ppid  父进程ID
  r rss  驻留大小
  R resident 驻留页
  s size  内存大小(千字节)
  S share  共享页的数量
  t tty  tty次要设备号
T start_time 进程启动的时间
  U uid  UID
  u user  用户名
  v vsize  总的虚拟内存数量(字节)
  y priority 内核调度优先级
3. 常用ps命令参数
最常用的三个参数是u、a、x,下面将通过例子来说明其具体用法。
以root身份登录系统,查看当前进程状况


$ 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时间和总时间的百分比;后者指该进程
占用的内存和总内存的百分比。
$ ps x
(结果太长就不列出了..)
在这种情况下我们会看到所有控制终端的进程;
特别说明 -l选项可以告诉您某条进程是由哪一条进程引起的,这只有当想鉴别子进程时才有用:


$ ps -l

F       UID  PID   PPID          PRI   NI     SIZE RSS   WCHAN   STAT                  TTY TIME        COMMAND
0       501   41     1       15     0       364   472   114d9c       S                v01   0:00            –bash
0       501   121   41     29     0       64     208   0                 R                v01   0:00            ps –l
PPID(Parent Process ID)是进程的父进程的ID号。在本例中,列出的第一个进程(PID 41)是第二个进程(PID 121)的父进程。您还可以看到,ps –l的父进程login Bourne shell的PID是1,这是操作系统的init进程。如果init被终止,那么所有的进程都会被杀死。简单地说,如果init死了,系统将关机。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/30619/showart_247397.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP