【Ansible自动化运维工具 1】Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)
Ansible常用模块
- 一、Ansible
- 1.1 简介
- 1.2 工作原理
- 1.3 Ansible的特性
- 1.3.1 特性一:Agentless,即无Agent的存在
- 1.3.2 特性二:幂等性
- 1.4 Ansible的基本组件
- 二、Ansible环境安装部署
- 2.1 安装ansible
- 2.2 查看基本信息
- 2.3 配置远程主机清单
- 三、Ansible的模块(很重要)
- 3.1 ansible的命令格式
- 3.2 Command模块
- 3.2.1 基本格式和常用参数
- 3.2.2 举个例子
- 3.3 shell模块
- 3.3.1 基本格式和常用参数
- 3.3.2 举个例子
- 3.4 cron模块
- 3.4.1 基本格式和常用参数
- 3.4.2 举个例子
- 3.5 user模块
- 3.5.1 基本格式和常用参数
- 3.5.2 举个例子
- 3.6 group模块
- 3.6.1 常用参数
- 3.6.2 举个例子
- 3.7 copy模块 (面试常问)
- 3.7.1 基本格式和常用参数
- 3.7.2 举个例子
- 3.8 file模块
- 3.8.1 常用参数
- 3.8.2 举个例子
- 3.9 hostname模块
- 3.10 ping模块
- 3.11 yum 模块
- 3.12 service/systemd 模块
- 3.13 script 模块
- 3.14 mount 模块
- 3.15 archive 模块
- 3.15.1 常用参数
- 3.15.2 举个例子
- 3.16 unarchive 模块
- 3.16.1 常用参数
- 3.16.2 举个例子
- 3.17 replace 模块
- 3.17.1 常用参数
- 3.17.2 举个例子
- 3.18 setup 模块
一、Ansible
1.1 简介
Ansible是自动化运维工具,能实现跨主机对应用编排管理部署。
Ansible能批量配置、部署、管理上千台主机,是应用级别的跨主机编排工具。
比如以前需要切换到每个主机上执行的一或多个操作,使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作。
1.2 工作原理
基于模块工作,通过模块实现在被控制节点上执行相应的命令操作。
1.3 Ansible的特性
1.3.1 特性一:Agentless,即无Agent的存在
1)无客户端agent存在,不需要在被控制的节点上安装额外的客户端应用;
2)通过ssh协议与被控制节点通信。
1.3.2 特性二:幂等性
所谓幂等性,指的是无论执行多少次同样的运算,结果都是相同的,即一条命令,任意多次执行所产生的影响均与一次执行的影响相同。
Ansible的很多模块具有幂等性,如果多次模块操作的状态没有发生改变,则不会重复执行。
1.4 Ansible的基本组件
-
Inventory:Ansible管理的主机清单
/etc/anaible/hosts
,需要管理的服务清单 ; -
Modules:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义;
-
Plugins:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用;
-
API:供第三方程序调用的应用程序编程接口。
-
Playbook:基于YAML格式的文件,用于定义和描述一系列任务。
二、Ansible环境安装部署
角色 | IP | 安装工具 |
---|---|---|
管理端 | 192.168.2.100 | ansible |
被管理端1 | 192.168.2.102 | 无需安装 |
被管理端2 | 192.168.2.103 | 无需安装 |
2.1 安装ansible
在管理端安装 ansible。
#先安装 epel 源
yum install -y epel-release #yum安装ansible
yum install -y ansible
#可选操作,修改被管理端的主机名,方便管理区分
hostnamectl set-hostname webserver
hostnamectl set-hostname dbserver
2.2 查看基本信息
ansible --version
#查看ansible 目录结构
tree /etc/ansible├── ansible.cfg #ansible的配置文件,一般无需修改
├── hosts #ansible的主机清单,用于存储需要管理的远程主机的相关信息
└── roles/ #公共角色目录
2.3 配置远程主机清单
cd /etc/ansiblevim hosts
[webservers] #配置组名
192.168.2.102 #组里包含的被管理的主机IP地址或主机名(主机名需要先修改/etc/hosts文件)[dbservers]
192.168.2.103
#配置密钥对验证
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsayum install -y sshpass
sshpass -p '123123' ssh-copy-id -o StrictHostKeyChecking=no root@192.168.2.102
sshpass -p '123123' ssh-copy-id -o StrictHostKeyChecking=no root@192.168.2.103
#免密登录测试,以被管理端1为例
ssh 192.168.2.102
三、Ansible的模块(很重要)
3.1 ansible的命令格式
#ansible命令格式
ansible 组名 -m 模块名 -a '参数'#-a 用于向模块传递参数
#查看当前系统中的ansible模块
ansible-doc -l
#查看特定模块的摘要信息
ansible-doc -s <module_name>
3.2 Command模块
功能:在远程主机执行命令,此为默认模块,可忽略 -m
选项。
注意:此命令不支持 $VARNAME < > | ; & 等,即不支持管道符、重定向符号。
注意:此模块不具有幂等性
3.2.1 基本格式和常用参数
#基本格式
ansible <组名/IP> [-m command] -a '[参数] 命令'
常用参数 | 功能 |
---|---|
chdir | 在远程主机上运行命令前,提前进入目录 |
creates | 判断指定文件是否存在,如果存在,不执行后面的操作 |
removes | 判断指定文件是否存在,如果存在,执行后面的操作 |
3.2.2 举个例子
#指定组/IP执行命令
ansible 192.168.2.102 -m command -a 'date'
ansible webservers -a 'date'
#忽略-m选项,默认使用command格式
#chdir参数
ansible all -m command -a "chdir=/home ls ./"
#creates参数
ansible all -m command -a "creates=/opt/test.txt ls ./"
#removes参数
ansible all -m command -a "removes=/opt/test.txt ls ./"
3.3 shell模块
功能:和command模块类似,在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令。
注意:此模块不具有幂等性
注意:此模块支持管道符号等功能
3.3.1 基本格式和常用参数
ansible <组/IP/all> -m shell -a ' '
常用参数 | 功能 |
---|---|
chdir | 在远程主机上运行命令前,提前进入目录 |
creates | 判断指定文件是否存在,如果存在,不执行后面的操作 |
removes | 判断指定文件是否存在,如果存在,执行后面的操作 |
3.3.2 举个例子
#shell模块能够使用管道符
ansible dbservers -m shell -a "ifconfig | awk 'NR==2 {print \$2}'"
3.4 cron模块
功能:在远程主机定义crontab任务计划。
ansible-doc -s cron #按 q 退出
3.4.1 基本格式和常用参数
#基本格式
ansible <组/IP/all> -m cron -a ' '
常用参数 | 功能 |
---|---|
minute/hour/day/month/weekday | 分/时/日/月/周 |
job | 任务计划要执行的命令 |
name | 任务计划的名称 |
user | 指定计划任务属于哪个用户,默认是root用户 |
state | present表示添加(可以省略),absent表示移除。 |
3.4.2 举个例子
1)周一到周五早八点半和晚八点半 执行 复制/var/log/messages 到 /opt
ansible dbservers -m cron -a 'minute=30 hour="8,20" weekday="1-5" job="/usr/bin/cp -f /var/log/message /opt" name="backup1"'
2)每两个月的5 15 25 执行复制
ansible webservers -m cron -a 'day="5-25/10" month="*/2" job="/usr/bin/cp -f /var/log/message /opt" name="backup1"'5-15/10 #隔十天
3)删除
指定状态为absent就行
ansible webservers -m cron -a 'name="backup1" state=absent'
3.5 user模块
功能:在远程主机管理用户账户
3.5.1 基本格式和常用参数
ansible <组/IP/all> -m user -a ' '
常用参数 | 功能 |
---|---|
name | 用户名,必选参数 |
state=present|absent | 创建账号或者删除账号,present表示创建,absent表示删除 |
system=yes|no | 是否为系统账号 |
uid | 用户uid |
group | 用户基本组 |
groups | 用户所属附加组 |
shell | 默认使用的shell |
create_home=yes|no | 是否创建家目录 |
password | 是否用户的密码,建议使用加密后的字符串 |
remove=yes|no | 当state=absent时,是否删除用户的家目录 |
3.5.2 举个例子
ansible dbservers -m user -a 'name="test01"' #创建用户test01
ansible dbservers -m command -a 'tail -n1 /etc/passwd'
ansible dbservers -m user -a 'name="test01" state=absent' #删除用户test01
ansible dbservers -a 'tail -n1 /etc/passwd'
3.6 group模块
功能:在远程主机进行用户组管理的模块
3.6.1 常用参数
ansible <组/IP/all> -m group -a ' '
name:用户名,必选参数
state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除
system=yes|no:是否为系统账号
gid:组id
3.6.2 举个例子
ansible dbservers -m group -a 'name=mysql gid=306 system=yes' #创建mysql组ansible dbservers -m user -a 'name=test01 uid=306 system=yes group=mysql' #将test01用户添加到mysql组中ansible dbservers -a 'id test01'
3.7 copy模块 (面试常问)
功能:从ansible服务器主控端复制文件到远程主机
注意:src=file 如果是没指明路径,则为当前目录或当前目录下的files目录下的file文件
3.7.1 基本格式和常用参数
#基本格式
ansible < > -m copy -a 'src= dest= [owner= ] [mode=] '
常用参数 | 功能 | 注意事项 |
---|---|---|
src | 指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录 | 如果源是目录则目标也要是目录 |
dest | 指出复制文件的目标及位置,使用绝对路径 | 如果源是目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内容 |
mode | 指出复制时,目标文件的权限 | |
owner | 指出复制时,目标文件的属主 | |
group | 指出复制时,目标文件的属组 | |
content | 指出复制到目标主机上的内容 | 不能与src一起使用 |
3.7.2 举个例子
ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640'
ansible dbservers -a 'ls -l /opt'
ansible dbservers -a 'cat /opt/fstab.bak'
ansible dbservers -m copy -a 'content="helloworld" dest=/opt/hello.txt'
#将helloworld写入/opt/hello.txt文件中
ansible dbservers -a 'cat /opt/hello.txt'
3.8 file模块
功能:在远程主机管理文件属性、创建软链接等
3.8.1 常用参数
#基本格式
ansible < > -m file -a ''
常用参数 | 功能 |
---|---|
path | 指定远程服务器的路径,也可以写成"dest",“name” |
state | 状态,可以将值设定为directory表示创建目录,设定为touch表示创建文件,设定为link表示创建软链接,设定为hard表示创建硬连接,设定为absent表示删除目录文件或链接 |
mode | 文件复制到远程并设定权限,默认file=644,directory=755 |
owner | 文件复制到远程并设定属主,默认为root |
group | 文件复制到远程并设定属组,默认为root |
recurese | 递归修改 |
src | 指的是目标主机上的源文件。与copy模块不同。 |
3.8.2 举个例子
#修改文件的属主属组权限等
ansible dbservers -m file -a 'owner=test01 group=mysql mode=644 path=/opt/fstab.bak'
#软连接 state=link
ansible dbservers -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link'
#创建一个空文件,state=touch
ansible dbservers -m file -a "path=/opt/abc.txt state=touch"#创建一个空目录,state=directory
ansible dbservers -m file -a "path=/data state=directory"
#删除一个文件,state=absent
ansible dbservers -m file -a "path=/opt/abc.txt state=absent" ansible dbservers -a 'removes=/opt/abc.txt ls ./'
3.9 hostname模块
功能:用于管理远程主机上的主机名
#修改主机名
ansible dbservers -m hostname -a "name=mysql01"
3.10 ping模块
功能:测试远程主机的连通性。
ansible all -m ping
3.11 yum 模块
功能:在远程主机上安装与卸载软件包
常用参数 | 功能 |
---|---|
name | 需要安装的服务名 |
state=present(缺省值)/absent | 状态,abasent表示卸载服务 |
ansible webservers -m yum -a 'name=httpd' #安装服务
#卸载服务
ansible webservers -m yum -a 'name=httpd state=absent'
3.12 service/systemd 模块
功能:用于管理远程主机上的管理服务的运行状态。
常用参数 | 功能 |
---|---|
name | 指定需要控制的服务名称 |
state | 指定服务状态,其值可以为stopped、started、reloaded、restarted、status |
enabled | 指定服务是否为开机启动,yes为启动,no为不启动 |
daemon_reload | yes:重启systemd服务,让unit文件生效 |
#先安装服务
ansible webservers -m yum -a 'name=httpd'#启动httpd服务
ansible webservers -m service -a 'enabled=true name=httpd state=started'
#查看web服务器httpd运行状态
ansible webservers -a 'systemctl status httpd'
3.13 script 模块
功能:在远程主机执行shell脚本。
注意:script模块不具有幂等性,所以建议用剧本来执行。
#在本地写一个脚本vim test.sh#!/bin/bashecho "hello ansible from script" > /opt/test2.txt、chmod +x test.sh #给脚本执行权限
ansible dbservers -m script -a '/opt/test.sh' #远程运行本地脚本ansible dbservers -a 'cat /opt/test2.txt' #查看生成的文件内容
3.14 mount 模块
功能:在远程主机挂载目录/设备文件
常用参数 | 功能 |
---|---|
src | 指定要挂载的设备或分区路径。 |
path | 指定要挂载到的目标路径。 |
fstype | 指定要挂载的文件系统类型。 |
state | 指定挂载状态,可选值为 mounted 、unmounted 或 absent 。 |
opts | 指定挂载选项,例如挂载选项或参数。 |
ansible dbservers -m mount -a 'src=/dev/sr0 path=/mnt state=mounted fstype=iso9660'
#使用 Ansible 的 mount 模块将设备 /dev/sr0 的内容挂载到目标路径 /mnt。
#文件系统类型为 iso9660,并将该设备标记为已挂载状态
3.15 archive 模块
功能:在远程主机压缩文件。
3.15.1 常用参数
常用参数 | 功能 |
---|---|
path | 指定要打包的源目录或文件的路径。 |
dest | 指定打包文件的输出路径。 |
format | 指定打包文件的格式,可以是 zip 、tar 、gz 或 bzip2 。默认为 tar 格式。 |
remove | 指定是否在打包文件之后,删除源目录或文件。可选值为 yes 或 no 。默认为 no ,即不删除源目录或文件。 |
3.15.2 举个例子
ansible dbservers -m archive -a "path=/etc/yum.repos.d/ dest=/opt/repo.zip format=zip"
#remove参数的使用,压缩后删除源文件
ansible dbservers -m archive -a "path=/opt/test2.txt,/opt/123.txt dest=/opt/abc123.tar.gz format=gz remove=yes"
3.16 unarchive 模块
功能:将本地或远程主机的压缩包在远程主机解压缩 。
3.16.1 常用参数
常用参数 | 功能 |
---|---|
copy | 指定是否将打包文件复制到远程节点以进行解压缩。 |
remote_src | (已弃用)改用 copy 参数。 |
src | 指定要解压缩的打包文件路径,可以是本地路径或远程路径。 |
dest | 指定要将文件解压缩到的目标目录。 |
creates | 指定一个文件路径,如果该文件已经存在,则不进行解压缩操作。 |
remote_tmp | 用于制定远程节点上的临时目录。默认为 /tmp 。 |
#copy参数
copy参数的可选值为 `yes` 或 `no`。
默认为 `yes`,即先将文件从控制节点复制到远程节点,然后在远程节点上进行解压缩。
如果已经将文件分发到了目标节点并想要提高效率,可以将该值设置为 `no`。
反效果的参数为 `remote_src`。
3.16.2 举个例子
#现在ansible主机建立压缩包
tar cf test.tar.gz test.sh #将 ansible 主机的压缩文件拷贝到到远程主机并解压,修改文件所属组和用户
ansible dbservers -m unarchive -a "src=/opt/test.tar.gz dest=/root copy=yes"
3.17 replace 模块
功能:在远程主机修改文件内容 。
类似于sed命令,主要也是基于正则进行匹配和替换。
3.17.1 常用参数
常用参数 | 功能 |
---|---|
path | 指定需要处理的文件路径 |
regexp | 用于匹配需要替换内容的正则表达式 |
replace | 用于替换匹配内容的字符串 |
after | 在哪个字符串之后进行替换,默认为空 |
before | 在哪个字符串之前进行替换,默认为空 |
backup | 是否备份文件,选项为 yes 或 no |
3.17.2 举个例子
#在db服务器的主机下创建测试文件
vim /opt/test.txt
11 22 33 44 55 66
aa bb cc dd ee ff
1a 2b 3c 4d 5e 6f
#匹配 33 并修改为 ccc
ansible dbservers -m replace -a "path=/opt/test.txt regexp='33' replace='cc'"#查看
ansible dbservers -a "cat /opt/test.txt"
#匹配到任意一个或多个开头的行增加注释
ansible dbservers -m replace -a "path=/opt/test.txt regexp='^(.*)' replace='#\1'"
#取消注释
ansible dbservers -m replace -a "path=/opt/test.txt regexp='^#(.*)' replace='\1'"
#匹配以 a 开头的后面有一个或者多个字符的行,并在前面添加 # 注释
ansible dbservers -m replace -a "path=/opt/test.txt regexp='^(a.*)' replace='#\1'"
3.18 setup 模块
功能:使用facts组件获取远程主机的系统信息(facts信息)
常用参数 | 功能 |
---|---|
filter | 指定需要过滤的条件,仅返回满足条件的主机信息,默认为空 |
ansible webservers -m setup #获取mysql组主机的facts信息ansible dbservers -m setup -a 'filter=*ipv4' #使用filter可以筛选指定的facts信息
facts信息
主机的各种信息,包括硬件、操作系统、网络等。
运行命令后,会返回一个包含主机 facts 信息的 JSON 格式输出。
相关文章:

