系统调用(system call): 运行在用户空间的程序向操作系统内核请求系统资源
    (获得更高权限);系统调用提供给用户程序与操作之间的接口
    内核功能:进程管理,文件系统,网络功能,内存管理,驱动程序等等
    程序: 通常是个二进制程序,放置存储介质中(内存/硬盘等),以实体文件存在
    进程:正在运行的程序;进程获取到的系统资源由执行者决定;程序(代码)会被加载到内存执行
    操作系统会给每个进程分配一个内存单元(识别码)
    - 进程的定义:程序运行的实例,系统上的每个程序都会运行在进程的上下文中
    - 进程出现的目的:是为了更好的利用CPU资源
    举例: A执行任务(读取数据);B想要执行任务,需要等待CPU资源空闲;当有了进程之后
    A执行任务(读取数据),进行”上下文件切换”(A需要保存当前进程状态);
    B可以直接执行任务,当A任务完成后,将cpu占用还给A (恢复A之前进程状态)
    - 进程拥有独立的内存空间;对我们来看:进程好似独占CPU

    线程
    协程
    进程创建:
    INIT进程: PID为(1|0)的父进程
    父子进程: 进程都是由其父进程创建的(调动fork()函数)

    进程优先级:
    0-99: 实时优先级,数字越小,优先级越低
    100-139: 静态优先级,数字越小,优先级越高
    表现形式:通过Nice值(-20,19)

    进程类型:
    前台进程:跟终端相关,通过终端启动的进程
    守护进程:在系统引导过程中启动的进程(也可以自定义守护进程:daemon()),跟终端无关
    Note: 前台进程也可以发往后台,以守护进程模式运行

    进程状态:
    运行态:running
    就绪态:ready
    睡眠态:
    可中断: interruptable
    不可中断: uninterruptable

    停止态:stopped 暂存于内存中,但是不会被调度,除非手动启动
    僵尸态:Zombie
    僵尸进程:简单来说:就是有些进程已经运行完结束,但是占用的系统资源没有被回收
    进程分类:
    CPU - Bound
    IO - Bound : 不占用cpu
    - 进程管理工具: ……..
    pstree命令:显示进程树
    常用参数:
    -g : 显示子进程Pid
    -p :显示Pid号
    -s :显示父进程信息
    ps命令: report a snapshot of the current processes (输出当前系统进程信息)
    - Linux系统各进程的相关信息均会保存到/proc/PID/目录的各文件中
    常用组合:aux
    a : 与终端相关的进程
    x :与终端无关的进程
    u : 以用户为中心组织进程状态信息显示
    USER PID %CPU %MEM
    用户 pid号 CPU占用情况 内存占用情况
    VSZ :虚拟内存集
    RSS :常驻内存集
    TTY :终端
    STAT : 进程状态
    R: Running
    S: interruptable
    D: uninterruptable
    T: stopped
    Z: Zombie
    +: 前台进程
    l: 多线程进程
    N:低优先级进程
    <: 高优先级进程
    s: session leader
    START : 启动时间
    TIME :运行占用CPU的累积时长
    COMMAND :由哪个命令来启动的相关进程
    常用组合2:ps -ef
    e : 显示所有进程
    f :显示完整格式程序信息
    常用组合3:ps -eFH
    F : 显示完整格式进程信息
    H : 以进程层级格式显示进程相关信息

    常用组合4:ps eo, axo (输出自定义信息)
    To see every process with a user-defined format:
    ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
    ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
    ps -Ao pid,tt,user,fname,tmout,f,wchan
    自定项: STANDARD FORMAT SPECIFIERS(man手册中这一段帮助文档)
    top命令: 实时显示Linux processes
    top - 02:43:53 up 48 min, 1 user, load average: 0.00, 0.01, 0.05
    02:43:53 up 48 min : 开始运行的时间 up 当前已经运行的时间
    1 user : 登录用户数量
    load average: 0.00, 0.01, 0.05 : CPU平均负载; 1|5|15分钟的平均负载信息(uptime命令也可)

    Tasks: 121 total, 2 running, 119 sleeping, 0 stopped, 0 zombie
    进程任务数量 正在运行状态 睡眠状态 停止状态 僵尸状态
    %Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
    cpu占用相关信息:
    us: 表示用户态的CPU时间比例
    sy:表示内核态的CPU时间比例
    ni:运行低优先级进程的CPU时间比例
    id:空闲CPU时间比例
    wa:处于IO等待的CPU时间比例
    hi hard interrupt: 处理硬中断的CPU时间比例
    si soft interrupt: 处理软中断的CPU时间比例
    st steal:当前系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间比例
    KiB Mem : 997980 total, 539524 free, 100820 used, 357636 buff/cache
    内存 总量 空闲 使用量 buffer/cache 可用量
    KiB Swap: 2097148 total, 2097148 free, 0 used. 711396 avail Mem
    交换内存 总量 空闲量 使用量 可用量
    内置命令:
    排序:
    P: 以占用CPU百分比排序
    M: 以占用内存百分比排序
    T: 以累积占用CPU时长排序

    首部信息提示:
    uptime信息: l命令
    task及cpu信息: t命令
    CPU分别显示信息: 1(数字)
    memory信息: m命令
    修改刷新时间间隔: s 命令(默认是3s刷新一次)
    终止指定进程:k命令
    退出命令: q命令


    选项:
    -d #:指定刷新时间间隔 默认为3s
    -b:以批次方式显示
    -n #:显示多少批次

    htop命令:
    内置命令:
    s:跟踪选定进程的系统调用
    l:显示选定进程打开的文件列表
    [: 将选定的进程绑定至某个指定的CPU核数上
    选项:
    -d #: 指定延迟时间
    -u username: 仅显示指定用户的进程
    -s CLOOMN: 以指定的字段进行排序

    vmstat命令:
    -n [延时|次数] : 每个多长时间输出一次;一共输出n次
    -s : 显示内存统计信息
    vmstat 5 2

    输出信息:
    procs —————-memory————— —-swap— ——-io—— -system— ———cpu——-
    r b swpd free buff cache si so bi bo in cs us sy id wa st
    2 0 0 535084 2108 357696 0 0 14 7 26 24 0 0 100 0 0

    r: running
    b: uninterruptable
    swapd: 交换内存总量

    si: 数据进入swap中的速率
    so:数据离开swap中的速率
    bi:数据从块设备到系统的速率
    bo:数据从系统到块设备的速率
    in:interrupts 中断速率
    cs: context switch 上下文切换速率(进程切换速率)
    kill命令:向进程发送控制信号,以实现进程管理
    显示当前可用信号: kill -l
    常用信号:
    1) SIGHUP : 让进程无需退出而重新读取配置文件
    2) SIGINT : 终止正在运行的进程
    9) SIGKILL:杀死正在运行的进程
    15) SIGTERM: 终止正在运行的进程
    指定信号的方式:
    信号的数字标识(*)
    信号的完整名称
    信号的简称
    向进程发起信号:
    kill [-Signal] PID

    终止”名称”之下的所有进程
    killall [-Signal] Promgram
    进程优先级调整:
    静态优先级: 100-139 可以手动修改
    进程默认启动时的nice值为0,优先级120
    修改:
    nice命令:Usage: nice [OPTION] [COMMAND [ARG]…]
    renice命令:
    Usage:
    renice [-n] [-p|—pid]
    renice [-n] -g|—pgrp
    renice [-n] -u|—user
    [root@test ~]# renice -n 5 -p 2310
    2310 (process ID) old priority 0, new priority 5




    - CentOS7启动流程
    - Linux系统服务管理