一、基础概念
指令: ps
作用:查看系统进程,比如正在运行的进程有哪些,什么时候开始运行的,哪个用户运行的,占用了多少资源。
参数:
- -e 显示所有进程
- -f 显示所有字段(UID,PPIP,C,STIME字段)
- -h 不显示标题
- -l 长格式
- -w 宽输出
- -a 显示一个终端的所有进程
- -r 只显示正在运行的进程。
- -u 显示当前用户进程和内存使用情况
- -x 显示没有控制终端的进程
- –sort 按照列名排序
二、常用操作
ps命令常用的方式有三种:
- ps -ef:查看所有进程
- ps -aux:查看所有进程
- ps -ef | grep tomcat:查看指定进程(| 符号,是个管道符号,表示ps 和 grep 命令同时执行)
1、查看所有进程(连带命令行)
ps -ef
字段解释:
- UID:用户ID,即进程的拥有者
- PID:进程ID
- PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程被称为僵尸进程
- C:cpu的占用率,形式是百分数(%)
- STIME:进程开始启动时间
- TTY:终端设备,发起该进程的设备识别符号,如果显示‘ ?’表示该进程并不是由终端发起
- TIME:进程的执行时间
- CMD:该进程的名称或对应的路径
2、显示所有包含其他使用者的进程
ps -aux
字段解释:
USER:创建进程的用户
PID:进程ID
%CPU:进程占用CPU的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用虚拟内存的大小(单位KB)
RSS:进程占用实际物理内存的大小(单位KB)
TTY:进程在哪个终端运行。
STAT:进程状态
START:进程开始启动的时间
TIME:进程使用的CPU(运算)时间
COMMAND:调用进程的命令
3、查看指定进程(grep过滤,grep 命令是查找(Global Regular Expression Print),能使用正则表达式搜索文本,然后把匹配的行显示出来)
ps -ef 通常会配合 grep 来过滤指定的进程,比如
搜索 mysql 的进程:ps -ef | grep mysql
搜索 tomcat 的进程:ps -ef | grep tomcat
4、查看CPU/内存占用率最高的进程
1)查看进程的时候,让进程按照CPU使用率排序,然后展示前10行,就能清晰地看到哪些进程占用的资源比较多。
PS1:head -11 是因为标题也算一行
PS2:+、-号可以调整排序,-pcpu 表示降序,+pcpu 表示升序
ps -aux --sort=-pcpu | head -11
2)同理,把 -pcpu 换成 -pmem,就能查看内存使用最多的10个进程。
ps -aux --sort=-pmem | head -11
3)如果不限制行数,也可以使用 sort 按照指定的列排序
降序:
ps -aux | sort -nk 4 -r
升序:
ps -aux | sort -nk 4
5、查看指定用户的进程
查看某个用户开启了哪些进程,可以使用 -u 参数指定用户名,比如,查看root用户的进程有哪些:
ps -u root -ef
6、分页查看进程
除了 grep 外,还可以配合 more 分页查看进程:ps -ef | more
翻页的操作同 more 命令,q键退出,空格键翻页
三、拓展
1、TTY字段(终端类型)
TTY字段表示运行进程的终端是哪个,这里的终端类型有两种:tty和pts。
2、STAT字段(进程状态)
STAT字段表示进程的状态,常见的状态有以下几种:
- D:睡眠状态(不可被唤醒),常用于I/O情况。
- R:进程正在运行
- S:睡眠状态(可被唤醒)
- T:停止状态
- W:内存交互状态
- Z:僵尸进程(不存在但暂时无法消除)
- <:高优先级
- N:低优先级
- L:被锁入内存
- s:包含子进程
- l:多线程
- +:位于后台
3、僵尸进程
进程由于非正常停止或程序编写错误,导致子进程比父进程先结束,而父进程又没有正常回收子进程,使子进程一直在内存中,导致资源浪费。这种情况就是僵尸进程。文章来源:https://www.toymoban.com/news/detail-784992.html
PS:正常情况下应该是父进程先结束,然后子进程由init接管,init 结束子进程并回收对应的资源。文章来源地址https://www.toymoban.com/news/detail-784992.html
到了这里,关于Linux中 ps命令详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!