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的处理能力

     

  • 相关阅读:
    矩阵
    向量
    Matlab中的基本数据类型介绍
    静态代码块在何时调用
    保留上次访问网站的时间的几种方法
    用ServletContext做一个简单的聊天室
    ServletContext结合Servlet接口中的init()方法和destroy()方法的运用----网站计数器
    用ServletContext读取.properties文件
    用类加载器的5种方式读取.properties文件
    如何用cookie保存用户的登录的密码和用户名
  • 原文地址:https://www.cnblogs.com/majinhai/p/9534094.html
Copyright © 2011-2022 走看看