当前位置: 首页 > news >正文

服务器记录所有用户docker操作,监控删除容器/镜像的人

文章目录

  • 使用场景
  • 安装auditd
  • 添加docker审计规则
  • 设置监控日志大小与定期清除
  • 查询 Docker 操作日志
    • 查看所有用户,所有操作日志
    • 查看特定用户的 Docker 操作
    • 查看所有用户删除容器/镜像日志
    • 过滤特定时间范围内日志

使用场景

多人使用的服务器,使用的docker 容器或镜像被其他人删除,需要找到删除的人

查找方法:安装使用auditd工具,并配置规则记录所有用户的docker操作

auditd 是 Linux 审计守护进程(Audit Daemon),用于记录系统活动和安全事件。它是 Linux 内核审计子系统的一部分,帮助系统管理员跟踪关键系统事件、访问控制、用户活动等,从而增强系统安全性和合规性。

主要功能

  • 事件记录:记录系统调用(如文件访问、网络操作)以及用户、进程和权限相关的活动。
  • 安全审计规则:系统管理员可以定义规则,指定要审计的事件,比如监控特定文件或目录的访问。
  • 详细的审计日志:审计事件被存储在 /var/log/audit/audit.log 文件中,提供详细的信息,如时间戳、用户、进程ID、操作类型、结果(成功/失败)等。
  • 实时监控:可以使用工具(如 ausearch 或 auditctl)实时监控和查询审计日志。
  • 用户管理审计:监控用户登录、登出、权限更改等敏感操作。
  • 文件完整性监控:结合 auditd 和 audit rules,可以监控重要文件的访问、修改或删除操作。

相关工具

  • auditctl:管理和配置审计规则。
  • ausearch:搜索审计日志中的特定事件。
  • aureport:生成审计报告的工具。
  • aulast:显示用户登录和登出信息。
  • autrace:用于跟踪特定命令的审计事件。

常见用途

  • 合规性审计
  • 确保系统符合安全标准,如 PCI DSS、HIPAA 等。
  • 入侵检测
  • 监控可疑活动,如未经授权的访问或权限提升。
  • 系统故障排除
  • 调查安全事故或操作系统问题

配置文件

  • 主配置文件:/etc/audit/auditd.conf
  • 规则配置:/etc/audit/rules.d/

安装auditd

sudo apt-get install auditd
sudo systemctl enable auditd
sudo systemctl start auditd

添加docker审计规则

Docker 的常用二进制文件路径包括:

  • Docker CLI:/usr/bin/docker
  • Docker 服务:/usr/bin/dockerd

编辑规则文件

sudo vi /etc/audit/rules.d/audit.rules

文件最后添加以下内容:

# 监控 Docker 命令执行
-a always,exit -F path=/usr/bin/docker -F perm=x -F key=docker_actions# 监控 Docker 配置文件
-w /etc/docker/ -p wa -k docker_config

监控 Docker 命令执行解释

  • -a always,exit:在系统调用退出时触发规则。
  • -F path=/usr/bin/docker:指定要监控的路径。
  • -F perm=x:监控执行权限(执行 Docker 命令)。
  • -F key=docker_actions:为此规则设置一个键值(方便日志查询)。

监控 Docker 配置文件解释

  • -w:监控指定文件或目录。
  • -p wa:监控写入和属性更改。
  • -k docker_config:设置键值。

重新加载审计规则

sudo augenrules --load

设置监控日志大小与定期清除

避免日志记录大量操作,文件大小过大,可以设置日志轮替(Log Rotation)
默认日志存储位置:/var/log/audit/audit.log
编辑配置文件

sudo vi /etc/audit/auditd.conf

查看并修改以下配置:

max_log_file = 100          # 每个日志文件最大100MB
num_logs = 5                # 保留5个旧日志文件
max_log_file_action = ROTATE  # 超过大小时轮替

效果

  • 当日志文件达到 100MB 时,auditd 会创建一个新的日志文件。
  • 系统最多保留 5 个旧日志文件(audit.log.1, audit.log.2, …),超过的将被删除。

重新加载配置

sudo service auditd reload
# 或者
sudo systemctl restart auditd

查询 Docker 操作日志

查看所有用户,所有操作日志

sudo ausearch -k docker_actions

输出结果中的单个样例如下

