动态查看进程信息 -- 基于 top 命令工具(祝大家五一节快乐!)

个人博客首页(点击查看详细信息)

 

1、简介

    系统 服务器 负载、CPU、内存、进程 等信息 反应 当前服务的运行状态,top 可以获取 这些 相关信息(当然,除了 top 之外 还有 很多 工具可以获取这些 信息 -- 例如 htop、iotop ...,本文 主要介绍 top)
    

2、执行命令

## 命令 很简单,直接 命令行 输入 top 按回车之后,弹出一个 交互界面
# top

    

3、结果 分析

    top 结果我们 从上往下,按行 依次分析
    

3.1 first line(系统相关)

## top - 03:51:27 up 1 day, 22:17, 4 users, load average: 8.08, 8.07, 8.01
## top --  当前程序的名称
## 03:51:27  --  当前系统时间
## up 1 day, 22:17  --  当前系统已经运行的时间(可以 用来判断 机器最近是否关机重启)
## 4 users  --  当前登录系统的用户数量
## load average: 8.08, 8.07, 8.01  --  分别对应1、5、15分钟内cpu的平均负载

    

3.1.1 load average 详细介绍

3.1.1.1 简介

    load average 是对当前 CPU 工作量的度量,指运行队列的平均长度(也就是等待 CPU 的平均进程数相关的一个计算值);wikipedia 中的解释是 "the system load is a measure of the amount of work that a computer system is doing"
    

3.1.1.2 判断标准

    我们该如何看待这个load average 数据呢?假设我们的系统是单 CPU、单内核的,把它比喻成是一条单向的桥,把CPU任务比作汽车

  • load = 0 的时候意味着这个桥上并没有车,cpu 没有任何任务
  • load < 1 的时候意味着桥上的车并不多,一切都还是很流畅的,cpu 的任务并不多,资源还很充足;( load < 0.7 可以不去关注他;0.7< load < 1 的时候就需要稍微关注一下了,虽然还可以应付但是这个值已经离临界不远了)
  • load = 1 的时候就意味着桥已经被车给沾满了,没有一点空隙,cpu 的已经在全力工作了,所有的资源都被用完了,当然还好,这还在能力范围之内,只是有点慢而已(需要警惕了,因为这个时候已经没有更多的资源的了,已经在全力以赴了)
  • load > 1 的时候就意味着不仅仅是桥上已经被车占满了,就连桥外都被占满了,cpu 已经在全力的工作了,系统资源的用完了,但是还是有大量的进程在请求,在等待(若是这个值 > 5 说明系统已经在超负荷运作了)
        

备注:CPU相关信息查看(个数、内核数)

## 查看物理CPU的个数
# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

## 每个cpu的核心数
# cat /proc/cpuinfo | grep "physical id" | grep "0" | wc -l

    

3.1.2 uptime(获取同样的内容)

## uptime 命令 获取的命令 就是 first line的内容
# uptime
10:13:18 up 35 days, 19:09,  4 users,  load average: 0.18, 0.31, 0.39

    

3.2 second line(进程总览)

## Tasks: 211 total, 9 running, 202 sleeping, 0 stopped, 0 zombie
## Tasks: 211 total  --  进程总数
## 9 running  --  正在运行的进程数
## 202 sleeping  --  休眠的进程数
## 0 stopped  --  停止的进程数
## 0 zombie  --  僵尸进程数

    

3.3 third line(CPU 相关)

## %Cpu(s): 20.4 us, 77.2 sy, 9.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 2.5 si, 0.0 st
## %Cpu(s): 20.4 us  --  用户空间进程 占用 CPU百分比
## 77.2 sy  --  内核空间 运行 占用 CPU百分比
## 9.0 ni  --  用户进程空间内改变过优先级的进程占用CPU百分比
## 0.0 id  --  空闲CPU百分比
## 0.0 wa  --  等待输入输出的CPU时间百分比
## 0.0 hi  --  硬中断(Hardware IRQ)占用CPU的百分比
## 2.5 si  --  软中断(Software IRQ)占用CPU的百分比
## 0.0 st  --  (Steal time) 是 hypervisor 等虚拟服务中,虚拟 CPU 等待实际 CPU 的时间的百分比

    

