当前位置:   article > 正文

【Linux】ps和top进程管理命令_ps和top命令的区别

ps和top命令的区别

ps命令和top都是查看Linux系统进程相关信息,即进程管理工具。

1. ps和top命令区别

1.1 ps命令
  1. 可以查看进程的瞬间信息(系统在过去执行的进程的静态快照).
  2. 只看到的是命令执行瞬间的进程信息.
  3. 只是查看进程。
  4. 主要是查看进程的,关注点在于查看需要查看的进程。
1.2 top命令
  1. 可以持续的监视进程的信息。
  2. 可以监视系统性能,如平均负载,cpu和内存的消耗。
  3. 可以操作进程,如改变优先级(命令r)和关闭进程(命令k)。
  4. 主要看cpu,内存使用情况,及占用资源最多的进程由高到低排序,关注点在于资源占用情况。

2. ps和top命令

2.1 ps命令
2.1.1 只输入ps: 显示当前控制台下属于当前用户的进程;

在这里插入图片描述

2.1.2 ps -au

在这里插入图片描述
解释如下:
VSZ–进程的虚拟大小
RSS–驻留集的大小,可以理解为内存中页的数量
TTY–控制终端的ID
STAT–也就是当前进程的状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
STRAT–这个很简单,就是该进程启动的时间
TIME–进程已经消耗的CPU时间,注意是消耗CPU的时间
COMMOND–命令的名称和参数
这个可以查看占用的内存

2.1.3 ps -aux 查看一个运行中的程序, 占用了多少内存
2.2 top命令

在这里插入图片描述
top命令反应的是系统进程动态信息,默认10s更新一次,可以用ps -d指定屏幕刷新的延迟时间。
允许用户输入控制命令,比如在top命令的模式下输入n5,显示此时5个最活跃的进程,top会持续运行直到用户按下"q",退出top。
在这里插入图片描述

3. 使用场景

3.1 查看系统中nginx、tomcat等进程
方法一:输入命令:ps -ef | grep 相应的进程名称
  1. ps:将某个进程显示出来
  1. grep:查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。它的使用权限是所有用户。
  2. |:管道命令 表示ps命令与grep同时执行

ps -ef:去进行查看系统上的运行的所有进程

参数 -e 显示运行在系统上的所有进程
参数 -f 扩展显示输出

在这里插入图片描述

上述红色框住的参数含义如下:
UID:用户ID,实际输出的是用户名,如root
PID:当前进程的ID
PPID:当前进程的父进程ID
C:当前进程占用的CPU的百分比
STIME:当前进程启动到现在的时间
TTY:当前进程在哪个终端上运行,若与进程无关,则显示为?,若为pts/0等,则表示由网络连接主机进程。
CMD:命令的名称和参数

当我们执行:ps-ef 命令之后,看到如下关系图:
在这里插入图片描述

可以看到ps -ef这个命令的进程PID为5004,而其父进程号PPID为4945,该4945进程号对应的进程命令为-bash,即表明ps -ef命令是运行在-bash这个shell上,而PID为4945对应的父进程号PPID为4893,该进程是4893,这个进程的命令是sshd,即我们表明我们是通过shell登录进来的,再看PID为1881对应的父进程PPID为1,是命令/sbin/init,这是Linux启动之后第一个被加载的进程。衍生知识点:如果我们是在物理主机上执行ps -ef,追根溯源过程中,一定不会有sshd相关的命令。

那么,我们如果想看下是否在ps -ef中输出的命令中是否有mysql相关的行,只需要用grep 来捕获mysql关键字即可,即输入命令:ps -ef | grep mysql
在这里插入图片描述

上图中用红色框圈出的问号,表明当前进程与终端运行无关。此时,我们可以判断既然与终端无关,那就是该命令是由Linux系统首次启动时启动的,而不是通过某个具体的终端。
首先,在某个终端(可能是pts或者tty)关闭mysql,输入命令:service mysqld stop,service mysqld start,再执行命令:ps -ef|grep mysql

在这里插入图片描述

方法二:输入命令:ps aux | grep 进程名称

在这里插入图片描述
在这里插入图片描述

其中各个参数的含义如下:
%CPU:进程占用的CPU百分比;
%MEM:进程占用内存的百分比;
VSZ:进程使用的虚拟内存量(KB);
RSS:进程占用的固定内存量(KB);
START:进程被触发启动的时间;
TIME:进程实际使用CPU运行的时间(注意:这是cpu实际的运行时间);
COMMAND:命令的名称和参数;

注意观察上面用红色框框圈出的参数,都是有用的,第一个1190是当前的进程号,0.3是cpu的使用率,8.9是内存的使用率,4582832单位是KB是虚拟内存的使用率,718104单位是KB是内存的使用率,16:01 是系统的启动时间,如果是具体的时间值时,表示当天16点01分,在当前之前则只显示具体的日期。1:27表示实际使用CPU的时间,可以看到现在时间(23:00)启动了7个小时,CPU的使用时间为1小时27分。

如何利用ps aux 将展示的数据按照cpu或者内存进行排序?
按照CPU降序: ps aux --sort=-%cpu
按照内存降序: ps aux --sort=-rss
注意:将-%cpu改为+%cpu则变成CPU升序;-rss改为+rss则变为内存升序。

3.2 动态跟踪指定进程的资源使用情况

top -p 进程id,则可以一秒一次跟踪cpu的使用情况。

(1)top -d 1 -n 1000 这一行命令表示延迟1秒为周期,打印1000次。
(2)在top命令下,输入u,然后输入相应的用户名,则可以查看相应的用户进程,这个命令还是比较好用,比如,我们想看下mysql用户的动态进程信息。

输出mysql用户相关的进程信息,如下:
在这里插入图片描述

(2)top 然后输入1,查看各个cpu的使用情况

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/308447
推荐阅读
相关标签
  

闽ICP备14008679号