ps(Process Status)命令是linux中最常见的命令之一,它用来列出当前系统运行中的进程的状态信息。当然了,它只显示命令执行时的进程状态,如果想要动态列出状态信息,可以选择使用top命令。那么通过ps命令我们能够知道进程的哪些信息呢?下面进行介绍。

命令基本介绍

命令格式

ps命令基本格式为:
ps [options]

常用参数

-A 显示所有进程(同-e)
-a 显示当前终端的所有进程
-u 显示进程的用户信息
-o 以用户自定义形式显示进程信息
-f 显示程序间的关系

对于更多参数的介绍,可使用命令man ps查看,这里不再赘述。

字段含义
在介绍实例之前,需要先了解一下ps命令输出各字段的含义,这样我们才能更好地理解所展示的信息。常见字段的基本含义如下:

USER 进程所有者的用户名
PID 进程号
START 进程激活时间
%CPU 进程自最近一次刷新以来所占用的CPU时间和总时间的百分比
%MEM 进程使用内存的百分比
VSZ 进程使用的虚拟内存大小,以K为单位
RSS 驻留空间的大小。显示当前常驻内存的程序的K字节数。
TTY 进程相关的终端
STAT 进程状态,包括下面的状态:
D 不可中断 Uninterruptible sleep (usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X 死掉的进程
< 高优先级
N 低优先级
L 有些页被锁进内存
s 包含子进程
\+ 位于后台的进程组;
l 多线程,克隆线程
TIME 进程使用的总CPU时间
COMMAND 被执行的命令行
NI 进程的优先级值,较小的数字意味着占用较少的CPU时间
PRI 进程优先级。
PPID 父进程ID
WCHAN 进程等待的内核事件名 常见用法

下面来看看一些常见用法。

显示所有进程信息

ps -A
PID TTY TIME CMD
1 ? 00:00:03 systemd
2 ? 00:00:00 kthreadd
4 ? 00:00:00 kworker/0:0H
6 ? 00:00:00 mm_percpu_wq
7 ? 00:00:00 ksoftirqd/0
8 ? 00:00:02 rcu_sched
9 ? 00:00:00 rcu_bh
10 ? 00:00:00 migration/0
11 ? 00:00:00 watchdog/0
(内容较多,其他部分略过。)

虽然能显示所有进程,但是显示的信息却不多,基本只显示了进程id和进程名,有时候并不实用。

显示所有进程基本信息
相关参数 -e

ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:52 ? 00:00:03 /sbin/init splash
root 2 0 0 10:52 ? 00:00:00 [kthreadd]
root 4 2 0 10:52 ? 00:00:00 [kworker/0:0H]
root 6 2 0 10:52 ? 00:00:00 [mm_percpu_wq]
root 7 2 0 10:52 ? 00:00:00 [ksoftirqd/0]
root 8 2 0 10:52 ? 00:00:02 [rcu_sched]
root 9 2 0 10:52 ? 00:00:00 [rcu_bh]
root 10 2 0 10:52 ? 00:00:00 [migration/0]
(内容较多,其他部分略过。)

这个时候已经显示较多信息了。

显示指定用户的进程
相关参数-u

ps -u root
PID TTY TIME CMD
1 ? 00:00:03 systemd
2 ? 00:00:00 kthreadd
4 ? 00:00:00 kworker/0:0H
6 ? 00:00:00 mm_percpu_wq
7 ? 00:00:00 ksoftirqd/0
8 ? 00:00:03 rcu_sched
9 ? 00:00:00 rcu_bh

查看指定进程名相关信息
这个时候就需要配合grep使用了。
例如,查看”java“相关进程:

ps -ef|grep java
root 2685 2684 2 10:55 pts/0 00:01:19 java -jar ./software/finalspeed/finalspeed_client.jar
root 5423 4487 0 11:55 pts/20 00:00:00 grep --color=auto java
查看进程占用内存,cpu利用率等信息
ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 185488 6188 ? Ss 10:52 0:03 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 10:52 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 10:52 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S< 10:52 0:00 [mm_percpu_wq]

从上面的信息,可以看到进程的所有者、cpu占用率、内存占用率等较为详细的信息。

显示线程相关信息
相关参数-l

ps -elf

查看进程间的关系
相关参数-H,进程间关系以树形图的方式展示:

ps -ejH

查看进程的指定字段信息
有时候可能比较关注某些进程信息,ps -o可以指定要显示的列
例如:

ps -eo %cpu,%mem,vsz,rsz,start,stat,pid,sid,ni,uid,user,rss,time,command
.0 0.0 0 0 10:52:51 S 365 0 - 0 root 0 00:00:00 [irq/47-mei_me]
0.0 0.0 0 0 10:52:51 S< 373 0 -20 0 root 0 00:00:00 [cfg80211]
0.0 0.0 0 0 10:52:52 S< 402 0 -20 0 root 0 00:00:00 [ktpacpid]
0.0 0.0 0 0 10:52:56 S 669 0 0 0 root 0 00:00:00 [jbd2/sda15-8]
0.0 0.0 0 0 10:52:56 S< 670 0 -20 0 root 0 00:00:00 [ext4-rsv-conver]
0.0 0.0 0 0 10:52:57 S 676 0 0 0 root 0 00:00:00 [jbd2/sda11-8]
0.0 0.0 0 0 10:52:57 S< 677 0 -20 0 root 0 00:00:00 [ext4-rsv-conver]
0.0 0.0 0 0 10:52:58 S 683 0 0 0 root 0 00:00:00 [jbd2/sda14-8]
0.0 0.0 0 0 10:52:58 S< 684 0 -20 0 root 0 00:00:00 [ext4-rsv-conver]

查看指定进程指定信息
只需要在最后指定–pid参数即可。
例如:

ps -o %cpu,%mem,vsz,rsz,start,stat,pid,sid,ni,uid,user,rss,time,command --pid 2685
%CPU %MEM VSZ RSZ STARTED STAT PID SID NI UID USER RSS TIME COMMAND
2.0 1.9 5740448 159796 10:55:24 Sl+ 2685 2583 0 1000 hyb 159796 00:01:46 java -jar ./software/finalspeed/finalspeed_client.jar

进程太多时分页显示
如果进程信息较多,可能一页无法完成显示,这时可以配合使用more命令
例如:

ps -aux|more

总结

ps命令也是在linux下常用命令之一,通过它我们可以了解更多进程的相关信息。

最新文章

  1. JavaScript零基础学习系列四
  2. wc命令
  3. Windows Phone 8 显示当前项目的使用内存,最大峰值,最大内存上限
  4. Android Gradle 技巧之一: Build Variant 相关
  5. Netty 4(一) zero copy
  6. magento去掉add to cmpre和email to friend
  7. CSS 文本格式
  8. ASP.NET的六种验证控件的使用
  9. UVa10895 Placing Lampposts
  10. 线程在WPF中的使用
  11. 创建和使用RMAN存储脚本
  12. (step4.3.9)hdu 1584(蜘蛛牌——DFS)
  13. 基于权限安全框架Shiro的登录验证功能实现
  14. Qt布局操作
  15. SQLServer 数据库重命名
  16. python抓取NBA现役球员基本信息数据并进行分析
  17. sqoop导数据
  18. 浏览器的F5和Ctrl+F5
  19. ASP.NET 网站管理工具
  20. 安装linux子系统, 如何用win10 里面的linux子系统来进行通信

热门文章

  1. Shell脚本导入外部脚本内容
  2. [分布式系统学习]阅读笔记 Distributed systems for fun and profit 之一 基本概念
  3. Laravel 查询包括软删除的记录
  4. codeforces 792D - Paths in a Complete Binary Tree
  5. package-info.java https://www.intertech.com/Blog/whats-package-info-java-for/
  6. JMeter(十)-正则表达式关联
  7. google kaptcha 验证码的使用
  8. Centos7网桥配置
  9. oracle查询表结构语句
  10. java NIO (二) 一个故事讲清楚NIO