zoukankan      html  css  js  c++  java
  • Linux之进程管理

     Linux系统进程管理

    所谓进程是指当我们在启动一个程序之后,系统会产生一个进程并为该进程分配一个PID,即是进程号。linux在启动后会创建第一个进程init,随后所有子进程都将由其父进程创建。根据不同的系统类型系统可分为用户空间进程和内核空间进程。内核空间执行在CPU的环0,由内核进行控制和管理,如果用户空间用到内核空间的指令需向内核空间发起系统调用;用户空间执行在CPU环 3。

    进程的类型:

    1守护类进程:此类进程一般与终端无关是在系统启动过程中自动运行

    2 前台进程:与终端相关,是由用户在终端中手动打开的进程

    进程的优先级:linux进程优先级分为0-139,其中0-99是内核优先级由内核进行管理我们无法修改,100-139通过修改nice值进行调整,调整范围在-20至19,越小越优先

    进程间通信:进程之间通信(IPC)如在同一台主机可通过信号(signal),共享内存(shm),semerphor(旗语)来完成,不同主机可依靠rpc(远程过程调用),socket来完成

    进程的状态:

      1. running运行态:正在运行中的进程

      2. sleeping睡眠态:睡眠态又分为可中断睡眠和不可中断睡眠,可中断睡眠可以立即被CPU唤醒称为运行态,不可中断是由于等待IO操作完成无法继续执行

      3. zombie僵尸态:进程已经死了等待父进程来销毁或者父进程也已经挂了


      4. stopped停止态:不可被调度并运行

    Linux进程管理主要命令:pstree,ps,vmstat,top,hop,glances,kill,dstat,bg,fg,job

     1. pstree 显示进程数

       [root@MiWiFi-R3-srv grub]# pstree
        init─┬─NetworkManager─┬─dhclient
         │└─{NetworkManager}
         ├─abrtd
         ├─acpid
         ├─atd
         ├─auditd───{auditd}
         ├─automount───4*[{automount}]
         ├─bonobo-activati───{bonobo-activat}
         ├─certmonger
         ├─console-kit-dae───63*[{console-kit-da}]
         ├─crond
         ├─cupsd
         ├─2*[dbus-daemon───{dbus-daemon}]
         ├─dbus-launch
         ├─devkit-power-da
         ├─gconfd-2
         ├─gdm-binary─┬─gdm-simple-slav─┬─Xorg
         ││ ├─gdm-session-wor
         ││ ├─gnome-session─┬─at-spi-registry
         ││ │   ├─gdm-simple-gree
         ││ │   ├─gnome-power-man
         ││ │   ├─metacity
         ││ │   ├─polkit-gnome-au
         ││ │   └─{gnome-session}
         ││ └─{gdm-simple-sla}
         │└─{gdm-binary}


        
    2. ps命令 显示相关进程信息

        常用选项:
          a:显示所有与终端相关的进程
          x:显示所有与终端无关的进程
          u:显示与用户相关的进程信息
         -e:显示所有进程
         -f:显示完成格式
         -F:显示更为完整的格式
         -H:显示进程层级结构

     2.1 ps常用组合之aux

      

      

        USERID:表示运行改进程的用户
        PID:进程号
        CPU:使用CPU的百分比
        VSZ:虚拟内存集
        RSS:常驻内存集
        TTY:启动进程的终端
        STAT:
          S:睡眠态
          R:运行态
          z:僵尸态 
          D:不可中断睡眠
          T:停止态
          N:低优先级
          <:高优先级进程
          +:前台进程
          l:多线程
          s:session leader
        START:进程触发时间
        TIME:进程实际使用CPU时间
     

    2.2 ps常用组合之-eF

    可以看到C字段代表CPU的利用率,PSR字段表示是运行在哪颗CPU上

     

    2.3 ps常用组合之axo

    o表示自己定义需要显示的字段,常用的有:nice,pid,cpu,command,user,pri,stat,tty,vsz,ppid

    3 top命令

    top命令类似于Windows中的资源管理器,可以实时刷新系统中进程相关信息

    常用选项:

        d #:指定延迟时间间隔
        u UserName:仅显示指定用户的进程
        s COLUM:以指定字段进行排序
        I :显示选定的进程打开的文件列表
        a:将指定的进程绑定至指定的CPU核心

    第一行分别表示系统运行时间,登录多少用户,Cpu平均负载

    第二行表示总共的作业数量,多少个运行状态,睡眠状态,停止状态和僵死状态

    第三行us代表用户空间占用CPU的百分比,sy代表系统内核空间占用百分比,ni代表跳转nice值用户进程空间内改变过优先级的进程占用CPU百分比,id表示空闲百分比,hi和si分别表示硬中断和软中断占用百分比,st代表此系统所被“偷走”的百分比

    第四行和第五行分别表示物理内存和交互分区的使用情况

     4 vmstat 命令

     procs字段:

             r:表示等待运行的进程个数,cpu等待运行的任务队列长度

             b:表示不可中断睡眠的进程个数

    memory字段:

      swpd:交换分区使用率

      free:可用空间

           buff:用于buff的内存量

          cache:用于cache的内存量

    swap字段:

       si:swap换入的速率(kb/s)

            so:swap换出的速率 (kb/S)

    IO字段:

           bi:块设备写入的速率(kb/s)

          bo:块设备读取的速率 (kb/S)

    system:

      in:中断速率,当进行IO操作时cpu中断正在执行的任务

      cs:上下文切换,进程别内核调度的频率

    cpu:

      us:用户空间占用率

      sy:内核空间占用率

      id:CPU空闲率

      wa:等待IO完成的比率

      st:被虚拟化偷走的比率

    4 dstat命令

    dstat命令根据指定选项可以定时输出相关选项的内容,常用选项如下:  

      -c, --cpu:显示cpu相关信息
      -d ,--disk:显示磁盘相关信息
      -g :显示page相关的统计数据
      -m:Memory的相关统计数据
       -n:interface的相关统计数据
       -p:显示process的相关统计数据
       -r:显示io请求的相关统计数据
      -s:显示swap的相关统计数据
     --top-cpu:显示最暂用CPU的进程
     --top-io:最占用io 的进程
     --top-merm:最占用内存的进程
     --top--lantency:延迟最大的进程

  • 相关阅读:
    linux C程序中获取shell脚本输出(如获取system命令输出)
    Vue实现网页在线拍照和上传 幸福n
    c# thread数线程的创建多线程(一)
    C#开启异步 线程的四种方式(二)
    web学习网站
    C#中的set和get方法
    C# 多线程之Task任务(三)
    Taro3 扫描不同二维码参数不同,但是热启动之后参数不变
    Taro 弹窗阻止小程序滑动穿透(亲测有效) tabbar数据缓存不更新 入口场景值不同
    《Webpack+Babel入门与实例详解》出版了
  • 原文地址:https://www.cnblogs.com/harryblog/p/7995292.html
Copyright © 2011-2022 走看看