zoukankan      html  css  js  c++  java
  • linux学习笔记整理(九)

    第十章 Centos7-系统进程管理
    本节所讲内容:
    10.1 进程概述和ps查看进程工具
    10.2 uptime查看系统负载-top动态管理进程
    10.3 前后台进程切换- nice进程优先级-实战screen后台执行命令
    10.1 进程概述和ps管理进程
    10.1.1 什么是进程?
    进程是已启动的可执行程序的运行实例,进程有以下组成部分:
    • 已分配内存的地址空间;
    • 安全属性,包括所有权凭据和特权;
    • 程序代码的一个或多个执行线程;
    • 进程状态
    程序: 二进制文件,静态 /bin/date,/usr/sbin/sshd
    进程: 是程序运行的过程, 动态,有生命周期及运行状态。
    下图所示的是进程的生命周期:


    描述如下:
    父进程复制自己的地址空间(fork [fɔ:k] 分叉)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。
    centos5或6PID为1的进程是: init
    centos7 PID为1的进程是: systemd
    僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。
    用自己的话表达:父进程退出了, 子进程没有退出, 那么这些子进程就没有父进程来管理了,就变成僵尸进程。
    10.1. 2 进程的属性
    进程ID(PID):是唯一的数值,用来区分进程
    父进程的ID(PPID)
    启动进程的用户ID(UID)和所归属的组(GID)
    进程状态:状态分为运行R、休眠S、僵尸Z
    进程执行的优先级
    进程所连接的终端名
    进程资源占用:比如占用资源大小(内存、CPU占用量)

    10.1.3 使用ps查看进程工具
    1、ps查看进程工具
    例1:常用的参数:
    a: 显示跟当前终端关联的所有进程
    u: 基于用户的格式显示(U: 显示某用户ID所有的进程)
    x: 显示所有进程,不以终端机来区分
    例2:常用的选项组合是 ps -aux


    [root@xuegod63 ~]# ps -axu | more

    注: 最后一列[xxxx] 使用方括号括起来的进程是内核态的进程。 没有括起来的是用户态进程。
    上面的参数输出每列含意:
    USER: 启动这些进程的用户
    PID: 进程的ID
    %CPU 进程占用的CPU百分比; 
    %MEM 占用内存的百分比; 
    VSZ:进程占用的虚拟内存大小(单位:KB) 
    RSS:进程占用的物理内存大小(单位:KB) 
    STAT:该程序目前的状态,Linux进程有5种基本状态:
    R :该程序目前正在运作,或者是可被运作;
       S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
       T :该程序目前正在侦测或者是停止了;
    Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
    D 不可中断状态.  
    5个基本状态后,还可以加一些字母,比如:Ss、R+,如下图:

    它们含意如下::
    <: 表示进程运行在高优先级上
    N: 表示进程运行在低优先级上
    L: 表示进程有页面锁定在内存中
    s: 表示进程是控制进程
    l: 表示进程是多线程的
    +: 表示当前进程运行在前台
    START:该 process 被触发启动的时间;
    TIME :该 process 实际使用 CPU 运作的时间。
    COMMAND:该程序的实际指令

    例1: 查看进程状态
    [root@xuegod63 ~]# vim a.txt
    在另一个终端执行:
    [root@xuegod63 ~]# ps -aux | grep a.txt #查看状态 S表示睡眠状态, + 表示前台
    root 4435 0.0 0.2 151752 5292 pts/1 S+ 20:52 0:00 vim a.txt
    root 4661 0.0 0.0 112676 996 pts/0 S+ 21:05 0:00 grep --color=auto a.txt
    在vim a.txt 这个终端上 按下: ctrl+z
    [1]+ 已停止 vim a.txt
    在另一个终端执行:
    [root@xuegod63 ~]# ps -aux | grep a.txt #查看状态 T表示停止状态
    root 4435 0.0 0.2 151752 5292 pts/1 T 20:52 0:00 vim a.txt
    root 4675 0.0 0.0 112676 996 pts/0 S+ 21:05 0:00 grep --color=auto a.txt
    注:
    ctrl-c 是发送 SIGINT 信号,终止一个进程
    ctrl-z 是发送 SIGSTOP信号,挂起一个进程。将作业放置到后台(暂停)
    ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。代表输入完成或者注销

    例2: D 不可中断状态
    [root@xuegod63 ~]# tar -zcvf usr-tar.gz /usr/
    #然后在另一个终端不断查看状态,由S+,R+变为D+

    2、ps常用的参数: ps -ef
    -e 显示所有进程
    -f 显示完整格式输出
    我们常用的组合: ps -ef


    包含的信息如下
    UID: 启动这些进程的用户
    PID: 进程的ID
    PPID: 父进程的进程号
    C: 进程生命周期中的CPU利用率
    STIME: 进程启动时的系统时间
    TTY: 表明进程在哪个终端设备上运行。如果显示 ?表示与终端无关,这种进程一般是内核态进程。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的进程。
    TIME: 运行进程一共累计占用的CPU时间
    CMD: 启动的程序名称

    例1:测试CPU使用时间。
    dd if=/dev/zero of=/a.txt count=10 bs=100M
    [root@localhost ~]# ps -axu | grep dd
    注:
    ps aux 是用BSD的格式来显示进程。
    ps -ef 是用标准的格式显示进程

    10.2 uptime查看系统负载-top动态管理进程
    10.2.1 uptime查看CPU负载工具
    [root@localhost ~]# uptime
    13:22:30 up 20days,  2 users,  load average: 0.06, 0.60, 0.48
    弹出消息含意如下:


    13:22:30 当前时间
    up 20days 系统运行时间 ,说明此服务器连续运行20天了
    2 user 当前登录用户数
    load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。
    任务队列的平均长度是什么?
    大厅排除买票:

    这时队列是4:
    cpu队列数为3时,如图:

    任务队列的平均长度 懂:1 不懂:2

    互动:例1:找出当前系统中,CPU负载过高的服务器?
    服务器1: load average: 0.15, 0.08, 0.01 1核
    服务器2: load average: 4.15, 6.08, 6.01 1核
    服务器3: load average: 10.15, 10.08, 10.01 4核
    答案:服务器2
    如果服务器的CPU为1核心,则load average中的数字 >=3 负载过高,如果服务器的CPU为4核心,则load average中的数字 >=12 负载过高。
    经验:单核心,1分钟的系统平均负载不要超过3,就可以,这是个经验值。
    如下图: 1人只能买1张票,排第四的人可能会急。 所以我们认为超过3就升级CPU

    10.2.2 top命令
    [root@xuegod63 ~]# top #top弹出的每行信息含意如下:
    第一行内容和uptime弹出的信息一样
    进程和CPU的信息( 第二、三行)

    当有多个CPU时,这些内容可能会超过两行。内容如下:
    Tasks: 481 total 进程总数
    1 running 正在运行的进程数
    480 sleeping 睡眠的进程数
    0 stopped 停止的进程数
    0 zombie 僵尸进程数
    Cpu(s): 0.0% us 系统用户进程使用CPU百分比。
    0.0% sy 内核中的进程占用CPU百分比
    0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
    98.7% id 空闲CPU百分比
    0.0% wa cpu等待I/0完成的时间总量。
    测试:
    终端1:执行:top
    终端2:dd if=/dev/zero of=/a.txt count=10 bs=100M
    终端3:dd if=/dev/zero of=/a.txt count=10 bs=100M
    如下:

  • 相关阅读:
    双向链表
    单链表实例+反转
    const,static,volatile
    html基础知识
    linux知识
    2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018) D. Delivery Delays (二分+最短路+DP)
    2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018) A. Altruistic Amphibians (DP)
    BZOJ 1453 (线段树+并查集)
    HDU 5634 (线段树)
    BZOJ 2124 (线段树 + hash)
  • 原文地址:https://www.cnblogs.com/apesplan/p/10497726.html
Copyright © 2011-2022 走看看