备注:CPU 利用率 和 CPU Load 这两个指标并不一样
    CPU 利用率是对一个时间段内 CPU 使用状况的统计,通过这个指标可以看出在某一个时间段内 CPU 被占用的情况
    Load Average 是 CPU 的 Load,它所包含的信息不是 CPU 的使用率状况,而是在一段时间内 CPU 正在处理以及等待 CPU 处理的进程数情况统计信息

3.4 fourth line(内存相关)

## KiB Mem: 2048352 total, 1107672 free, 74396 used, 866284 buff/cache
## 2048352 total  --  物理内存总量
## 1107672 free  --  使用的物理内存总量
## 74396 used  --  空闲内存总量
## 866284 buff/cache  --  内核缓存的内存量
备注:
系统中可用的物理内存最大值并不是 free 这个单一的值,而是 free + buffers + swap 中的 cached 的和(可以参考 "Linux 内存释放(基本操作)" 一文)

3.5 fifth line(交换分区相关)

## KiB Swap: 1048572 total, 959080 free, 89492 used. 1804676 avail Mer
## 1048572 total  --  交换区总量
## 959080 free  --  空闲交换区总量
## 89492 used  --  使用的交换区总量
## 1804676 avail Mer  --  XXXXXX

    

3.6 sixth line(进程详细状态)

## PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
## PID  --  进程id
## USER  --  进程的所属用户
## PR  --  进程执行的优先级 priority 值
## NI  --  进程的 nice 值
## VIRT  --  进程任务所使用的虚拟内存的总数
## RES  --  进程所使用的物理内存数,也称之为驻留内存数
## SHR  --  进程共享内存的大小
## S  --  进程进程的状态: S=sleep R=running Z=zombie
## %CPU  --  进程CPU的利用率
## %MEM  --  进程内存的利用率
## TIME+  --  进程活跃的总时间
## COMMAND  --  进程名

    

3.6.1 优先级

3.6.1.1 PR(动态优先级)

    PR 值表示 Priority 值叫动态优先级,是进程在内核中实际的优先级值(进程优先级的取值范围是通过一个宏定义的,这个宏的名称是 MAX_PRIO,它的值为 140)

  • 取值范围是从 0-139,值越小,优先级越高
  • 0 - 99 是实时进程的值,100 - 139 是给用户的
        

3.6.1.2 NI(静态优先级)

    NICE 值叫做静态优先级,是用户空间的一个优先级值,其取值范围是-20至19

  • 0 是默认的值, -20 优先级最高,而 19 优先级最低
  • 值越小,表示进程”优先级”越高,值越大“优先级”越低nice
备注:PR 与 NI
    PR 中的 100 to 139 值部分有这么一个对应 PR = 100 + 20 + (-20 to +19),这里的 -20 to +19 便是nice值,所以说两个虽然都是优先级,而且有千丝万缕的关系,但是他们的值,他们的作用范围并不相同(暂未详细探究)

3.6.2 虚拟内存(VIRT)

    任务所使用的虚拟内存的总数,其中包含所有的代码,数据,共享库和被换出 swap空间的页面等所占据空间的总数(暂未详细探究)
    

4、交互操作

    在交互 界面,我也 也可 根据自身需求,进行 交互操作

###
### 边使用 边记录,后期不断完善
###
## 按键 "h"  --  交互界面 帮助手册,按键 "q" 则 退出帮助,返回 交互界面
## 按键 "q"  --  退出,返回命令行
## 按键 "l"  --  "first line" 显示/关闭 开关
## 按键 "M"  --  "fourth line"、"fifth line" 显示/关闭 开关

    

5、命令行 操作

    很多时候,我们 只需要 查看 某一类 信息,不需要 查看 所有 信息,此时 我们可以 直接 通过 命令行 参数 来进行 操作
    

5.1 帮助信息

# top -h
    

5.2 信息刷新 间隔

## 进入 top 交互界面,某些 应用 不需要 每秒 更新信息,此时 top 可以 设置 时间间隔
# top -d {time_sec}

    

5.3 指定项 排序

## 默认 按 %CPU 这项 降序 排列,也可以 指定 别的项
## ## PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 任意某一项
# top -o {opt}

    

5.4 用户进程