----
time->Wed Nov 01 18:59:24 2024  # 命令执行时间
type=PROCTITLE msg=audit(1732695555.363:1213): proctitle=646F636B6572007073002D61
type=PATH msg=audit(1732695555.363:1213): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=217841670 dev=08:12 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(1732695555.363:1213): item=0 name="/usr/bin/docker" inode=79708287 dev=08:12 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1732695555.363:1213): cwd="/home/haha/test"   # 在哪个目录执行的命令
type=EXECVE msg=audit(1732695555.363:1213): argc=3 a0="docker" a1="ps" a2="-a"   # 执行的具体命令
# 执行命令的用户
type=SYSCALL msg=audit(1732695555.363:1213): arch=c000003e syscall=59 success=yes exit=0 a0=56353bdf70c0 a1=56353bec7ba0 a2=56353be1f680 a3=8 items=2 ppid=78046 pid=78448 auid=1014 uid=1014 gid=1014 euid=1014 suid=1014 fsuid=1014 egid=1014 sgid=1014 fsgid=1014 tty=pts24 ses=15298 comm="docker" exe="/usr/bin/docker" key="docker_actions"
----

在 audit.log 文件中,每条审计记录都会包含用户相关信息,比如:

  • uid:用户ID
  • auid:审计用户ID(通常是登录用户的ID,即使提权后也保持不变)
  • euid:有效用户ID(通常是执行操作时的用户)
  • ses:会话ID

比如在上面的输出中uid=1014,即为用于ID。为了知道该用户ID对应的用户名,使用如下命令即可

cat /etc/group | grep 1014

查看特定用户的 Docker 操作

sudo ausearch -k docker_actions -ui <用户ID>

查看所有用户删除容器/镜像日志

sudo ausearch -k docker_actions | grep -E 'a1="rm"|a1="rmi"'  -A 1

命令解释:

  • -E ‘docker.*(rm|rmi)’:正则表达式,匹配包含 docker 和 rm 或 rmi 的行。
  • -A 1:(可选参数)表示包括匹配行和紧接的下一行。由于检索到的日志包含大量内容,操作用户id出现在匹配行的下一行。因此只需要显示一行

过滤特定时间范围内日志

sudo ausearch -k docker_actions -ts yesterday -te now

相关文章:

服务器记录所有用户docker操作,监控删除容器/镜像的人

文章目录 使用场景安装auditd添加docker审计规则设置监控日志大小与定期清除查询 Docker 操作日志查看所有用户&#xff0c;所有操作日志查看特定用户的 Docker 操作查看所有用户删除容器/镜像日志过滤特定时间范围内日志 使用场景 多人使用的服务器&#xff0c;使用的docker …...

电磁继电器

它的控制原理很简单&#xff0c;当我们给它的线圈接电&#xff0c;这个线圈就有了磁性&#xff0c;它上面的衔铁就会被吸引&#xff0c;这样小灯泡就会点亮 继电器于MOS管的差别在于&#xff0c;继电器可以很轻松的胜任高电压、大电流的场合 我们从外壳上可以看到 30VDC&#x…...

Hadoop生态圈框架部署(九)- Hive部署

文章目录 前言一、Hive部署&#xff08;手动部署&#xff09;下载Hive1. 上传安装包2. 解压Hive安装包2.1 解压2.2 重命名2.3 解决guava冲突 3. 配置Hive3.1 配置Hive环境变量3.2 修改 hive-site.xml 配置文件3.3 配置MySQL驱动包3.3.1 下在MySQL驱动包3.3.2 上传MySQL驱动包3.…...

thread_id_key != 0x7777(`fibers` 包与 Node.js 16 及以上版本存在兼容性问题)

文章目录 fibers4.0.3 与 node-v16.13.2-win-x64 的兼容性1. Node.js 版本兼容性2. 特定包版本 (fibers4.0.3)3. 解决方案和替代方案 结论解决方案 运行yarn serve 启动项目&#xff0c;就会弹出上述错误。 fibers4.0.3 与 node-v16.13.2-win-x64 的兼容性 要判断 fibers4.0.3…...

LabVIEW实现UDP通信

