【linux学习笔记】ps top 查看的静态命令和动态命令

本文详细介绍了Linux中用于查看进程的ps和top命令,包括它们的用途、常用选项和参数,以及输出信息的解析。ps用于静态查看进程状态,如psaux,而top提供动态监控,可实时显示CPU和内存使用情况。此外,还提到了如何查找特定服务的PID以及如何处理僵尸进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看进程的静态命令ps 和动态命令top

学习书籍《鸟哥的LINUX私房菜 基础学习篇 (第四版)》

查看进程一共三个命令:ps , top, pstree

  • ps: 静态查看
  • top: 动态查看
  • pstree: 查看进程树之间的关系 (本篇暂未记录)

ps

常用:

ps aux     查看系统所有进程
ps -lA       同ps aux作用
ps axjf     连同部分进程树的状态
ps -l        只查看自己bash进程

选项与参数:

-A : 所有进程均显示出来
-u:  有效使用者相关的进程
x: 通常与a这个参数一起使用,列出较完整信息
l: 长格式输出
j: 任务的格式(jobs format)
-f: 做一个更为完整的输出

选项前加不加-(减号),ps -lps l显示如下:
在这里插入图片描述
执行ps auxps -aux除了最后一行它们自己本身命令显示的差异外也是一样的。

书里没写有无减号的意义 但执行命令输出暂时看起来没有太大查别。

ps -l 的输出列解释:
#只查看自己当前bash此次登录的PID以及相关信息
[root@iZ2ze3a5ws0mjxyxfspk8nZ ~]# ps -l 
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S     0 2032576 2032558  0  80   0 - 55840 -      pts/0    00:00:00 bash
4 R     0 2033289 2032576  0  80   0 - 56589 -      pts/0    00:00:00 ps

F: process flags 进程标识,说明这个进程的权限,常见号码:4(表示此进程权限为root),1(表示此子进程仅执行复制(fork)而没有实际执行(exec))
S: STAT 进程状态,主要状态有:

R(Running):进程在运行中
S(Sleep):睡眠状态(idle即空闲状态),但可以被唤醒(signal)
D: 不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况
T(stop):停止状态,可能是在任务控制(后台暂停)或跟踪(traced)状态。
Z(Zombie):僵尸状态,进程已终止但却无法被删除至内存外。

UID/PID/PPID:此进程被该UID所拥有/ 此进程的PID号码/ 此进程的父进程PID号码)
C:CPU使用率,单位百分比
PRI/NI:Priority/Nice的缩写,代表此进程被CPU所执行的优先级。数值越小表示越先被执行。
ADDR/SZ/WCHAN:都与内存有关。ADDR为kernel function,表示该进程在内存的哪个部分,如果是running的进程,则显示-;SZ表示此进程用掉多少内存;WCHAN:表示目前进程是否在运行,-表示在运行中。
TTY:登录者的终端位置,若为远程登录则使用动态终端接口名称pts/n。
TIME:此进程实际花费CPU运行的时间。
CMD:command缩写,表示造成此进程的触发命令是什么。

所以上述输出的

[root@iZ2ze3a5ws0mjxyxfspk8nZ ~]# ps -l 
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S     0 2032576 2032558  0  80   0 - 55840 -      pts/0    00:00:00 bash
4 R     0 2033289 2032576  0  80   0 - 56589 -      pts/0    00:00:00 ps

表示:
bash的进程属于UID为0的用户,状态为睡眠,之所以为睡眠是因为它触发了ps(状态为run)。此进程PID为2032576,优先执行顺序为80,执行bash所获取的终端接口为pts/0,运行状态为-(running)。

ps aux的输出列解释:

USER: 该进程属于所属用户账号;
PID:进程的进程ID;
%CPU:进程使用掉的CPU资源百分比;
%MEM:进程所占用的物理内存百分比;
VSZ:进程使用掉的虚拟内存量(KB);
RSS:进程占用的固定内存量(KB);
TTY:进程在哪个终端上面运行,若与终端无关则显示?(问号)(如systemd进程),若为pts/0等表示由网络连接进入主机的进程;
STAT: 该进程目前的状态,与ps -l的S标识相同(R/S/T/Z);
START:该进程被触发启动的时间;
TIME:该进程实际使用CPU运行的时间;
COMMAND:该进程的实际命令是什么;

