ps命令实例讲解

本文详细解析ps命令的各种用法,包括进程检索、输出格式控制、线程信息展示、进程状态与资源使用情况等,通过实例演示如何高效地管理与分析Linux进程。
检索进程:ps
  ps这个命令最常见的,我们经常用它来检索进程,但在我认真阅读过ps的man文档之前,我使用的最多的选项是aux,用grep匹配出特定的进程,然后再处理它,现在看来这种做法非常笨拙,呵呵!其实我们完全可以用pgrep快速的完成这一串操作。

  今天暂不讲解pgrep的用法,先让我们更多的了解一下ps,首先ps支持三种选项格式:unix options这种选项通常需要在其前加横杠-,多值可梱绑;BSD options 选项前不用加任何符号;GNU Long options即GNU长选项,选项前加两个横杠;这三种选项可以混用,在产生冲突时程序会提示。

  ps选项分类:检索类、输出列格式控制、线程信息、其他信息,在此我只列举一些常用到的用法,其他选项在用到时可以查看手册页。


ps命令列出各列含义详解

pid %d
进程标识.
comm %s
可执行文件的文件名, 包括路径. 该文件是否可见取决于该文件是否已被交换出内存.
state %c
";RSDZT"; 中的一个, R 是正在运行, S 是在可中断的就绪态中睡眠, D 是在不可中断的等待或交换态中睡眠, Z 是僵死, T 是被跟踪或被停止(由于收到信号).
ppid %d
父进程 PID.
pgrp %d
进程的进程组 ID.
session %d
进程的会话 ID.
tty %d
进程所使用终端.
tpgid %d
当前拥有该进程所连接终端的进程所在的进程组 ID.
flags %u
进程标志. 目前每个标志都设了数学位, 所以输出里就不包括该位. crt0.s 检查数学仿真这可能是一个臭虫, 因为不是每个进程都是用 c 编译的程序. 数学位应该是十进制的 4, 而跟踪位应该是十进制的 10.
minflt %u
进程所导致的小错误(minor faults)数目, 这样的小错误(minor faults)不需要从磁盘重新载入一个内存页.
cminflt %u
进程及其子进程所导致的小错误(minor faults)数目.
majflt %u
进程所导致的大错误(major faults)数目, 这样的大错误(major faults)需要重新载入内存页.
cmajflt %u
进程及其子进程所导致的大错误(major faults)数目.
utime %d
进程被调度进用户态的时间(以 jiffy 为单位, 1 jiffy=1/100 秒,另外不同硬件体系略有不同).
stime %d
进程被调度进内核态的时间, 以 jiffy 为单位.
cutime %d
进程及其子进程被调度进用户态的时间, 以 jiffy 为单位.
cstime %d
进程及其子进程被调度进内核态的时间, 以 jiffy 为单位.
counter %d
如果进程不是当前正在运行的进程, 就是进程在下个时间片当前可以拥有的最大时间, 以 jiffy 为单位. 如果进程是当前正在运行的进程, 就是当前时间片中所剩下 jiffy 数目.
priority %d
标准优先数只再加上 15, 在内核里该值总是正的.
timeout %u
当前至进程的下一次间歇时间, 以 jiffy 为单位.
itrealvalue %u
由于计时间隔导致的下一个 SIGALRM 发送进程的时延,以 jiffy 为单位.
starttime %d
进程自系统启动以来的开始时间, 以 jiffy 为单位.
vsize %u
虚拟内存大小.
rss %u
Resident Set Size(驻留大小): 进程所占用的真实内存大小, 以页为单位, 为便于管理而减去了 3. rss 只包括正文, 数据以及堆栈的空间, 但不包括尚未要求装入内存的或已被交换出去的.
rlim %u
当前进程的 rss 限制, 以字节为单位, 通常为 2,147,483,647.
startcode %u
正文部分地址下限.
endcode %u
正文部分地址上限.
startstack %u
堆栈开始地址.
kstkesp %u
esp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致.
kstkeip %u
EIP(32 位指令指针)的当前值.
signal %d
待处理信号的 bitmap(通常为 0).
blocked %d
被阻塞信号的 bitmap(对 shell 通常是 0, 2).
sigignore %d
被忽略信号的 bitmap.
sigcatch %d
被俘获信号的 bitmap.
wchan %u
进程在其中等待的通道, 实际是一个系统调用的地址. 如果你需要文本格式的, 也可以在名字列表中找到. (如果有最新版本的 /etc/psdatabase, 你可以在ps -l 的结果中的 WCHAN 域看到)
cpuinfo
保存了CPU 以及体系架构依赖条目的列表. 对于不同的系统架构有不同的列表, 共有的两项是 cpuBogoMIPS, cpu 可能是当前在用的 CPU, 而 BogoMIPS 则是内核初始化时计算出的一个系统常数.
devices
主设备号及设备组的列表, 文本格式. MAKEDEV 脚本使用该文件来维持内核的一致性.
dma
一个列表, 指出正在使用的ISA DMA (直接内存访问)通道.
filesystems
以文本格式列出了被编译进内核的文件系统. 当没有给


  -e用于显示所有进程,以下是输出的一小部分:

