文档章节

ps

BakerZhu
 BakerZhu
发布于 2017/07/17 09:42
字数 2505
阅读 11
收藏 0

[root@lsbhjshyn ~]# ps -aux

[root@ lsbhjshyn ~]# ps -lA

[root@ lsbhjshyn ~]# ps axjf

[root@ lsbhjshyn ~]# ps -ef

使用 -a 参数。-a 代表 all。同时加上x参数会显示没有控制终端的进程。

$ ps -ax

这个命令的结果或许会很长。为了便于查看,可以结合less命令和管道来使用。

$ ps -ax | less

3. 根据用户过滤进程

在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户'pungki'的进程,可以通过下面的命令:

ps -u pungki

4. 通过cpu和内存使用来过滤进程

也许你希望把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 aux 参数,来显示全面的信息:

$ ps -aux | less

当结果很长时,我们可以使用管道和less命令来筛选。

默认的结果集是未排好序的。可以通过 --sort命令来排序。

根据 CPU 使用来升序排序

$ ps -aux --sort -pcpu | less

根据 内存使用 来升序排序

$ ps -aux --sort -pmem | less

我们也可以将它们合并到一个命令,并通过管道显示前10个结果:

$ ps -aux --sort -pcpu,+pmem | head -n 10

5. 通过进程名和PID过滤

使用 -C 参数,后面跟你要找的进程的名字。比如想显示一个名为getty的进程的信息,就可以使用下面的命令:

$ ps -C getty

如果想要看到更多的细节,我们可以使用-f参数来查看格式化的信息列表:

$ ps -f -C getty

6. 根据线程来过滤进程

如果我们想知道特定进程的线程,可以使用-L 参数,后面加上特定的PID。

$ ps -L 1213

7. 树形显示进程

有时候我们希望以树形结构显示进程,可以使用 -axjf 参数。

$ps -axjf

或者可以使用另一个命令。

$ pstree

 

10. 使用PS实时监控进程状态

ps 命令会显示你系统当前的进程状态,但是这个结果是静态的。

当有一种情况,我们需要像上面第四点中提到的通过CPU和内存的使用率来筛选进程,并且我们希望结果能够每秒刷新一次。为此,我们可以将ps命令和watch命令结合起来

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’

如果输出太长,我们也可以限制它,比如前20条,我们可以使用head命令来做到

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’

这里的动态查看并不像top或者htop命令一样。但是使用ps的好处是你能够定义显示的字段,你能够选择你想查看的字段。

举个例子,如果你只需要看名为'pungki'用户的信息,你可以使用下面的命令:

$ watch -n 1 ‘ps -aux -U pungki u --sort -pmem, -pcpu | head 20’

 

 

Unix风格的ps命令参数及描述

 

-A all processes 显示所有的进程

-N negate selection 显示与指定参数不符的进程

-a all w/ tty except session leaders 显示除控制进程和无终端进程外的所有进程

-d all except session leaders 显示除控制进程外的所有进程

-e all processes 显示所有的进程

-C cmdlist by command name 显示包含在cmdlist列表中的进程

-G grouplist by real group ID (supports names) 显示组ID在grouplist列表中的进程

-U userlist by real user ID (supports names) 显示属主的用户ID在userlist列表中的进程

-g grouplist by session OR by effective group name 显示组ID在grouplist列表中的进程

-p pid by process ID 显示PID在pid列表中的进程

-q by process ID (unsorted & quick)

-s sessionlist processes in the sessions given 显示会话ID在sessionlist列表中的进程

-t ttylist by tty 显示终端ID在ttylist列表中的进程

-u userlist by effective user ID (supports names) 显示有效用户ID在userlist列表中的进程

-o,o fotmat user-defined 仅显示由format指定的列

-j,j job control 显示任务信息

-O,O preloaded -o 显示默认的输出列

-l,l long 显示长列表

-F extra full 显示更多额外输出(相对于-f参数而言)

-f full 显示完整格式的信息

-V,V show version 显示ps的版本信息

-m,m,-L,-T,H threads 显示所有的执行绪

-M,Z security data 显示进程的安全信息

-w,w wide output 带宽输出模式,不限宽度显示

-y change -l format 配合-l使用

-c scheduling class 显示进程的额外调度信息

-H process hierarchy 用层级格式来显示进程

其实说了这么多的参数,一般情况下都用不到的,常用ps -ef

字段解释:

UID 启用这个进程的用户
PID 进程ID
PPID 父进程ID
C CPU占用率
STIME 进程启动时的系统时间
TTY 开始此进程的终端
TIME 此进程运行的总时间
CMD 启动的程序名称
F:内核分配给进程的系统标记
S:进程的状态(O表示正在运行;S代表正在休眠;R代表运行态;Z代表僵死态;T代表停止)
PRI:进程的优先级
NI:用来参与决定优先级
ADDR:进程的内存地址
SZ:所需交换空间的大致大小
WCHAN:进程休眠的内核函数地址

