查看进程的静态命令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 MemPID 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 ,一个静态查看,一个动态查看。

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

  1. Linux学习笔记(一)(服务器环境搭配 常用命令 文件属性)

    Linux学习笔记(一) 概述 Linux发行版 Linux应用 Linux系统运行级别 远程环境配置 连接服务器 安装宝塔 配置环境 测试 测试连接Tomcat 测试访问网站 测试上传 学习Linu ...

  2. Linux学习笔记(四)之查看登录用户

    1.在多用户操作系统中系统管理员为了系统管理的需要和系统安全,通常需要了解当前是什么用户登录系统.有多少用户登录系统.这些用户在做什么.普通用户之间如果要进行通信交流时,也需要知道对方是否已经登录上系 ...

  3. Linux学习笔记016---CentOS7虚拟机设置使用静态IP上网_配置集群的时候可以用

    JAVA技术交流QQ群:170933152 注意这里: 按下面的装完以后,可能本地ping不通centos虚拟机,这个时候:可以这样设置一下: 到控制面板,找到网络VMware Network Ada ...

  4. Linux学习笔记009---Centos7安装vim ifconfig wget tree等基础命令

    JAVA技术交流QQ群:170933152 安装wget: CentOS wget是一个从网络上自动下载文件的自由工具.它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理. 所谓的自动下载是 ...

  5. linux给数据库重命名,Linux学习笔记:mv移动或文件重命名

    mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 语法:mv 源文件 目标文件 视mv命令中 ...

  6. Linux学习笔记(自用)

    Linux学习笔记(自用) 该笔记由尚硅谷的"3天上手LInux"视频整理而成,若有侵权,请联系作者删除 文章目录 Linux学习笔记(自用) 1. 概述 2. 下载 3.文件与目 ...

  7. Linux命令篇 linux命令大全简洁明了 linux学习笔记

    Linux命令篇 linux命令大全简洁明了 linux学习笔记 Linux 命令大全 文章目录 Linux 命令大全 一. 常用的基础命令 查看目录: 切换目录: 创建和删除: 拷贝和移动文件: 查 ...

  8. LINUX学习笔记共五部分

    LINUX学习笔记1--LINUX系统命令 1.         界面切换: a)         进入字符界面:按住ctrl+alt+F1: 1.         首先需要进入用户登入,输入用户名和 ...

  9. Linux中常用的文件目录,Linux学习笔记2——Linux中常用文件目录操作命令

    ls 显示文件和目录列表 -l 列出文件的详细信息 -a 列出当前目录所有文件,包含隐藏文件 mkdir 创建目录 -p 父目录不存在情况下先生成父目录 cd 切换目录 touch 生成一个空文件 e ...

最新文章

  1. 浅析Entity Framework Core2.0的日志记录与动态查询条件
  2. 一首歌的时间看懂荷兰三色旗问题
  3. 欢乐纪中某A组赛【2019.7.6】
  4. SpringMVC 实例 --非注解【过时的,留作回忆】
  5. python自然语言处理学习笔记二
  6. fpga学习之vga驱动
  7. Selenium查找元素
  8. windows7无法登陆网络上的计算机,win7电脑网络连接显示感叹号无法上网怎么处理...
  9. Shiro session过期跳转到登录页面问题
  10. 详细SpringBoot教程之入门(一)
  11. python语言属于科学计算语言吗_python语言属于( )
  12. 手机APP爬虫技巧(Fiddler+雷电模拟器进行APP抓包)
  13. win10系统sqlserver2000数据库问题
  14. 问题 I: decimal
  15. 如何解决WIN10环境下 Raid 模拟器遇到乱码问题
  16. Java核心编程(22)
  17. 从自签名证书到wireshark解密https
  18. 关于Python爬虫之获取海量表情包+存入数据库+搭建网站通过关键字查询表情包
  19. 京东文件存储服务器,紫晶存储智能家庭云服务器登录中国移动和彩云,首个京东官方旗舰店助力消费者业务...
  20. 一文读懂开源日志管理方案 ELK 和 EFK 的区别

热门文章

  1. Linux运维面试题2
  2. java根据车牌号判断从周一到周五车牌号是否限行
  3. 如何设置下拉框的选中项
  4. [转载] 杨元元-自杀女研究生杨元元:她的路为何越走越窄
  5. word查找替换图片
  6. 20221224今天的世界发生了什么
  7. 一维条码与二维条码的码制区别
  8. 坦克大战中按键盘子弹有时发射不出去问题
  9. 桌面学习单词的小软件
  10. python内置方法+数学模块+随机模块+序列化模块