[ root@supersun.biz ~]#ps -e
   PID TTY       TIME CMD
1 ?        00:00:00 init
2 ?        00:00:00 migration/0
3 ?        00:00:00 ksoftirqd/0
4 ?        00:00:00 watchdog/0
5 ?        00:00:00 events/0

  域定义:

PID 进程ID
TTY 与进程关联的终端
TIME 进程使用CPU累计时间
CMD 执行文件的名称


-f选项定义为full-format listing

[ root@supersun.biz ~]#ps -ef
UID        PID   PPID   C STIME TTY       TIME CMD
root       1     0   0 08:31 ?        00:00:00 init [5]                            
root       2     1   0 08:31 ?        00:00:00 [migration/0]
root       3     1   0 08:31 ?        00:00:00 [ksoftirqd/0]
root       4     1   0 08:31 ?        00:00:00 [watchdog/0]

域定义:

UID 用户ID
C        CPU利用率,以整数表示。
STIME 进程的启动时间

  -F选项添加了进程使用内存方面的一些信息:

[root@supersun ~]# ps -eF
UID        PID   PPID   C SZ RSS PSR STIME TTY       TIME CMD
root       1     0   0 508 684 1 Nov29 ?        00:00:00 init [5]                
root       2     1   0     0     0 0 Nov29 ?        00:00:00 [migration/0]
root       3     1   0     0     0 0 Nov29 ?        00:00:00 [ksoftirqd/0]
root       4     1   0     0     0 0 Nov29 ?        00:00:00 [watchdog/0]
root       5     1   0     0     0 1 Nov29 ?        00:00:00 [migration/1]
root       6     1   0     0     0 1 Nov29 ?        00:00:00 [ksoftirqd/1]
root       7     1   0     0     0 1 Nov29 ?        00:00:00 [watchdog/1]


SZ        进程用到的swap的量,这是一个粗略计算;
RSS 驻留内存大小
PSR 进程使用的处理器,在多处理器上可以体现出来,如下面的两个进程使用的不同的处理器(超线程的也算):

UID        PID   PPID   C SZ RSS PSR STIME TTY       TIME CMD
root       1     0   0 508 684 1 Nov29 ?        00:00:00 init [5]                
root       2     1   0     0     0 0 Nov29 ?        00:00:00 [migration/0]

  -L用于显示线程

[ root@supersun.biz ~]#ps -eLf
UID        PID   PPID LWP   C NLWP STIME TTY       TIME CMD
root       1     0     1   0 1 08:31 ?        00:00:00 init [5]                  
root       2     1     2   0 1 08:31 ?        00:00:00 [migration/0]
root    2233   2228   2233   3 8 08:35 ?        00:04:50 /root/firefox/firefox-bin
root    2233   2228   2271   0 8 08:36 ?        00:00:00 /root/firefox/firefox-bin
root    2233   2228   2272   0 8 08:36 ?        00:00:01 /root/firefox/firefox-bin
root    2233   2228   2277   0 8 08:36 ?        00:00:00 /root/firefox/firefox-bin
root    2233   2228   2278   0 8 08:36 ?        00:00:00 /root/firefox/firefox-bin
root    2233   2228   2279   0 8 08:36 ?        00:00:00 /root/firefox/firefox-bin

LWP light weight process ID 可以称其为线程ID。
NLWP 进程中的线程数number of lwps (threads) in the process。

  显示进程树

[ root@supersun.biz ~]#ps -ejH
   PID   PGID SID TTY       TIME CMD
