所谓的进程,通俗的说,就是当前正在执行的一个程序。
在Linux系统中,ps(process status),常常用来列出系统中当前运行的进程,类似于windows的任务管理器。要对进程进行检测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
ps工具标识进程的5种状态码:
- R 运行 runnable (on run queue)
- S 中断 sleeping
- D 不可中断 uninterruptible sleep (usually IO)
- T 停止 traced or stopped
- Z 僵死 a defunct (”zombie”) process
ps 使用
用法:ps [ 参数 ]
ps命令有很多参数,具体如下:
-
- -A 显示所有进程(等价于-e)(utility)
- -a 显示一个终端的所有进程,除了会话引线
- -N 忽略选择。
- -d 显示所有进程,但省略所有的会话引线(utility)
- -x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
- -p pid 进程使用cpu的时间
- -u uid or username 选择有效的用户id或者是用户名
- -g gid or groupname 显示组的所有进程。
- U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
- -f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
- -l 长格式(有F,wchan,C 等字段)
- -j 作业格式
- -o 用户自定义格式。
- v 以虚拟存储器格式显示
- s 以信号格式显示
- -m 显示所有的线程
- -H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
- e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
- h 不显示第一行
- --version 显示版本信息
- --help 显示帮助信息
下面给大家举几个在日常生活中使用较多的ps命令。
- -w 显示加宽可以显示较多的资讯
- -au 显示较详细的资讯
- -aux 显示所有包含其他使用者的行程
-
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 用户名
- PID: 进程ID(Process ID)
- %CPU: 进程的 CPU 占有率
- %MEM: 进程的内存占用率
- VSZ: 进程所使用的虚拟内存的大小(Virtual Size)
- RSS: 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节(RSS 是常驻内存集(Resident Set Size),表示该进程分配的内存大小)
-
RSS 不包括进入交换分区的内存。
RSS 包括共享库占用的内存(只要共享库在内存中)
RSS 包括所有分配的栈内存和堆内存。
- TTY: 与进程关联的终端(minor device number of tty)
-
STAT: 该行程的状态():
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
- START: 行程开始时间
- TIME: 进程使用的总cpu时间
- COMMAND:正在执行的命令行命令
1、ps -aux
最常用的方法是ps -aux(或者ps au),然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
如果想跟踪cpu占用率和内存占用率, aux是个不错的选择
如果想跟踪父进程和完整的启动命令 ef是个好选择
ps -ef|grep详解(查找指定进程):
ps命令将某个进程显示出来,grep命令是查找,中间的|是管道命令,是指ps命令与grep命令同时进行
ps命令是Linux下最常用的也是非常强大的进程查看命令
grep是查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
rep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
以下这条命令是检查java 进程是否存在:ps -ef |grep java
字段含义如下:
UID PID PPID C STIME TTY TIME CMD
zzw 14124 13991 0 00:38 pts/0 00:00:00 grep --color=auto dae
UID :用户ID(User ID)
PID :进程ID(Process ID)
PPID :父进程的进程ID(Parent Process id)
(说明:在 linux 中,使用 ps 打印进程及线程信息时, 实际上 PID 表示线程信息,而 PPID 表示该线程所属的进程信息。)
C :CPU使用的资源百分比(CPU用户计算执行优先级的因子,数值越大CPU密集运算执行优先级越低)
STIME :启动时间
TTY :与进程关联的终端(tty)(完整的终端名称)
TIME :进程使用的总cpu时间
CMD :正在执行的命令行命令
ps -ef是用标准的格式显示进程;
参考:
https://www.cnblogs.com/freinds/p/8074651.html
https://www.runoob.com/linux/linux-comm-ps.html
https://www.linuxidc.com/Linux/2020-02/162252.htm