目录 1、UDP通信原理 2、硬件环境部署 3、云端环境部署 4、UDP通信函数 5、程序架构 6、前面板设计 7、程序框图设计 8、测试验证 本专栏以LabVIEW为开发平台&#xff0c;讲解物联网通信组网原理与开发方法&#xff0c;覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合…...

hive的存储格式

1&#xff09; 四种存储格式 hive的存储格式分为两大类&#xff1a;一类纯文本文件&#xff0c;一类是二进制文件存储。 Hive支持的存储数据的格式主要有&#xff1a;TEXTFILE、SEQUENCEFILE、ORC、PARQUET 第一类&#xff1a;纯文本文件存储 textfile: 纯文本文件存储格式…...

设置Mysql5.6允许外网访问

设置mysql用户支持外网访问步骤&#xff1a; 需要使用root权限登录mysql&#xff0c;更新mysql.user表&#xff0c;设置指定用户的Host字段为%&#xff0c;默认一般为127.0.0.1或者localhost。 1.登录数据库 1 mysql -u root -p 输入密码 1 mysql> use mysql; 2.查询hos…...

【智能制造-44】装配仿真

装配仿真包含以下功能模块&#xff1a; 零件建模与导入模块 功能描述&#xff1a; 能够创建简单的几何零件&#xff0c;如立方体、圆柱体、球体等基本形状。这对于一些标准件或者形状规则的零件来说&#xff0c;可以直接在装配仿真软件中生成&#xff0c;方便快捷。 支持多种…...

如何借助AI生成PPT,让创作轻松又高效

PPT是现代职场中不可或缺的表达工具&#xff0c;但同时也可能是令人抓狂的时间杀手。几页幻灯片的制作&#xff0c;常常需要花费数小时调整字体、配色与排版。AI的飞速发展为我们带来了革新——AI生成PPT的技术不仅让制作流程大大简化&#xff0c;还重新定义了效率与创意的关系…...

【工具变量】城市供应链创新试点数据(2007-2023年)

一、测算方式&#xff1a;参考C刊《经济管理》沈坤荣和乔刚老师&#xff08;2024&#xff09;的做法&#xff0c;使用“供应链创新与应用试点”的政策虚拟变量&#xff08;TreatPost&#xff09;表征。若样本城市为试点城市&#xff0c;则赋值为 1&#xff0c;否则为 0&#xf…...

线程的生命周期

计时等待&#xff08;Timed Waiting&#xff09;状态&#xff1a;这是等待状态的一种特殊情况&#xff0c;当线程调用带有超时参数的等待方法&#xff08;如Thread.sleep(long millis)、Object.wait(long timeout)等&#xff09;时会进入计时等待状态。例如&#xff0c;Thread.…...

Python入门(18)--实战项目

机器学习实战项目指南 &#x1f916; 项目概览 &#x1f310; 本项目是一个综合性的机器学习入门实战指南&#xff0c;通过实际案例展示机器学习项目的完整生命周期&#xff0c;包括数据处理、模型训练、评估和部署等关键环节。 1. 系统架构 &#x1f3d7;️ 1.1 核心组件 …...

DRM(数字权限管理技术)防截屏录屏----视频转hls流加密、web解密播放

提示&#xff1a;视频转hls流加密、web解密播放 需求&#xff1a;研究视频截屏时&#xff0c;播放器变黑&#xff0c;所以先研究的视频转hls流加密 文章目录 [TOC](文章目录) 前言一、工具ffmpeg、openssl二、后端nodeexpress三、web播放四、文档总结 前言 ‌HLS流媒体协议‌&a…...

在linux上部署Tomcat方法

上传jdk,配置运行环境 解压jdk安装包 将jdk文件夹移动到/usr/local/jdk目录下 配置java环境变量vim /etc/profile 使环境变量生效&#xff0c;并且查看是否配置成功 安装tomcat&#xff0c;上传tomcat软件包 解压tomcat软件包 将tomcat解压文件移动到/usr/local/tomcat/下 启动…...

Git 使用问题与解决方案

Git 使用问题与解决方案 目录 常见错误及原因分析检查当前使用 HTTPS 或 SSH如何切换远程仓库到 SSHSSH 密钥的配置与验证错误解决步骤总结与参考 1. 常见错误及原因分析 错误提示 fatal: unable to access https://github.com/username/repository.git/: Failed to connect…...