1     1     1 ?        00:00:00 init
2     1     1 ?        00:00:00 migration/0
3     1     1 ?        00:00:00 ksoftirqd/0
4     1     1 ?        00:00:00 watchdog/0
5     1     1 ?        00:00:00 events/0
6     1     1 ?        00:00:00 khelper
7     1     1 ?        00:00:00 kthread
10     1     1 ?        00:00:00     kblockd/0
11     1     1 ?        00:00:00     kacpid
86     1     1 ?        00:00:00     cqueue/0
89     1     1 ?        00:00:00     khubd

SID 即session ID
F即flag,其值有:
1 forked but didn't exec
4 used super-user privileges

S即STAT,其值有:
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by its parent.
对于BSD选项产生的值:
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group

  当然我们还可以定义ps的输出域,如:

[root@supersun ~]# ps -e -o pid
   PID
1
2
3

  也可以指定多个域:

[ root@supersun.biz ~]#ps -e -o pid,cmd
   PID CMD
1 init [5]                            
2 [migration/0]
3 [ksoftirqd/0]
4 [watchdog/0]
5 [events/0]
6 [khelper]

  需要注意的是在提定域输出的时使就不要使用-f等定义域输出的选项,这样会有冲突。

  使用进程名对进程进行检索:

[ root@supersun.biz ~]#ps -C syslogd -F
UID        PID   PPID   C SZ RSS PSR STIME TTY       TIME CMD
root    1479     1   0 424 632 0 08:32 ?        00:00:00 syslogd -m 0

  对输出进行排序:

[ root@supersun.biz ~]#ps -e -o pid,rss,pcpu,cmd --sort pcpu,rss
   PID RSS %CPU CMD
2     0   0.0 [migration/0]
3     0   0.0 [ksoftirqd/0]
4     0   0.0 [watchdog/0]
2507 35948   0.2 stardict
2206   2276   2.0 gnome-screensaver
2170 15248   2.2 /usr/libexec/wnck-applet --oaf-activate-iid=OAFIID:GNOME_Wncklet_Factory
2064   8328   2.4 /usr/libexec/gnome-settings-daemon
2084 10860   2.5 metacity --sm-client-id=default1
6434   3284   2.6 rdesktop -T192.168.1.177 - Terminal Server Client -usunchao -rsound ff -
2213 22428   3.1 gnome-terminal
2233 104276 4.3 /root/firefox/firefox-bin
多角色体系 支持管理员、商家、消费者三种角色,权限分级管控: 管理员:负责平台整体配置、用户审核、数据监控等全局操作。 商家:管理店铺信息、发布商品、处理订单、回复评价等。 消费者:浏览商品、加入购物车、下单支付、评价商品等。 实现用户注册(手机号 / 邮箱验证)、登录(支持密码 / 验证码 / 第三方登录)、个人信息管理(头像、收货地址、密码修改)。 权限精细化控制 商家仅能管理自家店铺及商品,消费者仅能查看和购买商品,管理员拥有全平台数据访问权限。 二、商品管理功能 商品信息维护 商家可发布商品:填写名称、分类(如服饰、电子产品)、子类别(如手机、笔记本)、规格(尺寸、颜色、型号)、价格、库存、详情描述(图文)、物流信息(运费、发货地)等。 支持商品上下架、库存调整、信息编辑,系统自动记录商品状态变更日志。 商品分类与搜索 按多级分类展示商品(如 “数码产品→手机→智能手机”),支持自定义分类体系。 提供智能搜索功能:按关键词(名称、品牌)搜索,支持模糊匹配和搜索联想;结合用户浏览历史对搜索结果排序(优先展示高相关度商品)。 商品推荐 基于用户浏览、收藏、购买记录,推荐相似商品(如 “浏览过该商品的用户还买了…”)。 首页展示热门商品(销量 TOP10)、新品上架、限时折扣等推荐列表。 三、订单与交易管理 购物车与下单 消费者可将商品加入购物车,支持修改数量、选择规格、移除商品,系统自动计算总价(含运费、折扣)。 下单流程:确认收货地址→选择支付方式(在线支付、货到付款)→提交订单→系统生成唯一订单号。 订单处理流程 订单状态跟踪:待支付→已支付→商家发货→物流运输→消费者收货→订单完成,各状态变更实时通知用户。 商家端功能:查看新订单提醒、确认发货(填写物流单号)、处理退款申请(需审核理由)。 消费者端功能:查看订单详情、追踪物流、申请退款 / 退货、确认收货。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值