0%

ps命令使用小结

ps命令大家最熟悉不过了,经常用来查看系统资源及进程的基础信息。 使用管道导出结果到grep, xarg等命令,实现一些定位的目的。

1
ps --help
图片替换文本

可以看到ps命令后面的选项大概分为5种, 简单选择项,指定选择项,输出格式项,指定长选项和混合选项。正常情况下,前面的4种选项,只能选择其中的一个选项参数,不同的种类间可以混合设置。基于兼容处理,如果有选项不能混合的话, 会显示一行warning,然后再继续显示。

具体的还可以看一下 man ps

ps显示当前进程的一个快照信息。可以通过选项设置显示的进程,如果希望持续更新显示进程信息可以使用top命令。

不同版本的ps可以支持多种种类的选项。

  • UNIX选项格式, 必须使用-连接,可以组合多个选项
  • BSD选项格式,不能使用-连接,可以组合多个选项
  • GNU类型长选项,需要两个-作为前导符号

不同种类的选项可能一起出现,但是可能会出现冲突。不同格式的有些选项功能是相同的,ps也会作兼容处理。

默认的,ps会显示相同用户id下的所有进程(euid=EUID)和当前终端启动的进程,输出的进程一般是未作排序的。ps会显示PID、关联的终端名TTY、累积的CPU运行时间(实际的还是总的?)TIME、可执行文件名(CMD)。

BSD格式的选项,还会显示进程的状态STAT, 使用进程名加参数的形式替换可执行文件名,当然这是可以设置的,可以设置环境变量PS_FORMAT(没试过,后面补充看看)。

默认的许多进程是不被显示的,只有通过设置了选项,符合选项设置的进程信息才能显示出来。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
查看每个进程的信息,标准格式
ps -e
ps -ef
ps -eF
ps -ely

查看每个进程的信息, BSD格式
ps ax
ps axu

查看进程树
ps -ejH
ps axjf

获取线程的信息
ps -eLf
ps axms

显示安全信息? // TODO需要了解一下 内核中进程的结构
ps -axZ
ps -eM

作为root用户运行的进程,用户格式
ps -U root -u root u

使用用户自定义的格式查看每个进程
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wcha:14,comm
ps axo stat,euid,ruid,tty,comm
ps -eopid,tt,user,fname,tmout,f,wchan

只查看指定进程名的pid的信息
ps -C init -o pid=

只查看进程id为42的进程名
ps -p 42 -o comm=


更多的功能,可以组合选项尝试输出一下。

CPU运行时间

运行时间分几种,一种是程序结束的时间减去程序开始的时间,即自然时间 Wall Clock Time. 还有一种是实际占用CPU的运行时间,因为CPU同时需要运行多个程序,不断的在程序间切换。可以使用time命令查看某个程序的运行时间。

1
2
3
4
5
6
7
8
9
10
Keep:~ keep$ time ps
PID TTY TIME CMD
455 ttys000 0:00.01 /bin/bash -l
456 ttys001 0:00.01 /bin/bash -l
906 ttys002 0:00.03 -bash

real 0m0.017s
user 0m0.002s
sys 0m0.011s

第一个是 real time,也就是我们说的 Wall Clock Time,也就是运行程序整个过程中流逝掉的时间;第二个是 user time,也就是 CPU 在运行你的程序,在用户态运行指令的时间;第三个是 sys time,是 CPU 在运行你的程序,在操作系统内核里运行指令的时间。而程序实际花费的 CPU 执行时间(CPU Time),就是 user time 加上 sys time, ps中显示的就是这个时间。

小常识

近期项目在测试过程中,经常出现一些包解析错误的问题。主要是通过测试仪构造了一些mac、ip或者端口递增的报文。由于某一些ip或者端口是有特殊用途的,导致在报文解析的过程中,由于这些报文的格式不符合规范而被解析成错误报文。

主要有这几个问题:

  • 源mac为组播mac
  • 源ip为组播ip
  • 源ip为回环口ip, ipv4 127.0.0.1 ipv6 ::1
  • 源目ip相同
  • 端口号为2152 信令隧道报文,实际报文错误
  • ip报文长度错误
  • ip报文checksum错误

行动,才不会被动!

欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。