LeetCode 热题 100_最大子数组和(13_53)(贪心算法 ||动态规划)

LeetCode 热题 100_最大子数组和&#xff08;13_53&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;代码实现&#xff08;思路二&#xff08;贪心算法 ||动态规划&#xff09;&#xff09;&#xff1a; 题目描述&#xff1a; …...

Z2400023基于Java+Servlet+jsp+mysql的酒店管理系统的设计与实现 源码 调试 文档

酒店管理系统的设计与实现 1.摘要2.主要功能3. 项目技术栈运行环境 4.系统界面截图5.源码获取 1.摘要 本文介绍了一个基于Java的酒店管理系统&#xff0c;该系统采用Servlet、JSP、JDBC以及c3p0等技术构建&#xff0c;为酒店提供了一个全面的管理平台。该系统不仅适合酒店进行…...

T3 TensorFlow入门实战——天气识别

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習紀錄博客&#x1f356; 原作者&#xff1a;K同学啊 | 接輔導、項目定制 一、前期准备 1. 导入数据 # Import the required libraries import numpy as np import os,PIL,pathlib import matplotlib.pyplot as …...

vue3 多种方式接受props,定义ref,reactive

定义props 1 第一种 interface AddType { dialogStudyVisible: boolean; } const props defineProps<AddType>(); 第二种 // const props defineProps({ // dialogStudyVisible:{ // type:Boolean, // default:false // } // }) 第三种 // const …...

15:00面试,15:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到9月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

vue3 数字滚动插件vue3-count-to

安装 npm i vue3-count-to -S 引入 import { CountTo } from vue3-count-to 使用 <countTo :startVal"0" :endVal"57.63" :decimals"0" :duration"3000"></countTo> 所有配置...

Android 手写签名板

文章目录 Android 手写签名板概述效果代码实现源码下载 Android 手写签名板 概述 手写签名板功能&#xff0c;支持图片保存、支持去除空白区域。 效果 生成图片效果&#xff1a; 代码实现 定义属性&#xff1a; <declare-styleable name"SignatureView">&…...

Java基础夯实——2.9 多线程如何共享数据

在 Java 多线程编程中&#xff0c;共享数据通过以下几种方式实现&#xff1a; 1. 使用共享对象 多个线程可以通过引用同一个对象来实现数据共享。例如&#xff1a; class SharedData {private int count;public synchronized void increment() {count;}public synchronized …...

京准电钟:NTP网络校时服务器从入门到精准

京准电钟&#xff1a;NTP网络校时服务器从入门到精准 京准电钟&#xff1a;NTP网络校时服务器从入门到精准 1.前言 由计算机网络系统组成的分布式系统&#xff0c;若想协调一致进行&#xff1a;IT行业的“整点开拍”、“秒杀”、“Leader选举”&#xff0c;通信行业的“同步…...

【C++习题】15.滑动窗口_串联所有单词的子串

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 30. 串联所有单词的子串 题目描述&#xff1a; 解法 滑动窗口哈希表 这题和第14题不同的是&#xff1a; 哈希表不同&#xff1a;hash<string,int>left与right指…...

【好玩的经典游戏】Docker环境下部署贪吃蛇网页小游戏(二)

【好玩的经典游戏】Docker环境下部署贪吃蛇网页小游戏(二) 一、贪吃蛇小游戏介绍1.1 小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.3 检查Docker版本3.4 检查docker compose 版本四、下载容器镜像五、部…...

《Python Web 抓取实战:豆瓣电影 Top 250 数据抓取与分析》

引言 在信息爆炸的时代&#xff0c;掌握数据获取的能力显得尤为重要。通过数据抓取&#xff0c;我们可以从互联网上获取大量有价值的信息&#xff0c;并进行深入分析。本文将介绍如何使用 Python 进行 Web 抓取&#xff0c;以豆瓣电影 Top 250 为例&#xff0c;展示数据抓取的…...

Qt-系统相关(2)多线程网络

Qt多线程 在 Qt 中&#xff0c;多线程的处理⼀般是通过 QThread类 来实现。 QThread 代表⼀个在应⽤程序中可以独⽴控制的线程&#xff0c;也可以和进程中的其他线程共享数据。 QThread 对象管理程序中的⼀个控制线程。 QThread 常⽤ API&#xff1a; 使用线程 关于创建线程…...