一般来说 ps aux 会按照PID的顺序来排序显示。


找出与cron与rsyslog这两个服务有关的PID号码:

[root@iZ2ze3a5ws0mjxyxfspk8nZ ~]# ps aux|egrep '(cron|rsyslog)'
root        1240  0.0  1.7 679868 36024 ?        Ssl   2022   9:19 /usr/sbin/rsyslogd -n
root        1247  0.0  0.0 223116  1920 ?        Ss    2022   0:04 /usr/sbin/crond -n
root     2033386  0.0  0.0 221528   860 pts/0    R+   17:37   0:00 grep -E --color=auto (cron|rsyslog)

使用ps aux|egrep ‘正则表达式服务名’ 来模糊查找对应的进程信息


僵尸进程:该进程应该已经执行完毕,或是应该要终止了,但是该进程的父进程却无法完整地将进程结束掉,造成该进程一直存在内存当中。如果你发现某个进程CMD后面跟着<defunct>时,就代表该进程是僵尸进程。
产生场景:系统不稳定容易造成;程序写的不好;用户操作习惯不良等;

top 动态查看进程

相对于ps是选取一个时间点的进程状态,top则可以持续监测进程运行的状态。
top [-d 数字] | top [-bnp]
选项与参数:
-d: 后面接秒数,表示整个进程姐妹更新的秒数,默认是5秒。
-b: 以批量的方式执行top,通常会搭配> 文件 将结果输出到文件。
-n: 与-b搭配,表示需要执行及此top的输出结果。
-p: 指定某些个PID来执行查看监测。

man top可以查看更多说明。

查看某个进程的每隔2s的实时状态:top -d 2 -p PID
命令:

[root@iZ2ze3a5ws0mjxyxfspk8nZ ~]# $$    表示查看当前bash的PID
-bash: 2032576: command not found
[root@iZ2ze3a5ws0mjxyxfspk8nZ ~]# top -d 2 -p 2032576

输出:

top - 17:56:18 up 53 days,  2:02,  1 user,  load average: 0.04, 0.01, 0.00
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  1.0 sy,  0.0 ni, 97.5 id,  0.0 wa,  0.5 hi,  0.0 si,  0.0 st
MiB Mem :   1968.8 total,    178.3 free,   1112.4 used,    678.1 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    705.5 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2032576 root      20   0  223360   4860   3424 S   0.0   0.2   0:00.03 bash


top输出信息说明:

第一行(top…):这一行显示的信息分别为:
- 目前的时间,即 17:56:18;
- 开机到目前为止所经过的时间,即up 53 days;
- 已经登录系统的用户人数,即 1 user;
- 系统在1,5,15分钟的平均任务负载。代表1,5,15分钟,系统平均要负责运行几个进程(任务)的意思。数值越小代表系统越闲置,若高于1就要注意你的系统进程是否太过于频繁了。
第二行(Task…):目前进程总量,和目前各状态下进程的数量统计;要注意最后那个zombie的那个数值,如果不是0,要排查的。
第三行(%Cpus…):显示CPU的整体负载。wa表示I/O wait

PR:Priority的简写 进程的优先执行顺序 越小越先被执行
NI:Nice的简写,与Priority有关,也是越小越先被执行
%CPU:CPU的使用率
%MEM:内存的使用率;
TIME+:CPU使用时间的累加;


top中的命令

top默认使用CPU使用率(%CPU)作为排序的依据。

如果想使用内存使用率排序,则可以按下M(注意大写的),若要恢复则按下P(也是大写的)。退出top,按下q。
排序的作用,比如:如果想要找出最消耗CPU资源的进程,使用top,然后top当中按下P,就可以很快知道。


我觉得 ps aux 和 top 可以类比为 cat 和 tail -f ,一个静态查看,一个动态查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值