zoukankan      html  css  js  c++  java
  • 【Linux】 linux中的进程信息相关的一些内容

    linux进程信息

    ■  top

      top命令用于动态地查看系统的进程和其他一些资源的信息。开启top的时候可以加上-t <sec>来设置top更新的频率高低。进入top界面之后,可以输入一些命令比如P表示以cpu资源占用率对进程排序,M表示以内存的使用率排序进程,N表示以PID的顺序排序等等。想要知道更多命令可键入?来查看

      top的界面说明:

      第一行:<当前时间> <开机到目前的总时间> <登录用户人数> <系统最近一分钟、五分钟、十五分钟的平均负载>

      第二行:进程情况的汇总 比如总共有多少进程,有几个正在运行,有几个正在睡眠等等

      第三行:cpu(s)表示cpu的整体负载,按数字键1可以在多核的机器上切换出每个cpu的负载情况

      第四行第五行:记录了Mem物理内存和swap虚拟内存的使用情况

      

      下半部分:分进程地显示出系统资源的使用情况,各个字段的含义分别如下

      PID  就是Pid

      USER  进程所属用户

      PR  piriority,优先级,数字越小越优先被执行

      NI  nice,与priority相关,也是数字越小越先被执行,具体关系我不懂

      %CPU %MEM   相当于ps aux中的前两个字段,就是进程占用了cpu和内存的比重

      TIME+  进程累计使用cpu进行运算的时间

      VIRT  占用虚拟内存的总量,VIRT = RES + SWAP

      SWAP  虚拟内存中被交换出来的大小

      RES  进程仍然在使用的,没被交换出物理内存部分的大小

      SHR  共享内存大小

      以上这些数据默认是安装cpu的占用率来进行排序的

      只输入top命令的话会进入top界面,但是这并不方便把top的信息重定向到文件中,而top -b -n <num> 可以做到重定向,并且num表示一次输出多少次的top信息。比如监控脚本可以写

    while true
    do
        top -b -n 1 >> output.log
        sleep 30s
    done

      这个意思就是说每隔三十秒取一次top的数据

      *就这个问题而言,还可以在top那句语句之前来个 mkdir -p ./data/`date +"%F"`这样可以把日志按照日期的同归类到不同的子目录中去(这是那台负载异常高的机器的问题解决过程中,阿里云那个客服写的脚本)

    ■  pstree

      pstree -p可以列出所有进程的pid,-u可以列出进程的所属用户

      顾名思义,pstree就是把进程之间的辈分关系以树状图的形式展现出来

    ■  ps静态查看进程信息

      ps -ef已经接触得很多了,除了ef外,ps还有另外一些命令行参数

      -l  只显示和自己当前用户bash相关的进程

      -a  显示所有用户的进程

      -u <user>  指定显示某个用户的进程

      ps -l的字段解释:

        F  进程标志,4表示为root的进程

        S  表示stat,可以是R(running) , S(sleep) , T(stop) , Z(zombie)  *所谓僵尸状态的进程,就是指父进程没能顺利结束子进程的情况,通常在进程变成僵尸进程之后,它的CMD后面会有<defunct>的标志

        C  cpu使用率

        TTY  登陆者终端机的位置,远程登录的话就显示动态终端端口(哪个pts/n)

        TIME  实际累计消耗cpu的时间

        CMD  开启该进程的命令

      ps aux的其他字段在ps -ef中都有,比较特殊的就是VSZ(该进程占用的虚拟内存量)和RSS(该进程占用的物理内存量)

    ■  关于进程的优先级,PRI与NI值

      前面提到过这两个值

      首先我们知道,cpu课可以连续执行多次不同进程的不同部分,所以把重要进程的优先级调高,更有利于提高运算效率

      作为进程优先级的体现,es gibt PRI und NI值了。PRI值由系统内核动态地进行调整,用户无法直接进行修改,PRI越小代表其优先级越高,如75PRI值的进程运行时的优先级就比77PRI值的进程要高

      用户如果想要影响优先级可以通过调整NI值来实现。在我看来,NI值是对PRI值的一个修正,root的所有人的进程可以做出NI值的修改,修改范围是-20到19,一般用户就只能对属于自己的进程进行NI值的修改,其调整范围是0到19

      如果有一个进程原有的PRI是20,然后用户把它的NI值调整为5,那么这个进程最终的优先度就是25

      通过renice <NI> <pid>来调整改变nice值

    ■  查看系统资源的一些命令

      free -m查看内存

      uname -a查看内核信息,返回信息中包括内核名,内核版本,硬件名称,CPU类型,硬件平台等

      uptime 查看系统启动时间和工作负载

      vmstat实时监测系统的资源变化。vmstat可以检测cpu/内存/磁盘的输入输出状态,vmstat后面可以加两个参数如vmstat 1 3表示要求其每隔一秒给出一次数据,一共给出三秒

        vmstat返回值中的字段有procs:r(等待运行的进程数量),b(不可被唤醒的进程数量)。这两个指数越大表明系统越忙

        memory:swpd(虚拟内存中被使用的量),free,buff,cache(字段和free命令是一样的)

        swap:si(从磁盘中取出的量),so(移入磁盘的量)。这两个指数越高说明系统IO负载越高,性能越差

        io:bi(读取磁盘的量),bo(写入到磁盘的量)

        system:in(每秒中断进程的次数),cs(每秒事件切换次数)

        cpu:us(非内核态cpu状态),sy(内核层cpu状态),id(限制状态),wa(等待IO时耗费cpu状态)。。

        以上这些字段我也不是很懂。。就记了个大概

      iostat用于查看io状态

    ■  关于/proc/*

      其实以上所有命令的数据都是从/proc目录相关文件下取出来的。这个目录之前也提到过了が,有下面这些个目录

      cmdline  记录加载kernel时的命令和参数

      cpuinfo  cpu相关信息

      devices  系统各个主要设备的代号

      filesystems  系统已加载的文件系统的信息

      loading  平均负载数据

      meminfo  通过free查看到的数据来自这里

      mounts  通过mount查到的信息来自这

      uptime  通过uptime查到的信息

      version  通过uname查到的信息

    ■  关于正在被进程使用的文件

      如果想要通过目录或文件找出正在使用这个文件的进程,用fuser

      比如fuser /opt/zabbix-OMS-api/nohup.out

      反过来,如果想要通过进程来查找的话用lsof

      比如lsof | grep (pid)

  • 相关阅读:
    VSS2005的使用实例
    JS采集程序编码
    MVC article from java.sum.com
    Unit Test研究报告
    12306.cn火车票自动订票软件
    Cisco 交换机端口故障解决(二)
    cisco 2811 Qos
    双网卡同时上内外网的路由设置
    一个很有用的字符串处理的头文件(在程序的容错中特别有用)
    网络分析软件(科来网络分析软件)
  • 原文地址:https://www.cnblogs.com/franknihao/p/6657531.html
Copyright © 2011-2022 走看看