代码随想录算法训练营第五十九天|Day59 图论

Bellman_ford 算法精讲 https://www.programmercarl.com/kamacoder/0094.%E5%9F%8E%E5%B8%82%E9%97%B4%E8%B4%A7%E7%89%A9%E8%BF%90%E8%BE%93I.html 思路 #include <stdio.h> #include <stdlib.h> #include <limits.h>#define MAXM 10000 // 假设最大边数为1…...

SpringBoot集成ESAPI

官网地址&#xff1a;https://github.com/ESAPI/esapi-java-legacy 一、POM依赖 <dependency><groupId>org.owasp.esapi</groupId><artifactId>esapi</artifactId><version>2.6.0.0</version> <!-- Preferably the latest ver…...

Git 进程占用报错-解决方案

背景 大仓库&#xff0c;由于开发者分支较多&#xff0c;我们在使用 git pull 或 git push 等命令时&#xff08;与远端仓库交互的命令&#xff09;&#xff0c;不知之前配置了什么&#xff0c;我的电脑会必现以下报错&#xff08;有非常长一大串报错-不同分支的git进程占用报…...

python怎么设置静态变量

众所周知&#xff0c;Python语言并不支持静态变量&#xff0c;比如下面这样一个应用场景&#xff1a; void foo() {static int count 0;count ; } 在Python中无法自然实现这个功能。换个角度来看这个问题&#xff0c;函数中的静态变量其实可以看做是函数的一个内部变量&#x…...

【H2O2|全栈】Node.js(1)

目录 前言 开篇语 准备工作 ES6导入导出 导入 有名导出 匿名导出 Node概念 Node导入导出 导入 有名导出 匿名导出 Node常用模块 path模块 和路径有关的全局变量 常见方法 导入方法 fs模块 常见方法 导入方法 结束语 前言 开篇语 本系列博客主要分享Java…...

SJYP 24冬季系列 FROZEN CHARISMA发布

近日&#xff0c;女装品牌SJYP 2024年冬季系列——FROZEN CHARISMA已正式发布&#xff0c;展现了更加干练的法式风格。此次新品发布不仅延续了SJYP一贯的强烈设计风格和个性时尚&#xff0c;更融入了法式风情的干练元素&#xff0c;为消费者带来了一场视觉与穿着的双重盛宴。  …...

嵌入式硬件实战基础篇(四)多路直流稳压电源

设计一个多路直流稳压电源 要求设计制作一个多路输出直流稳压电源,可将220 V / 5 0HZ交流电转换为5路直流稳压输出。具体要求&#xff1a; 输出直流电压 12V&#xff0c; 5V;和一路输出3- 15V连续可调直流稳压电源: 输出电流Iom500mA; 稳压系数 Sr≤0.05;...

力扣_876. 链表的中间结点

力扣_876. 链表的中间结点 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表只有一个中间结点&#xff0c;值为…...

shell脚本命令(一)

shell脚本命令&#xff08;一&#xff09; 一、Shell 基础知识 Shell的基本概念 定义&#xff1a; Shell 是操作系统中的命令解释器&#xff0c;位于用户与操作系统内核之间。它接收并解释用户输入的命令&#xff0c;将任务传递给操作系统内核执行&#xff0c;然后将执行结果…...

一文理解多模态大语言模型——上

作者&#xff1a;Sebastian Raschka 博士&#xff0c; 翻译&#xff1a;张晶&#xff0c;Linux Fundation APAC Open Source Evangelist 编者按&#xff1a;本文并不是逐字逐句翻译&#xff0c;而是以更有利于中文读者理解的目标&#xff0c;做了删减、重构和意译&#xff0c…...

[代码随想录Day24打卡] 93.复原IP地址 78.子集 90.子集II

93.复原IP地址 一个合法的IP地址是什么样的&#xff1a; 有3个’.分割得到4个数&#xff0c;每个数第一个数不能是0&#xff0c;不能含有非法字符&#xff0c;不能大于255。 这个是否属于合法IP相当于一个分割问题&#xff0c;把一串字符串分割成4部分&#xff0c;分别判断每…...

去哪儿大数据面试题及参考答案

