zoukankan      html  css  js  c++  java
  • ps和top进程监控

    一、名词解释

    1、什么是进程(what is process)?

    答:进程是程序运行的过程,伴有动态,生命和运行状态。(组成:1.已分配内存的地址空间  2.安全属性,包括所有权凭据和特权  3.程序代码的一个或多个执行线程  4.进程状态。通俗来说即进程会有:进程标识PID和PPID;状态;disk IO:需要分配;mem:需要分配;cpu:需要分配;net:需要分配。)

    2、什么是进程的生命周期(process life cycle)?

    答:父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程ID(PID),满足跟踪安全性之需。PID和父进程PPID是子进程环境的元素,任何进程都可以创建子进程。子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。

    3、进程状态(process states)?

    答:在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU 时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。
    有runing、sleeping、stopped、zombie(僵尸进程)四种状态。

    二、查看进程

    1、静态查看进程ps

      1.1 静态查看进程 ps
    [root@tianyun ~]# ps aux |less
    USER        PID    %CPU   %MEM    VSZ        RSS    TTY      STAT    START     TIME    COMMAND
    root             1        0.0           0.6       128096    6708     ?         Ss         16:20       0:01     /usr/lib/systemd/systemd
    ————————————————————————————
    USER: 运行进程的用户
    PID: 进程ID
    %CPU: CPU占用率
    %MEM: 内存占用率
    VSZ: 占用虚拟内存
    RSS: 占用实际内存
    TTY: 进程运行的终端   //可以开启vim 查询到终端名称
    STAT: 进程状态 man ps (/STATE)
    ———————————————————————————
    R 运行
    S 可中断睡眠 Sleep,(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
    D 不可中断睡眠,(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
    T 停止的进程
    Z 僵尸进程
    X 死掉的进程
    ————————————————————————————
    [了解]
    Ss s进程的领导者,父进程
    S< <优先级较高的进程
    SN N优先级较低的进程
    R+ +表示是前台的进程组
    Sl 以线程的方式运行
    ————————————————————————————
    START: 进程的启动时间  //可以开启vim ,在用date验证。
    TIME: 进程占用CPU的总时间
    COMMAND: 进程文件,进程名

    1.2        ps a  显示现行终端机下的所有程序

                 ps u 以用户为主的格式来显示程序状态

                 ps x 不以终端机来区分

    1.3 按占比升降序排列
      示例1:[root@tianyun ~]# ps aux --sort %cpu |less      //--sort排序,升序(小到大)
      示例2:[root@tianyun ~]# ps aux --sort -%cpu |less     //-%CPU降序(-表示降序)
      示例3:[root@tianyun ~]# ps aux --sort rss |less    //以驻留内存升序排序
      示例4:[root@tianyun ~]# ps aux --sort -rss |less 

    1.4 自定义显示字段
      [root@tianyun ~]# ps axo user,pid,ppid,%mem,command   //xo指定列显示
      [root@tianyun ~]# ps axo user,pid,ppid,%mem,command |grep httpd
      root 8310 1 0.1 /usr/sbin/httpd
      apache 8311 8310 0.0 /usr/sbin/httpd
      apache 8312 8310 0.0 /usr/sbin/httpd
      apache 8313 8310 0.0 /usr/sbin/httpd
      apache 8314 8310 0.0 /usr/sbin/httpd
      apache 8315 8310 0.0 /usr/sbin/httpd
      apache 8316 8310 0.0 /usr/sbin/httpd
      apache 8318 8310 0.0 /usr/sbin/httpd
      apache 8319 8310 0.0 /usr/sbin/httpd
      root 9236 6798 0.0 grep httpd
    -----------------------------------------------------------
    [root@tianyun ~]# ps axo user,pid,ppid,%mem,%cpu,command --sort -%cpu |less    //针对某些程序,显示某些列,再进行排序。简洁明了

    1.5 查看指定进程的PID,四种方法(该处指定进程为sshd)
      第一种。cat
    [root@localhost ~]$ cat /run/sshd.pid
    830
      第二种。ps
    [root@localhost ~]# ps aux |grep sshd
    root 10180 0.0 0.0 7224 1024 ? Ss 16:00 0:00 /usr/sbin/sshd

      第三种。pgrep
    [root@localhost ~]# pgrep -l sshd
    10180 sshd
    [root@localhost ~]# pgrep sshd
    10180
      第四种。pidof
    [root@localhost ~]# pidof sshd
    10180

    top -d 1 -p 10180 (动态查看sshd的进程信息)

    1.6 查看进程树

      [root@localhost ~]# pstree

    2.1 动态查看ps进程

    2.1.1 上半部分:
    第一部分:系统整体统计信息
    top - 11:45:08 up 18:54,  4 users,  load average: 0.05, 0.05, 0.05 

    //当前时间;系统运行时间,时:分;当前登录用户数;系统负载,即任务队列的平均长度。三个数值分别为1分钟 、5分钟 、15分钟
    Tasks: 176 total,   1 running, 175 sleeping,   0 stopped,   0 zombie  %Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

    total 进程总数   running 正在运行的进程数    sleeping 睡眠的进程数    stopped 停止的进程数    zombie 僵尸进程数
    Cpu(s):
     us 用户空间占用CPU百分比
     sy 内核空间占用CPU百分比
     ni 用户进程空间内改变过优先级的进程占用CPU百分比
     id 空闲CPU百分比
     wa 等待输入输出的CPU时间百分比
     hi:硬件CPU中断占用百分比
     si:软中断占用百分比
     st:虚拟机占用百分比
    KiB Mem :  3865520 total,  1100000 free,   580268 used,  2185252 buff/cache
    KiB Swap:  4063228 total,  4063228 free,        0 used.  2917828 avail Mem (avail Mem表示可用于进程下一次分配的物理内存数量,这个大小一般比free大一点,因为除了free的空间外,系统还能立即释放出一些空间来。)

    负载加权值解释:小于1正常
    load average: 0.86, 0.56, 0.78 系统最近 1分钟,5分钟,15分钟平均负载

    关于buffers的小实验:做个小实验,观察缓存的作用。
      time cp -rf /etc /tmp/etc1
      time cp -rf /etc /tmp/etc1
      注意观察两次复制的时间,大大缩小,是因第二次的数据已经到了buffer了。在top的buffer/cache会有体现。

    2.1.2下半部分:

    字段介绍

    虚拟内存(VIRT):virtual memory usage :(1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量需要这些内存,但并没有占满。)

    常驻内存(RES):resident memory usage :(1、进程当前使用的内存大小 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反用了多少内存)。

    共享内存(SHR):shared memory:(1、除了自身进程的共享内存,也包括其他进程的共享内存  2、计算某个进程所占的物理内存大小公式:RES – SHR

    3.1  进程信息
    命令
    h|?帮助
    M 按内存的使用排序
    P 按CPU使用排序
    N 以PID的大小排序
    R 对排序进行反转
    f 自定义显示字段
    1 显示所有CPU的负载
    < 向前
    > 向后
    z 彩色,Z设置彩色,使用数字调整
    W 保存top环境设置
     

    4.1信号种类

    kill -9 pid   强制杀死

    kill -1 pid  重新加载配置,进程不会死

    kill -15 pid   正常结束

    kill -18 pid 继续

    kill -19 pid 停止

    三、nice优先级设置(人为可设置nice范围-20到19)

    法一 :nice -n -5 sleep 6000 &

    发二  :top -d 1 -p pid

    按r键 //调整进程的优先级(Nice Level) (-20高) ---0--- (19低)(直接回车)
    回车 //确认该程序。
    -20
    回车  //确认修改nice值。
    如果直接使用top,使用R调整nice值,先输入PID,再输入nice值即可。

    法三:renice -20 pid

  • 相关阅读:
    Junit连接oracle数据库
    java判断字符串是否由数字组成
    Hibernate各种主键生成策略与配置详解
    一对多映射关系
    one-to-one 一对一映射关系(转 wq群)
    工厂模式
    struts2
    创建JUtil
    jdbc
    压缩数据
  • 原文地址:https://www.cnblogs.com/zjz20/p/11228463.html
Copyright © 2011-2022 走看看