zoukankan      html  css  js  c++  java
  • linux 性能操作 top ps

    linux 性能

    ###

    一,top

    top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。

    输入top,就会动态展示下面的信息

    ####

    分成两部分:

    统计信息:前五行是系统整体的统计信息;

    进程信息:统计信息下方类似表格区域显示的是各个进程的详细信息,默认5秒刷新一次。

    ####

    1 统计信息说明:

    第1行:Top 任务队列信息(系统运行状态及平均负载)

    第1段:系统当前时间,例如:16:07:37

    第2段:系统运行时间,未重启的时间,时间越长系统越稳定。 格式:up xx days, HH:MM。例如:5 days, 17:54, 表示连续运行了5天17小时54分钟

    第3段:当前登录用户数,例如:1 user,表示当前只有1个用户登录

    第4段:系统负载,即任务队列的平均长度,3个数值分别统计最近1,5,15分钟的系统平均负载

    系统平均负载:单核CPU情况下,0.00 表示没有任何负荷,1.00表示刚好满负荷,超过1侧表示超负荷,理想值是0.7;
    多核CPU负载:CPU核数 * 理想值0.7 = 理想负荷,例如:4核CPU负载不超过2.8何表示没有出现高负载。

    第2行:Tasks 进程相关信息

    第1段:进程总数,例如:Tasks: 121 total,表示总共运行121个进程

    第2段:正在运行的进程数,例如:1 running,表示正在运行1个进程

    第3段:睡眠的进程数,例如:120 sleeping,表示120个睡眠进程

    第4段:停止的进程数,例如:0 stopped,表示0个stop进程

    第5段:僵尸进程数,例如:0 zombie,表示0个僵尸进程

    第3行:Cpus CPU相关信息,如果是多核CPU,按数字1可显示各核CPU信息,此时1行将转为Cpu核数行,数字1可以来回切换。

    第1段:us 用户空间占用CPU百分比,例如:Cpu(s): 0.3% us

    第2段:sy 内核空间占用CPU百分比,例如:0.3% sy

    第3段:ni 用户进程空间内改变过优先级的进程占用CPU百分比,例如:0.0%ni,

    第4段:id 空闲CPU百分比,例如:99.3 %id

    第5段:wa 等待输入输出的CPU时间百分比,例如:0.0%wa

    第6段:hi CPU服务于硬件中断所耗费的时间总额,例如:0.0%hi

    第7段:si CPU服务软中断所耗费的时间总额,例如:0.0%si

    第8段:st Steal time 虚拟机被hypervisor偷去的CPU时间(如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)

    第4行:Mem 内存相关信息

    第1段:物理内存总量,例如:Mem:1882736 total

    第2段:使用的物理内存总量,例如:82100 used

    第3段:空闲内存总量,例如:Mem:1013200 free

    第4段:用作内核缓存的内存量,例如:787436 buffers

    第5行:Swap 交换分区相关信息

    第1段:交换区总量,例如:Swap: 524284 total

    第2段:使用的交换区总量,例如:0 used

    第3段:空闲交换区总量,例如:524284 free

    第4段:缓冲的交换区总量,190468 cached

    2 进程信息说明:  

    2.1 配置

    top支持的字段很多,可以配置是否展示,可以排序,等

    在top命令中按f按可以查看显示的列信息,按对应字母来开启/关闭列,大写字母表示开启,小写字母表示关闭。带*号的是默认列。

    A: PID = (Process Id) 进程Id;
    E: USER = (User Name) 进程所有者的用户名;
    H: PR = (Priority) 优先级
    I: NI = (Nice value) nice值。负值表示高优先级,正值表示低优先级
    O: VIRT = (Virtual Image (kb)) 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    Q: RES = (Resident size (kb)) 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    T: SHR = (Shared Mem size (kb)) 共享内存大小,单位kb
    W: S = (Process Status) 进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
    K: %CPU = (CPU usage) 上次更新到现在的CPU时间占用百分比
    N: %MEM = (Memory usage (RES)) 进程使用的物理内存百分比
    M: TIME+ = (CPU Time, hundredths) 进程使用的CPU时间总计,单位1/100秒
    b: PPID = (Parent Process Pid) 父进程Id
    c: RUSER = (Real user name)
    d: UID = (User Id) 进程所有者的用户id
    f: GROUP = (Group Name) 进程所有者的组名
    g: TTY = (Controlling Tty) 启动进程的终端名。不是从终端启动的进程则显示为 ?
    j: P = (Last used cpu (SMP)) 最后使用的CPU,仅在多CPU环境下有意义
    p: SWAP = (Swapped size (kb)) 进程使用的虚拟内存中,被换出的大小,单位kb
    l: TIME = (CPU Time) 进程使用的CPU时间总计,单位秒
    r: CODE = (Code size (kb)) 可执行代码占用的物理内存大小,单位kb
    s: DATA = (Data+Stack size (kb)) 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
    u: nFLT = (Page Fault count) 页面错误次数
    v: nDRT = (Dirty Pages count) 最后一次写入到现在,被修改过的页面数
    y: WCHAN = (Sleeping in Function) 若该进程在睡眠,则显示睡眠中的系统函数名
    z: Flags = (Task Flags <sched.h>) 任务标志,参考 sched.h
    X: COMMAND = (Command name/line) 命令名/命令行

    注意,centos7可以使用'd' or <Space> toggles display

    ###

    2.2 top命令选项

    -b:以批处理模式操作;
    -c:显示完整的治命令;
    -d:屏幕刷新间隔时间;
    -I:忽略失效过程;
    -s:保密模式;
    -S:累积模式;
    -i<时间>:设置间隔时间;
    -u<用户名>:指定用户名;
    -p<进程号>:指定进程;
    -n<次数>:循环显示的次数。

    ###

    2.3 top命令交互 很重要,可以提高你的操作效率,看你想看的东西

    基础操作

    1:显示CPU详细信息,每核显示一行
    d / s :修改刷新频率,单位为秒
    h:可显示帮助界面
    n:指定进程列表显示行数,默认为满屏行数
    q:退出top

    面板隐藏显示

    l:隐藏/显示第1行负载信息;
    t:隐藏/显示第2~3行CPU信息;
    m:隐藏/显示第4~5行内存信息;

    进程列表排序

    M:根据驻留内存大小进行排序;
    P:根据CPU使用百分比大小进行排序;
    T:根据时间/累计时间进行排序;

    ###

    二,ps

    ###

    Linux 中的 ps 命令是 Process Status 的缩写。ps 命令用来列出系统中 当前正在运行 的那些进程,就是执行 ps 命令的那个时刻的那些进程的快照。

    使用该命令可以确定有哪些进程 正在运行 和 运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

    ps 查看的结果不是动态连续的,如果想要动态的显示进程信息,就可以使用 top、htop 命令。

    kill 命令用于杀死进程。

    ####

    ps --help 可以查看ps使用的帮助信息

    man ps 也可以查看帮助信息

    ###

    1 linux上进程有5种状态

    5 种进程状态

    1. 运行 ( 正在运行或在运行队列中等待 )
    2. 中断 ( 休眠中, 受阻, 在等待某个条件的形成或接受到信号 )
    3. 不可中断 ( 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生 )
    4. 僵死 ( 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放 )
    5. 停止 ( 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行 )


    ps 工具标识进程的 5 种状态码:

    D 不可中断 uninterruptible sleep (usually IO)
    R 运行 runnable (on run queue)
    S 中断 sleeping
    T 停止 traced or stopped
    Z 僵死 a defunct (”zombie”) process

    ###

    2  示例

    下面可以通过示例看看效果:

    [root@lsbhjshyn ~]# ps aux

    [root@ lsbhjshyn ~]# ps -lA

    [root@ lsbhjshyn ~]# ps axjf

    参数:

    -A :所有的进程均显示出来,与 -e 具有同样的效用;

    -a : 显示现行终端机下的所有进程,包括其他用户的进程;

    -u :以用户为主的进程状态 ;

    x :通常与 a 这个参数一起使用,可列出较完整信息。

    输出格式规划:

    l :较长、较详细的将该 PID 的的信息列出;

    j :工作的格式 (jobs format)

    -f :做一个更为完整的输出。

    特别说明:

    由于 ps 能够支持的系统类型相当的多,所以他的参数多的离谱!

    而且有没有加上 - 差很多!详细的用法应该要参考 man ps 喔!

    3 将目前属于您自己这次登入的 PID 与相关信息列示出来

    ps -l 将目前属于您自己这次登入的 PID 与相关信息列示出来

    返回参数的解释:

    # 各相关信息的意义为:

    # F 代表这个程序的旗标 (flag), 4 代表使用者为 superuser;

    # S 代表这个程序的状态 (STAT); 具体可以看上面的状态码,

    # UID 代表执行者身份

    # PID 进程的ID号!底下的 PPID 则父进程的ID;

    # C CPU 使用的资源百分比

    # PRI指进程的执行优先权(Priority的简写),其值越小越早被执行;

    # NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。

    # ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行的程序,一般就是『 - 』

    # SZ 使用掉的内存大小;

    # WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;

    # TTY 登入者的终端机位置啰;

    # TIME 使用掉的 CPU 时间。

    # CMD 所下达的指令名称

    ###

    4 ps 命令常用用法(方便查看系统进程)

    1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
    2)ps -A 显示所有进程。
    3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
    4)ps -e 此参数的效果和指定"A"参数相同。
    5)ps e 列出程序时,显示每个程序所使用的环境变量。
    6)ps f 用 ASCII 字符显示树状结构,表达程序间的相互关系。
    7)ps -H 显示树状结构,表示程序间的相互关系。
    8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
    9)ps s 采用程序信号的格式显示程序状况。
    10)ps S 列出程序时,包括已中断的子程序资料。
    11)ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
    12)ps -u root  显示root用户信息
    13)ps x   显示所有程序,不以终端机来区分。

    5 列出目前所有的正在内存当中的程序

    ps -aux 最常用的方法,然后再利用一个管道符号导向到 grep 去查找特定的进程,
    然后再对特定的进程进行操作。
    ps aux 列出目前所有的正在内存当中的程序

    ps -ef 显示所有进程信息,连同命令行
    ps -ef | grep ssh ps 与grep 常用组合用法,查找特定进程

    ps -axjf 列出类似程序树的程序显示
    ps aux | egrep '(cron|syslog)' 找出与 cron 与 syslog 这两个服务有关的 PID 号码

    返回参数的解释:

    • USER:该进程属于那个使用者账号的?

    • PID :该进程的进程ID号。

    • %CPU:该进程使用掉的 CPU 资源百分比;

    • %MEM:该进程所占用的物理内存百分比;

    • VSZ :该进程使用掉的虚拟内存量 (Kbytes)

    • RSS :该进程占用的固定的内存量 (Kbytes)

    • TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

    • STAT:该程序目前的状态,主要的状态有:

       R :该程序目前正在运作,或者是可被运作;

       S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。

       T :该程序目前正在侦测或者是停止了;

       Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

    • START:该进程被触发启动的时间;

    • TIME :该进程实际使用 CPU 运作的时间。

    • COMMAND:该程序的实际指令为什么?

    这个命令跟上,grep,就是查询进程的最常用的方式了,

    ####

    ####

  • 相关阅读:
    [十七]SpringBoot 之 使用自定义的properties
    【转】手摸手,带你用vue撸后台 系列三(实战篇)
    【转】手摸手,带你用vue撸后台 系列四(vueAdmin 一个极简的后台基础模板)
    【转】手摸手,带你用vue撸后台 系列二(登录权限篇)
    【转】手摸手,带你用vue撸后台 系列一
    【16】vuex2.0 之 getter
    【15】vuex2.0 之 modules
    【14】vuex2.0 之 mutation 和 action
    【13】vuex2.0 之 state
    【12】vue-router 之路由重定向
  • 原文地址:https://www.cnblogs.com/andy0816/p/15557853.html
Copyright © 2011-2022 走看看