• Linux进程管理


    linux进程管理
    进程是:运行的程序
    资源的分配单元:内存资源、CPU资源、I/O资源
    内核功能:进程管理
    内核是通过资源分配来管理进程的

    CPU资源是怎么分配的?
    切割时间片,时间片轮转

    进程间的切换:保存现场,尤其是指令指针,即下一条指令所在的地址

    保存现场:
    保存进程的元数据
    进程的元数据:描述进程的属性
    由内核追踪进程状态:保存现场即是将上一个进程的状态保存到内核中去
    内核是一种特殊的数据结构存储进程的状态,即task_struct

    恢复现场:
    根据优先级来挑选

    进程优先级(用于挑选下一个要运行的进程)
    优先级:0-139
    0-99:实时优先级 数值越大,优先级越高
    100-139:静态优先级 数值越小,优先级越高
    nice值,调整用户空间的优先值,范围为-20 19,对应的是100-139

    不可能遍历所有的优先级,因为遍历也同样消耗CPU,而是逐个遍历140个优先级队列
    进程间的切换是需要付出代价的

    进程的状态
    不可中断睡眠
    僵死态:僵尸进程,定期扫描,并清除

    进程永远是由父进程启动的
    但第一个进程init是由内核创建的,是所有进程的父进程


    进程间的通信:IPC
    同一台主机间的进程通信:
    信号: signal
    共享内存:shm
    旗语:semerphor
    不同主机间的进程通信:
    rps:远程过程调用(nfs就是通过这种方式通信的)
    socket:套接字

    pstree: 显示当前linux系统的命令树
    ps:显示进程的状态
    ps 选项
    选项有两种风格,分别为带不带-

    选项的常用组合:
    ps aux 以用户为中心显示和终端有关和无关的所有进程
    a 显示和终端相关的所有进程的信息
    x 显示和终端无关的所有进程的信息
    u 以用户为中心显示进程的状态
    ps a
    ps x
    TIME: 为占用cpu的时间总和
    ps ax
    ps -ax
    字段含义:
    %CPU 执行命令的瞬间,cpu的使用率
    %MEM 执行命令的瞬间,mem的使用率
    VSZ:虚拟内存集
    RSS:常驻内存集,即不允许交换出内存的大小
    STAT: 进程的状态
    R: running 运行态
    S: 可中断睡眠态
    D: 不可中断睡眠态
    T: 停止态
    Z: 僵尸态
    s: 表示该进程为领导者进程,即prtree打印出的第一个进程
    +:表示该进程为前台进程
    l: 表示该进程为多线程进程
    N: 低优先级进程
    <: 高优先级进程
    []:表示这是一个内核线程

    ps -ef
    -e: 显示所有进程
    -f: 显示完整格式

    字段:
    PPID: 为进程的父进程

    ps -eFH
    -F: 显示额外的信息
    -H: 显示进程的层次结构

    字段:
    STIME: 开始时间

    pgrep 进程过滤工具
    -U uid 显示指定用户启动的进程
    -t 终端 显示终端自己的pid
    -l 显示进程pid的同时显示进程的名称
    id apache
    pgrep -U 48
    pgrep -t tty1
    pgrep -lU 48 48为-U的参数


    pidof 根据进程名称获取该进程的pid号
    pidof 进程名
    pidof httpd

    top 动态查看进程信息,且支持交互式操作
    默认CPU使用率从高到低排序
    shift+M: 内存使用率排序
    shift+T: CPU累计时间占用率
    shift+P: CPU累计时间占用率
    1:单独显示每个CPU核心的负载情况

    vmstat 知道即可

    消息:signal 同一台主机间的进程通信

    kill -l 列出进程间通信的种类

    常用的signal:
    1 SIGHUP 让程序重读配置文件,而无需重启进程
    2 SIGINT 打断正在运行的进程 ctrl+c
    9 SIGKILL 强制杀死一个正在运行的进程
    15 SIGTERM 优雅杀死一个正在运行的进程
    18 SIGCONT 将停止态的进程运行起来
    19 SIGSTOP 将一个进程转变为停止态 ctrl+z

    kill 手动向某个进程发送除SIGINT之外的其他信号
    kill -信号 PID
    信号的格式有:
    -1
    -SIGHUP
    -HUP
    kill PID 默认传递-15信号

    killall 手动向某些进程发送信号
    killall -信号 进程名称
    killall httpd 默认传递-15信号

    fg 将一个停止态的进程运行起来

  • 相关阅读:
    5-把自己的系统刷到开发板
    4-构建网络文件系统
    ipc
    advio
    pthread
    signal
    process_control
    python3.6+selenium_Testsuits测试套件
    python3.6+selenium_多个测试用例
    jQuery的九类选择器
  • 原文地址:https://www.cnblogs.com/yajing-zh/p/4861705.html
Copyright © 2020-2023  润新知