内核的功用:进程管理,文件系统,网络功能,内存管理,驱动程序,安全功能

Process:运行中的程序的一个副本

  Linux内核存储进程信息的固定格式task struct
    多个任务的task struct 组件的链表  task list
  
  进程创建:
    Init(kernel创建)
      父子关系
        进程:都由其父进程创建
           fork()  clone()
      进程优先级:
        0-139
          1-99:实时优先级(数字越大优先级越高)
          100-139:静态优先级(用户可调度,数字小优先级越高)
        
        nice值  -20,19

    进程内存
        Page Frame  叶框  存储页面数据
            存储Page
        MMU:Memory manager unit
    IPC  :inter process communication 进程间通信
      如果在同一主机上
        signal
        shm: shared memeory
        semerphor

      不同主机上:
        rpc:remote procecure call 远程过程调用
        socket:  
    Linux内核:抢占式多任务
        进程类型
            守护进程:daemon,在系统引导过程中启动的进程,跟终端无关
            前台进程:跟终端相关,通过终端启动的进程

        进程状态:running
        就绪态:ready
        睡眠态:
            可中断:interruptable 
            不可中断:uninterruptable 
        停止态:暂停于内存中,不会被调度,除非手动启动,stopped
        僵死态:zombie

        进程的分类:
        CPU-Bound  
        IO-Bound  (一般交互式的为IO密集型)

        《Linux内核设计与实现》  《深入理解Linux内核》


Linux进程管理


pstree  显示

ps  a 与终端无关进程
    x与终端有关的进程
    u以用户为中心组织进程状态信息显示

其中

ps aux
    VSZ 虚拟内存集
    RSS 常驻内存集
    STAT  状态
        R  running
        S  可中断睡眠
        D  不可中断睡眠
        T  stopped
        Z  zombie

        +  前台进程
        l  多线程进程
        N  低优先级进程
        <  高优先级进程
        s  session leader 
    START 启动时间
    TIME  运行占据CPU的累计时长
    COMMAND  那个命令运行的此进程


ps -e 显示所有进程
    -f显示完整信息的进程信息

ps -ef  

UID 属主
PID  进程号
PPID  父进程的进程号
C 运行在cpu相关编号
STIME  开始时间


ps -eFH  以进程层级格式显示进程相关信息


-F  显示完整格式的进程信息
-H  以层级格式显示进程相关信息


ps axZ  显示安全上下文

ps -U  root

ps -eo pid,tid,class等
ps  axo  pid,psr,command  |head


ni  优先级nice
pri  优先级
psr CPU processor
rtprio  实时优先级

pgrep,pkill


-U  uid:有效用户
-u  uid:实际用户
-t terminal:与指定终端相关的进程
-l  显示进程名
-a 显示完整格式的进程名
-P pid 显示父进程为此处指定的进程的进程列表


pidof 根据进程名获取pid

top命令

排序
    P  cpu百分比
    M  内存百分比
    T  累计占据cpu时长

    首部信息显示:
    uptime信息  l命令
    tasks及CPU信息:t命令
        cpu分别显示:l(数字)
    memory信息: m命令
    
    退出命令q
    
    s:修改刷新时间间隔
    终止指定进程:k
    top -d #  指定刷新时间间隔,默认为3秒
    -b  以批次方式
    -n  #  显示多少批次


补充性的工具htop
    -d # 指定延时时间
    -u  username  仅显示指定用户的进程
    -s COLOMN  以指定字段进行排序

    s 跟踪选定进程的系统调用
    l 显示选定进程打开的文件列表
    a 将指定的进程绑定至某指定CPU核心
    t  显示进程树

        Linux基础
    CPU   timeslice
    Memory  线性地址空间
    I/O: 
       分时复用技术(基于时间切割)

vmstat 虚拟机的状态
    procs
    r 等待运行进程的个数
    b 处于不可中断睡眠态的进程个数:(被阻塞的队列的长度)
    memory
        swpd 交换内存的使用总量
        free 空闲物理内存总量
        buffer 用于buffer的内存总量
        cache 用于cache的内存总量
    swap
        si 数据进入swap中的数据速率(kb/s)
        so 数据离开swap中的数据速率(kb/s)
    io
        bi 从块设备读入数据到系统的速率(kb/s)
        bo 保存数据至块设备的速率
    system
        in  interrupts 中断速率
        cs  context switch 进程切换速率
    cpu
        us  
        sy  
        id  
        wa  
        st  


    -s  显示内存的统计数据

pmap  报告进程内存内存

    -x  显示详细格式的信息
    
    另外一种实现
        # cat  /proc/PID/maps
glances命令

    -b 以字节为单位,来显示网卡数据速率
    -d 关闭磁盘IO模块
    -f /path/to/smfile  设置输出文件的位置及其格式
    -o {HTML|CSV} 输出格式
    -m 禁用mount模块
    -n 禁用网络模块
    -t # 延迟时间间隔
    -1 这里是(数字一)每个CPU相关数据单独显示
    
    C/S模式下运行glances命令
        服务模式
            glances -s -B IPADDR
            IPADDR指明监听于本机哪个地址
        客户端模式
            glances -c IPADDR
            IPADDR 要连入的服务器端地址


dstat 是vmstat的替换工具,系统自带的工具,但是默认不安装

    -c 显示cpu相关信息
        -C #,#,...total  指定多个cpu
    -d  显示disk相关信息
        -D total,sda,sdb
    -g  显示page相关
    
    -m 与内存相关
    -n  与网络相关
    -p 与进程相关
    -r 显示io请求相关
    -s 显示swapped相关

    --tcp    
    --udp
    --raw
    --socket  等于上面三个
    --unix

    
    --ipc  进程间通信的相关统计数据
    
    --top-cpu  显示最占用CPU的进程
    --top-io    最IO
    --top-mem    最内存
    --top-lantency     延迟最大的进程


kill命令
    kill -l
    man 7 signal


常用信号
1:sighup不用关进程而重读配置文件
2  sigint终止运行的进程  ctrl+c
9  sigkill杀死正在运行的进程
15  sigterm终止正在运行的进程
18 sigcont
19 sigstop

kill [-signal] pid

终止名称下的所有进程
killall -15 httpd


运行到后台,但是未必与终端无关
1 ctrl+z
2 COMMAND &  

如果要剥离与终端的关系
nohup COMMAND  &


jobs查看作业

作业控制
fg  [[%]JOB_NUM] 默认调回带+的作业到前台

bg  [[%]JOB_NUM] 让送往后台的作业在后台继续运行

kill  [%JOB_NUM] 终止指定的作业


调整优先级

 nice,renice

renice [-n]  priority  pid...


查看  ps axo pid,comm,ni


其余命令  sar  tsar  iostat  iftop