Hadoop 工作原理是什么? Hadoop 是一个开源的分布式计算框架,主要由 HDFS(Hadoop 分布式文件系统)和 MapReduce 计算模型两部分组成 。 HDFS 工作原理 HDFS 采用主从架构,有一个 NameNode 和多个 DataNode。NameNode 负责管理文件系统的命名空间,维护文件和目录的元数据信…...

controller中的参数注解@Param @RequestParam和@RequestBody的不同

现在controller中有个方法&#xff1a;&#xff08;LoginUserRequest是一个用户类对象&#xff09; PostMapping("/test/phone")public Result validPhone(LoginUserRequest loginUserRequest) {return Result.success(loginUserRequest);}现在讨论Param("login…...

排序算法思维导图

冒泡排序 def bubble_sort(alist):j 0while j < len(alist):i 0while i < len(alist) - 1:if alist[i] > alist[i1]:alist[i], alist[i1] alist[i1], alist[i]i 1j 1li [34,556,235,7,56,45,63,35,23,4,875] bubble_sort(li) print(li) 选择排序 def select_s…...

ZYNQ试用于哪些场景

ZYNQ系列SoC&#xff08;System on Chip&#xff09;由于其独特的处理器与FPGA&#xff08;可编程逻辑&#xff09;集成设计&#xff0c;非常适合应用于多种需要高性能、灵活性和低功耗的场景。 以下是一些ZYNQ特别适用的场景&#xff1a; 嵌入式系统&#xff1a;ZYNQ的ARM处理…...

【03】Selenium+Python 八种定位元素方法

操作元素&#xff0c;需要先查找定位到对应的元素。 查找单个元素&#xff1a;driver.find_element() 返回是一个web element 对象 查找多个元素&#xff1a;driver.find_elements() 返回是一个list对象 By 是 Selenium 中一个非常重要的类&#xff0c;用于定位网页元素。 使…...

Java 自动资源管理(Auto Resource Management)详解

Java 自动资源管理&#xff08;Auto Resource Management&#xff09;详解 在Java编程中&#xff0c;资源的正确管理是开发过程中一个非常重要的环节。如果资源&#xff08;如文件、数据库连接、网络连接等&#xff09;未被正确释放&#xff0c;可能会导致资源泄漏&#xff0c…...

IT运维专家给年轻人一些职业上的建议

运维工作在现代企业中是非常重要的一环,保证系统的稳定性、可用性以及安全性对企业的正常运营至关重要。以下是我给年轻人的一些职业发展建议,希望能够帮助你们在运维领域找到方向并取得成功。 1. 夯实基础,扎实技术功底 精通操作系统与网络:运维工作需要深入理解操作系统…...

视图查询中投影裁剪规则的原理和解析 | OceanBase 查询优化

背景 在SQL查询中使用视图查询时&#xff0c;执行中可能会产生的较多的中间结果集。为了优化这类查询的执行&#xff0c;OceanBase 引入了投影裁剪规则。能够识别出父查询中未实际使用的列&#xff0c;并将这些列从视图查询的select列表中剔除&#xff0c;进而提升整体查询的性…...

利用Nginx在服务器上部署你的第一个静态页面

文章目录 序言Nginx常用功能1. 反向代理2.负载均衡轮询加权轮询IP_Hash Nginx配置文件结构安装并部署你的静态网页1. 安装(懒人直接看3)2.查看配置文件3.编写或放入自己的静态页面文件 序言 首先我们先来认识一下什么是Nginx源码 官网 Nginx (engine x) 是一个高性能的HTTP和…...

【拥抱AI】RAG如何通过分析反馈、识别问题来提高命中率

分析用户反馈并识别问题是持续优化RAG系统的重要步骤。这不仅可以帮助你了解系统的当前表现&#xff0c;还可以指导未来的改进方向。直接进入正题&#xff0c; 1. 收集用户反馈 方法 问卷调查&#xff1a;设计问卷&#xff0c;让用户填写他们对系统输出的满意度、易用性等方…...

内核模块签名验证

安装内核模块报错 今天在调试地平线 J6 板子时&#xff0c;安装自己编译的内核模块报错 roothobot:/tmp# insmod hobot_eth_j6.ko insmod: ERROR: could not insert module hobot_eth_j6.ko: Key was rejected by service前两天刚在 x86 电脑上解决过这个问题&#xff0c;参…...