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

    1 什么是进程    1

    1.1 概述    1

    1.2 进程的运行环境    1

    2 进程的生命周期    1

    2.1 程序运行时进程的状态关系    1

    3 监控和管理进程    1

    3.1 概述    1

    3.2 静态监控进程    1

    3.2.1 ps aux命令    1

    3.2.2 ps aux –sort %cpu | less    1

    3.2.3 ps axo user,pid,ppid, %mem,command | grep httpd    1

    3.2.4 ps auxf | httpd    1

    3.3 动态监控进程    1

    3.3.1 top命令    1

    3.3.2 ab -c 100 -n 100 http://www.baidu.com.html    1

    3.4 系统负载的计算和意义    1

    1. 什么是进程

    2. 概述

        进程是已启动的可执行程序的运行实利,进程有一下组成部分:

    1. 分配内存,已分配内存的地址空间
    2. 安全属性,进程的运行身份和权限
    3. 进程代码,运行一个或多个线程
    4. 进程状态,进程运行后的多种状态
    5. 静态程序,二进制文件,静态/usr/bin/ls,/usr/sbin/sshd
    6. 动态进程,进程运行的过程,有生命周期及运行状态
    1.     进程的运行环境

            1、局部和全局变量

            2、当前的调度上下文

            3、分配给进程使用的系统资源,例如文件描述符,网络端口等

            4、给进程分配相应的PID,UID

    1. 进程的生命周期

    1. 程序运行时进程的状态关系

      1. 父进程复制自己的地址空间创建新的子进程,子进程可以继承父进程(PPID)的环境变量
      2. 每个进程都有自己唯一的ID(PID    )
      3. 进程是由systemd这个父进程派生出来的子进程
      4. 子进程在运行自己的程序代码的时候,父进程往往会进入休眠状态。
      5. 子进程完成程序代码发出退出信号请求。
      6. 子进程已经关闭或释放了其资源环境,剩余的部分称之为僵停(僵尸Zombie
      7. 父进程在子进程退出时收到信号会被唤醒,清理剩余结构,然后继续执行其自己的程序代码
    2. 监控和管理进程

    3. 概述

        1、在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程

        2、在进程运行时,他对CPU时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境而改变。

    1. 静态监控进程

        为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的

    1. ps aux命令

        ps命令:静态查看进程的命令

        ps aux:一般使用此命令详细查看进程信息

    [root@oldboy ~]# ps aux

    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

    root 1 0.0 0.8 125352 3884 ? Ss 04:17 0:09 /usr/lib/systemd/systemd --switched-root

    root 2 0.0 0.0 0 0 ? S 04:17 0:00 [kthreadd]

    root 3 0.0 0.0 0 0 ? S 04:17 0:00 [ksoftirqd/0]

    root 5 0.0 0.0 0 0 ? S< 04:17 0:00 [kworker/0:0H]

    删去部分

    1. USER:运行进程的用户
    2. PID:进程的ID
    3. %CPUCPU的占用率
    4. %MEM:内存占用率
    5. VSZ:占用虚拟内存
    6. RSS:占用实际内存,驻留内存
    7. TTY:进程运行终端
    8. STAT:进程状态

              R:进程运行

              S:可中断睡眠

              D:不可中断睡眠

              Z:僵尸进程

              X:进程已经退出

              T:进程被暂停

              Ss s:进程的领导者,父进程

              S< < :优先级较高的进程

              SN N:优先级较低的进程

              R+ + :表示是前台的进程组

              Sl:以线程方式运行

    9. START:进程的启动时间
    10. TIME:进程占用CPU的总时间
    11. COMMAND:进程文件、进程名
      1. ps aux –sort %cpu | less

    --sort:排序

    %cpu:按CPU排序

    less:分页浏览

     

    对进程的CPU进行排序展示

    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

    root 1 0.0 0.8 125352 3884 ? Ss 04:17 0:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

    root 2 0.0 0.0 0 0 ? S 04:17 0:00 [kthreadd]

    root 3 0.0 0.0 0 0 ? S 04:17 0:00 [ksoftirqd/0]

    root 5 0.0 0.0 0 0 ? S< 04:17 0:00 [kworker/0:0H]

    root 6 0.0 0.0 0 0 ? S 04:17 0:00 [kworker/u256:0]

    root 7 0.0 0.0 0 0 ? S 04:17 0:00 [migration/0]

    root 8 0.0 0.0 0 0 ? S 04:17 0:00 [rcu_bh]

    root 9 0.0 0.0 0 0 ? R 04:17 0:02 [rcu_sched]

    root 10 0.0 0.0 0 0 ? S< 04:17 0:00 [lru-add-drain]

    root 11 0.0 0.0 0 0 ? S 04:17 0:00 [watchdog/0]

    root 13 0.0 0.0 0 0 ? S 04:17 0:00 [kdevtmpfs]

    root 14 0.0 0.0 0 0 ? S< 04:17 0:00 [netns]

    例如按进程占用内存大小展示ps aux –sort %mem | less

    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

    root 2 0.0 0.0 0 0 ? S 04:17 0:00 [kthreadd]

    root 3 0.0 0.0 0 0 ? S 04:17 0:00 [ksoftirqd/0]

    root 5 0.0 0.0 0 0 ? S< 04:17 0:00 [kworker/0:0H]

    root 6 0.0 0.0 0 0 ? S 04:17 0:00 [kworker/u256:0]

    root 7 0.0 0.0 0 0 ? S 04:17 0:00 [migration/0]

    root 8 0.0 0.0 0 0 ? S 04:17 0:00 [rcu_bh]

    root 9 0.0 0.0 0 0 ? R 04:17 0:02 [rcu_sched]

     

    1. ps axo user,pid,ppid, %mem,command | grep httpd

    自定义显示字段

    [root@oldboy ~]# ps axo user,pid,ppid,%mem,command | grep httpd

    root 20176 1 1.0 /usr/sbin/httpd -DFOREGROUND

    apache 20177 20176 0.6 /usr/sbin/httpd -DFOREGROUND

    apache 20178 20176 0.6 /usr/sbin/httpd -DFOREGROUND

    apache 20179 20176 0.6 /usr/sbin/httpd -DFOREGROUND

    apache 20180 20176 0.6 /usr/sbin/httpd -DFOREGROUND

    apache 20181 20176 0.6 /usr/sbin/httpd -DFOREGROUND

    root 29804 28286 0.2 grep --color=auto httpd

    1. ps auxf | httpd

    f:表示显示父、子进程之间的关系

    [root@oldboy ~]# ps auxf | grep httpd

    root 30047 0.0 0.1 112704 664 pts/0 R+ 16:06 0:00 \_ grep --color=auto httpd

    root 20176 0.0 1.0 230376 5164 ? Ss 12:45 0:00 /usr/sbin/httpd -DFOREGROUND

    apache 20177 0.0 0.6 230376 3016 ? S 12:45 0:00 \_ /usr/sbin/httpd -DFOREGROUND

    apache 20178 0.0 0.6 230376 3016 ? S 12:45 0:00 \_ /usr/sbin/httpd -DFOREGROUND

    apache 20179 0.0 0.6 230376 3016 ? S 12:45 0:00 \_ /usr/sbin/httpd -DFOREGROUND

    apache 20180 0.0 0.6 230376 3016 ? S 12:45 0:00 \_ /usr/sbin/httpd -DFOREGROUND

    apache 20181 0.0 0.6 230376 3016 ? S 12:45 0:00 \_ /usr/sbin/httpd -DFOREGROUND

    用pstree -p | grep httpd 也可以实现

    [root@oldboy ~]# pstree -p | grep httpd

    |-httpd(20176)-+-httpd(20177)

    | |-httpd(20178)

    | |-httpd(20179)

    | |-httpd(20180)

    | `-httpd(20181)

    1. /run/sshd.pid

        这个文件理存放着程序运行时及进程的PID

    [root@oldboy ~]# cat /run/sshd.pid

    983

     

    1. 动态监控进程

      1. top命令

        top命令可以动态的查看主机运行时间、登录用户数、CPU负载,内存使用、进程等信息

    top - 16:18:18 up 12:00, 1 user, load average: 0.00, 0.01, 0.05

    Tasks: 91 total, 1 running, 90 sleeping, 0 stopped, 0 zombie

    %Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

    KiB Mem : 481876 total, 75084 free, 95348 used, 311444 buff/cache

    KiB Swap: 2097148 total, 2097148 free, 0 used. 337268 avail Mem

     

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

    501 root 20 0 298928 6288 4940 S 0.3 1.3 0:56.35 vmtoolsd

    1 root 20 0 125352 3884 2604 S 0.0 0.8 0:10.09 systemd

    第一行:时间及系统负载

                top;表示系统当前时间        up:表示系统运行时长        

                load average:0.25 0.00 0.00 :分别表示系统5、10、15分钟系统的平均负载

    第二行:进程数

            total:表示当前系统总进程数        running:正在运行的进程数        sleeping:睡眠中的进程数

            stoped:已经结束的进程数        zombie:僵尸进程数

    第三行:CPU使用率

            us:用户空间占用的CPU百分比    sy:内核空间占用的CPU百分比    

            ni:用户空间内改变过优先级的进程占用的CPU百分比

            id:空闲的CPU百分比    (等于1减去别的进程占用率)    wa:等待输入输出的CPU时间百        比

    第四行:内存信息(kb)

            Mem:物理内存总量    free:空闲内存总量        buffers:用作内核缓存的内存量

    第五行:交换分区信息(swap)

    top [选项]

        h:查看帮助

        z:以彩色信息展示

        l:显示所用CPU的负载

        s:设置刷新时间

        b:高亮显示处于R状态的进程

        M:安内存使用百分比排序输出

        P:按CPU使用百分比排序输出

        R:堆排序进行反转

        f:自定义显示字段

        k:kill掉指定PID进程

        W:保存top环境设置 ~/.toprc

        q:退出top

    top:查看实时动态系统运行情况

            -b:批处理模式操作

            -d:屏幕刷新间隔时间

            -p:指定进程

            -n:循环显示的次数

        top交互命令

            h:显示帮助画面,给出一些简短的命令总结说明

            k:终止一个进程

            q:退出程序

            r:重新安排一个进程的优先级别

            s:改变两次刷新之间的延迟时间(单位为s),输入0值为不断刷新,默认是5s

            m:切换显示内存信息

            t:切换显示进程和CPU状态信息;

            c:切换显示命令名称和完整命令行;

            M:根据驻留内存大小进行排序;

            P:根据CPU使用百分比大小进行排序;

            T:根据时间/累计时间进行排序;

            w:将当前设置写入~/.toprc文件中

     

    案例:web压力测试

    1. ab -c 100 -n 100 http://www.baidu.com.html

    c 100:表示并发数为100个用户

    -n 100:表示请求总数为100

    http://www.baidu.comindex.html表示请求的目标URL

    请求100次,100个并发

    1. dev/zero

        无穷大的文件

        其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个    特定大小的空白文件。

    1. /dev/null

        文件黑洞

        在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢    弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一    个EOF。

    1. 系统负载的计算和意义

    进程以及子进程和线程产生的计算指令都会让cpu执行。产生请求的这些进程组成"运行队列",等待CPU执行,这个队列就是系统负载,系统负载是所用CPU的运行队列的总和

    [root@oldboy ~]# w

    16:32:11 up 12:14, 1 user, load average: 0.00, 0.01, 0.05

    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

    root pts/0 10.0.0.1 15:31 3.00s 0.11s 0.08s w

    假如当前计算机有4个cpu,当前的负载时2.92

    cpu1     cpu2    cpu3    cpu4

    2.92/4(4个核心)=73%的CPU资源被使用,剩下%27的CPU计算源是空闲的

    假设当前的计算机有两个CPU,当前的负载时2.92

    2.92/2=146% 已经验证超过了CPU的处理能力

     

  • 相关阅读:
    Working with WordprocessingML documents (Open XML SDK)
    How to Choose the Best Way to Pass Multiple Models in ASP.NET MVC
    Azure:Manage anonymous read access to containers and blobs
    Convert HTML to PDF with New Plugin
    location.replace() keeps the history under control
    On the nightmare that is JSON Dates. Plus, JSON.NET and ASP.NET Web API
    HTTP Modules versus ASP.NET MVC Action Filters
    解读ASP.NET 5 & MVC6系列(6):Middleware详解
    Content Negotiation in ASP.NET Web API
    Action Results in Web API 2
  • 原文地址:https://www.cnblogs.com/majinhai/p/9534094.html
Copyright © 2011-2022 走看看