BSD风格的参数


伯克利软件发行版(Berkeley software distribution,BSD)是加州大学伯克利分校开发的一个Unix版本。它和Unix系统有许多细小的不同。

BSD风格的ps命令参数及描述

 

T all processes on this terminal 显示跟当前终端关联的所有进程

 

a all w/ tty, including other users 所有与终端相关的进程

 

g OBSOLETE -- DO NOT USE 显示所有的进程,包括控制进程

 

r only running processes 仅显示运行中的进程

 

x processes w/o controlling ttys 所有与终端无关的进程

 

U userlist processes for specified users 显示归userlist列表中某用户ID所有的进程

 

t by tty 跟-t选项相同

 

s signal 采用信号格式显示

 

v virtual memory 采用虚拟内存格式显示

 

u user-oriented 以用户为中心组织进程状态信息显示(显示进程所有者的信息)

 

X registers 按i386寄存器格式显示

 

L list format codes 列出所有格式指定符

 

S children in sum 列出程序时,包括已中断的子程序

 

c true command name 显示真实用以启动进程的程序名称

 

n numeric WCHAN,UID 和WCHAN信息一起显示出来,用数值表示用户ID和组ID

 

f ASCII art forest 用ASCII字符显示树状结构,表达程序间的相互关系

 

Unix和BSD的参数有很多重复的地方,用不到的参数很多,常用ps aux

 

字段解释:


USER:启动进程的用户
PID:进程号
%CPU:占用的CPU使用率
%MEM:内存空间占整个内存的比率
VSZ:占用的虚拟内存集,就是占用的虚拟内存大小
RSS:常驻内存集Resident Size,就是占用的固定的内存大小
TTY:终端
STAT:该进程目前的状态
R:running运行态
S:interruptable sleeping可中断睡眠
D:uninterruptable sleeping不可中断睡眠
T:Stopped停止态
Z:zombie僵死态
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:session leader会话引领者(在终端上启动个shell,在shell程序上启动好几个进程,shell就是领导者)
START:被触发启动的时间
TIME:实际使用CPU运行的时间
COMMAND:该程序的实际指令
VSZ:进程在内存中的大小,以千字节(KB)为单位
RSS:进程在未换出时占用的物理内存
STAT:代表当前进程状态的双字符状态码(双字符状态码能比Unix风格输出的单字符状态码更清楚地表示进程的当前状态)

GNU风格的参数


GNU开发人员在ps命令中加入了另外一些参数,其中一些GNU长参数复制了现有的Unix或BSD类型的参数,另一些则提供了新功能。

GNU风格的ps命令参数及描述

--Group grouplist 显示组ID在grouplist列表中的进程,和“-G”选项相同

--User userlist 显示用户ID在userlist列表中的进程,和“-U”选项相同

--pid pidlist 显示PID在pidlist列表中的进程,和“-p”选项相同

--cols n 将屏幕宽度设置n列

--ppid pidlist 显示父PID在pidlist列表中的进程

--group grouplist 显示有效组ID在grouplist列表中的进程,和“-G”选项相同

--user userlist 显示有效用户ID在userlist列表中的进程,和“-U”选项相同

--sid sidlist 显示会话ID在sidlist列表中的进程

--rows n 将屏幕高度设置n排

--info 显示调试信息

--cumulative 包含已停止的子进程信息

--format formatlist 仅显示由formatlist指定的列

--deselect 显示所有进程

--sort 指定输出按哪列排序

--tty ttylist 显示终端ID在ttylist列表中的进程,和“-t”选项相同

--forest 用层级结构显示出进程和父进程之间的关系

--version 显示ps的版本号,和“-V”选项相同

--heading 列的头

--no-heading 不显示列的头

--context 显示额外的安全信息

--help 显示帮助


inux ps打印某个进程下的所有线程

1、ps -mp xxxx -o THREAD
     在当前用户下,列出pid包含的所有线程。

2、ps -mp xxxx -o THREAD  >> /tmp/thread.txt
     在当前用户下,列出pid包含的所有线程。并把结果增量 输出到文件/tmp/thread.txt。

3、ps -mp xxxx -o THREAD,tid
     在当前用户下,列出pid包含的所有线程信息及本地线程ID (tid)。

4、ps -mp xxxx -o THREAD |wc -l
     在当前用户下,列出pid包含的所有线程的个数 。
     “wc -l”是统计记录的行数。

 

 

 

© 著作权归作者所有

BakerZhu
粉丝 109
博文 517
码字总数 423077
作品 0
通州
程序员
私信 提问

暂无文章

3_数组

3_数组

行者终成事
今天
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部