【Ansible自动化运维工具 1】Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)
Ansible常用模块 一、Ansible1.1 简介1.2 工作原理1.3 Ansible的特性1.3.1 特性一:Agentless,即无Agent的存在1.3.2 特性二:幂等性 1.4 Ansible的基本组件 二、Ansible环境安装部署2.1 安装ansible2.2 查看基本信息2.3 配置远程主机清单 三、…...

Telegram 引入了国产小程序容器技术
Telegram 宣布为其开发者提供了一项“能够在 App 中运行迷你应用”的新功能( 迷你应用即 Mini App,下文中以“小程序”代替)。 在一篇博客文章中,Telegram 的开发者写到“小程序提供了可替代互联网网站的灵活界面(cre…...

Capture One Pro 23图像处理工具「Mac」
Capture One Pro是一款专业的图像处理软件,旨在为摄影师和其他专业用户提供最佳的图像编辑和后期处理工具。 Capture One Pro 的主要功能包括 RAW 文件处理、图像编辑、颜色校正、曝光控制、局部调整、批处理等。它的相机支持列表非常广泛,几乎可以支持…...
rust OJ实战
目录 力扣 414. 第三大的数 力扣 628. 三个数的最大乘积 力扣 414. 第三大的数 给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。 示例 1: 输入:[3, 2, 1] 输出:1 解释:…...
聊聊KafkaListener的实现机制
序 本文只要研究一下KafkaListener的实现机制 KafkaListener org/springframework/kafka/annotation/KafkaListener.java Target({ ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE }) Retention(RetentionPolicy.RUNTIME) MessageMapping Documented …...
Golang洗牌算法(Golang乱序算法)
Golang 洗牌算法(乱序算法);需求背景:从一个文件下下读取所有文件,获取他们的名字, 将名字乱序排序,按着乱序后的序列,通过名字去找到文件,再上传,以达到上传…...

SpringBoot 源码分析(三) 监听器分析以及属性文件加载分析
前言 在创建SpringBoot项目的时候会在对应的application.properties或者application.yml文件中添加对应的属性信息,这些属性文件是什么时候被加载的?如果要实现自定义的属性文件怎么来实现?在讲属性加载之前先讲下监听器分析。 一、监听器分…...
记录nvm use node.js版本失败,出现报错: exit status 1: ��û���㹻��Ȩ��ִ�д˲�����
使用管理员权限运行cmd,再使用nvm use node.js版本号 参考: nvm use (node版本号)时报错: exit status 1: �����㹻��Ȩ��ִ…...

【蓝牙协议】简介:蓝牙芯片、蓝牙协议架构
文章目录 蓝牙芯片架构另一个视角由下到上看:Controller-->Host由上到下看:Host-->Controller 蓝牙协议架构视角HW层——蓝牙芯片层Transport——数据传输层HOST——协议层 总结 参考:https://zhuanlan.zhihu.com/p/585248998 参考&…...
【深度学习】
什么是深度学习? 感知器 为了实现模拟人类的学习,科学家们首先设计了构成神经网络的基本结构神经元(感知器模型),然后再由大量的神经元构成复杂的,能够实现各种功能的神经网络。 这种模式和超能陆战队中的…...

centos启动tomcat 并指定jdk 版本
在tomcat的catalina.sh文件手动设置JAVA_HOME变量即可 例如: 前提是文件存在 保存配置重新启动tomcat...
day37(事件轮询机制 ajaxGet执行步骤与案例(五个步骤) ajax属性 PHP返回JSON对象(两种))
一.事件轮询机制 1. 无论同步还是异步代码都要经过主线程编译,同步代码开始排在执行栈(主线程)上,异步代码开 始存放在任务队列中 2. 主线程优先执行同步代码,同步代码必须前一行执行完,后一行才能执行;当异步代码…...

Flume基本使用--mysql数据输出
MySQL数据输出 在MySQL中建立数据库school,在数据库中建立表student。SQL语句如下: create database school; use school; create table student(id int not null,name varchar(40),age int,grade int,primary key(id) ); 请使用Flume实时捕…...

MySQL——EXPLAIN用法详解
EXPLAIN是MySQL官方提供的sql分析的工具之一,可以用于模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。EXPLAIN主要用于分析查询语句或表结构的性能瓶颈。 以下是基于MySQL5.7.19版本进行分析的,不同版本之间略有差异。 1、EXP…...

69 划分字母区间
划分字母区间 题解1 贪心1(方法略笨,性能很差)题解2 贪心2(参考标答) 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足&am…...
文件上传漏洞(1), 文件上传绕过原理
文件上传漏洞 一, 前端校验上传文件 添加 Javascript 代码,然后在 form 表单中 添加 onsubmit"returb checkFile()" <script>function checkFile() {// var file document.getElementsByName(photo)[0].value;var file document.getElementByI…...
【ARM 嵌入式 C 入门及渐进 10 -- 冒泡排序 选择排序 插入排序 快速排序 归并排序 堆排序 比较介绍】
文章目录 排序算法小结排序算法C实现 排序算法小结 C语言中常用的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序。下面我们来一一介绍: 冒泡排序(Bubble Sort):冒泡排序是通过比较相邻元素的大小进行排…...

虹科 | 解决方案 | 汽车示波器 学校教学方案
虹科Pico汽车示波器是基于PC的设备,特别适用于大课堂的教学、备课以及与师生的互动交流。老师展现讲解波形数据,让学生直观形象地理解汽车的工作原理 高效备课 课前实测,采集波形数据,轻松截图与标注,制作优美的课件&…...
广播和组播(多播)
广播 概述 广播(broadcast)是指封包在计算机网络中传输时,目的地址为网络中所有设备的一种传输方式。实际上,这里所说的“所有设备”也是限定在一个范围之中,称为“广播域”。并非所有的计算机网络都支持广播…...

【Linux】gdb调试
目录 进入调试查看代码运行代码断点打断点查断点删断点从一个断点转跳至下一个断点保留断点但不会运行该断点 退出调试逐过程逐语句监视跳转至指定行运行结束当前函数 进入调试 指令:gdb 【可执行文件】: 查看代码 :l 【第几行】如果输入指…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...

Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...