## 只显示 指定用户 的进程信息
# top -u {user_name}

    

5.5 显示当前 活动 进程的信息

# top -i

原文地址:https://blog.51cto.com/11495268/2388191

时间: 2024-10-30 14:06:41

动态查看进程信息 -- 基于 top 命令工具(祝大家五一节快乐!)的相关文章

静态查看进程信息 -- 基于 ps 命令实现

1.简介     目前 可以 通过 很多种方式 查看 系统进程,top之类的 工具 可以 动态 的获取 进程信息,今天 介绍 静态 获取 进程信息的 工具 -- ps(当然,静态 获取 进程信息 这类工具 肯定 不止 ps,还有 pstree...)     1.1 进程状态 ### ### 进程状态 可以 是单个状态,也可以是 多个 状态的组合,例如 Ss.S< ### ## R -- Running.运行中 ## S -- Interruptible Sleep.等待调用 ## D -- U

20181130linux中动态查看进程 top

动态查看进程 top [[email protected] ~]# top 延时间隔默认是3秒钟[[email protected] ~]# top -d 1[[email protected] ~]# top -d 1 -p 10126 查看指定进程的动态信息[[email protected] ~]# top -d 1 -p 10126,1[[email protected] ~]# top -d 1 -u apache 查看指定用户的进程[[email protected] ~]# top

查看进程信息

在linux下查看进程用 ps -ef|grep XXX 通过ps及top命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等.这时,我们需要通过以下的方法来查看进程的详细信息: Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过ll或ls –l命令即可查看. ls -l /proc/PID cwd符号链接的是进程运行目录: exe符号连接就是执行程序的绝对路径:

ubuntu 查看进程信息

查看进程信息 ps ps -aux 查看所有进程,每行一个程序 top 显示当前运行程序 kill 98 (98为PID号,) kill -9 98 (强制杀死98) ps -e Linux如何查看端口1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000# lsof -i:8000COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMElwfs 22065 root 6u IPv4 439505

top 动态查看进程

top 统计信息前五行是系统整体的统计信息 1.第一行是任务队列信息 同uptime质性命令结果一样. 06:47:11 up 6:39, 3 users, load average: 0.00, 0.01, 0.05 06:47:11 当前时间                up 6:39 系统运行时间,格式为时:分 3 users 当前用户登录数 load average: 0.00, 0.01, 0.05 系统负载,即任务队列的平均长度,三个数值分别为1分钟,5分钟,15分钟前到 现在的平

Centos 查看进程的几条命令

1. ps -ef | grep java 表示查看所有进程里 CMD 是 java 的进程信息 2. ps -aux | grep java -aux 显示所有状态 3. kill -9 [PID] -9 表示强迫进程立即停止 4. lsof -i:8080 查看8080端口占用情况 其它: 1. netstat netstat -nat | grep 3306 2. lsof lsof -n -P -i TCP -s TCP:LISTEN -n 表示主机以ip地址显示 -P 表示端口以数字形

Linux 查看硬件信息的一些命令

dmidecode -t 1 #查看主机时物理主机还是虚拟主机dmidecode -t 2 #查看主板信息dmidecode -t 16 #查看内存信息dmidecode -P -A5 "Memory Device" | grep Size #查看当前内存数和插槽数dmidecode -t 17 #查看内存条数dmidecode -t 4 #查看CPU信息 原文地址:https://blog.51cto.com/3037673/2443922

&lt;p&gt;1、查询端口号占用,根据端口查看进程信息&lt;/p&gt;

2017年6月份的时候,我就着手在公司推广git,首先我自己尝试搭建了GitLab来管理代码,并且通过以下博客记录了GitLab的搭建,以及GitLab备份,GitLab升级等事情. git学习-->在CenterOS系统上安装GitLab并自定义域名访问GitLab管理页面 git学习-->如何汉化GitLab? (转)git学习-->Git 分支管理最佳实践 git学习--> Gitlab如何进行备份恢复与迁移? git学习--> 解决Gitlab 版本升级之后,发送 m

ps aux 查看进程信息

[[email protected] Desktop]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.3 192096 7456 ? Ss 03:03 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 21root 2 0.0 0.0 0 0 ? S 03:03 0:00 [kthreadd] [[email