openGauss + Datakit

openGauss + Datakit

    • 1. 简介
      • 1.1 openGauss
      • 1.2 Datakit
    • 2. 环境准备
      • 2.1 支持系统
      • 2.2 安装包获取
      • 2.3 注意事项
      • 2.4 系统环境设置
    • 3. openGauss 安装
      • 3.1 创建用户和组
      • 3.2 创建工作目录
      • 3.3 关闭HISTORY记录/关闭交换内存
      • 3.4 解压安装包
      • 3.5 安装
      • 3.6 启动数据库
      • 3.7 连接数据库
      • 3.8 添加白名单
      • 3.9 修改数据库参数
      • 3.10 创建用户
    • 4. Datakit 安装
      • 4.1 解压Datakit
      • 4.2 修改配置文件
      • 4.3 创建密钥文件
      • 4.4 启动Datakit
    • 5. 界面管理

1. 简介

1.1 openGauss

opengauss官网

openGauss 是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。同时,openGauss也是一个开源、免费的数据库平台,鼓励社区贡献、合作。

openGauss是单机系统,支持一主多备,最多支持八个备机。详情请参见openGauss 架构图
在这里插入图片描述模块信息:

  • OM:Operation Manager运维管理模块,提供集群日常运维、配置管理的管理接口、工具。
  • CM:Cluster Manager集群管理模块,管理和监控分布式系统种的各个功能单元和物力资源的运行情况,确保整个系统的稳定运行。
  • GTM:Global Transaction Management,全局事务控制器。负责生成和维护全局事务ID、事务快照、时间戳、sequence信息等全局唯一的信息。
  • CN:Coordinator Node 协调节点, 负责接收来自应用的访问请求,并向客户端返回执行结果,负责分解任务,并调度任务分片在各个DN上并行执行。
  • DN:Data Node 数据节点,负责存储业务数据(支持行存储、列存储、混合存储),执行数据查询任务以及向CN返回执行结果。

1.2 Datakit

Datakit 官网
Datakit 是运行在用户本地机器上的一种基础数据采集工具,主要用于采集系统运行的各种指标、日志等数据,将它们汇总给观测云,在观测云中,用户可以查看并分析自己的各种指标、日志等数据。

DataKit 是观测云中至关重要的一个数据采集组件,几乎所有观测云中的数据都是来源于 DataKit。

DataKit 基础网络模型
DataKit 网络模型主要分为三层,可以简单概括为用户环境、DataWay 以及观测云中心,如下图所示:
在这里插入图片描述DataKit 主要通过定期采集的方式,采集各种不同的指标,然后定时、定量通过 HTTP(s) 将数据发送给 DataWay。每个 DataKit 都会配置对应的 token,用于标识不同的用户

  • DataWay 收到数据后,转发给观测云,在发给观测云的数据中,带有 API 签名
  • 观测云收到合法的数据后,根据不同的数据类型,分别写入不同的存储中

DataKit目的是方便客户使用和管理openGauss可视化工具

2. 环境准备

2.1 支持系统

openEuler 20.3LTS(x86_x64,ARM)
centos7.x(x86_x64)

2.2 安装包获取

官网中包括openGaussDatakit的安装包
在这里插入图片描述在这里插入图片描述

可根据不同的系统架构自行选择下载

2.3 注意事项

  • 当前平台运行依赖于openJDK11
  • 平台使用的数据库,当前仅支持openGauss数据库,并且需要提前创建database。
  • 需要将部署服务器IP配置在平台使用的数据库openGauss的白名单列表中。
  • 如果安装企业版,还需要安装python3

2.4 系统环境设置

  • 主机名
hostnamectl set-hostname node-138
  • IP地址解析
echo '192.168.17.138 node-138' >> /etc/hosts
  • 刷新主机名
[root@localhost ~]# su
[root@node-138 ~]# 
  • 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
  • 关闭selinux
setenforce 0

编辑/etc/sysconfig/selinux,将SELINUX=enforcing修改为SELINUX=disabled

sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3. openGauss 安装

如果操作系统是openEuler 20.3LTS,则可以用联网方式安装

yum install opengauss -y

本文使用的操作系统是centos 7.9,所以需要用官网下载的安装包安装

3.1 创建用户和组

openGauss 不支持root操作,所以需要创建普通用户

groupadd dbgroup
useradd -g dbgroup omm
passwd omm
新密码:abcd@123456

3.2 创建工作目录

mkdir -p /opt/software/openGauss
chmod 755 -R /opt/software
chown -R omm /opt/software/openGauss

3.3 关闭HISTORY记录/关闭交换内存

vim /etc/profile
HISTSIZE=0
source /etc/profile

swapoff -a

官网提示关闭HISTORY比较安全,可忽略

3.4 解压安装包

在官网下载极简版的安装包,并上传到服务器

切换到普通用户omm进行解压

su - omm
tar -jxvf openGauss-5.0.1-CentOS-64bit.tar.bz2 -C software/openGauss/
[omm@node-138 opt]$ ll software/openGauss/
total 16
drwxr-xr-x. 2 omm dbgrp 4096 Dec 15 20:31 bin
drwxr-xr-x. 3 omm dbgrp   22 Dec 15 20:31 etc
drwxr-xr-x. 3 omm dbgrp   24 Dec 15 20:31 include
drwxr-xr-x. 4 omm dbgrp   95 Dec 15 20:31 jre
drwxr-xr-x. 5 omm dbgrp 4096 Dec 15 20:31 lib
drwxr-xr-x. 5 omm dbgrp   53 Dec 15 20:31 share
drwxr-xr-x. 2 omm dbgrp   78 Dec 15 20:31 simpleInstall
-rw-r--r--. 1 omm dbgrp   32 Dec 15 20:31 version.cfg

切换回root执行,我们提前设置

执行时,如果出现报错“the maximum number of SEMMNI is not correct, the current SEMMNI is xxx. Please check it.”,请使用有root权限的用户执行如下命令。
bash sysctl -w kernel.sem="250 85000 250 330"

3.5 安装

sh install.sh -w Gauss$123456 && source ~/.bashrc

报错如下:

...
/home/omm/.bashrc: line 16: ulimit: open files: cannot modify limit: Operation not permitted
...

是因为.bashrc中ulimit -n 1000000没有执行权限,所以我们切回root

[root@node-138 simpleInstall]# ulimit -n 100000
[root@node-138 simpleInstall]# ulimit -n
100000
[root@node-138 simpleInstall]# tail -3 /etc/security/limits.conf
*               hard    nofile          100000
*               soft    nofile          100000
# End of file

二次安装

[omm@node-138 simpleInstall]$ sh install.sh -w Gauss$123456
[step 1]: check parameter
[step 2]: check install env and os setting
ERROR: the directory /opt/software/openGauss/data/single_node must be dir and empty
[omm@node-138 simpleInstall]$ rm -rf /opt/software/openGauss/data/single_node/*
[omm@node-138 simpleInstall]$ ll /opt/software/openGauss/data/single_node/
total 0
[omm@node-138 simpleInstall]$ sh install.sh -w Gauss$123456
...
[complete successfully]: You can start or stop the database server using:
    gs_ctl start|stop|restart -D $GAUSSHOME/data/single_node -Z single_node
[omm@node-138 simpleInstall]$ ps ux | grep gaussdb
omm       32191  5.9  9.3 5978380 745656 ?      Ssl  23:52   0:05 /opt/software/openGauss/bin/gaussdb -D /opt/software/openGauss/data/single_node

3.6 启动数据库

gs_ctl start -D /opt/software/openGauss/data/single_node -Z single_node

[omm@node-138 ~]$ gs_ctl status -D /opt/software/openGauss/data/single_node -Z single_node
[2024-01-05 18:25:44.154][6649][][gs_ctl]: gs_ctl status,datadir is /opt/software/openGauss/data/single_node
gs_ctl: server is running (PID: 6079)
/opt/software/openGauss/bin/gaussdb "-D" "/opt/software/openGauss/data/single_node"

执行gs_ctl命令,查看进程是否正常,如果没有找到 gs_ctl

  • 解决方式1:配置环境变量即可 export PATH=/opt/software/openGauss/bin:$PATH,如果缺失lib则配置LD_LIBRARY_PATH
  • 解决方式2:
cd /opt/software/openGauss/bin
ll
 
#先切换到【root】用户,再切换到【omm】用户,再执行如下命令
gs_ctl query -D /opt/software/openGauss/data/single_node【ok】
gs_ctl query -D /opt/software/openGauss/data/single_node -Z single_node【ok】
/opt/software/openGauss/bin/gs_ctl query -D /opt/software/openGauss/data/single_node【ok】
 
#启动
gs_ctl start -D /opt/software/openGauss/data/single_node -Z single_node
 
#停止
gs_ctl stop -D /opt/software/openGauss/data/single_node -Z single_node
 
#重启
gs_ctl restart -D /opt/software/openGauss/data/single_node -Z single_node

3.7 连接数据库

[omm@node-138 simpleInstall]$ gsql -d postgres -p 5432
gsql ((openGauss 5.0.1 build 33b035fd) compiled at 2023-12-15 20:19:06 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

openGauss=#
openGauss=# \l
                              List of databases
   Name    | Owner | Encoding |   Collate   |    Ctype    | Access privileges
-----------+-------+----------+-------------+-------------+-------------------
 finance   | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 school    | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +
           |       |          |             |             | omm=CTc/omm
 template1 | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +
           |       |          |             |             | omm=CTc/omm
(5 rows)

3.8 添加白名单

[omm@node-138 single_node]$ cat pg_hba.conf
...
host    all             all             0.0.0.0/0               md5

参数详解:

  • host:表示这个规则适用于TCP/IP连接。
  • all: 表示这个规则适用于所有数据库和所有用户。
  • 0.0.0.0/0: 是一个CIDR格式的IP地址范围,表示允许任何IP地址的客户端进行连接。
  • md5: 表示使用MD5加密方式对密码进行验证。

3.9 修改数据库参数

# 设置监听所有ip
[omm@node-138 single_node]$ sed -i "s/^#listen_addresses = .*/listen_addresses = '*'/" postgresql.conf
# 修改加密算法为0 = md5
[omm@node-138 single_node]$ sed -i "s/^#password_encryption_type = .*/password_encryption_type = 0/" postgresql.conf
# 修改最大连接数为1000
[omm@node-138 single_node]$ sed -i "s/^max_connections = .*/max_connections = 1000/" postgresql.conf

重启服务

3.10 创建用户

# 初次登录需要修改密码(sql命令)
openGauss=# alter role omm password 'Newm123@';
NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
ALTER ROLE
# 创建用户(sql命令)
openGauss=# create user opengauss identified by 'Newm123@';
NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
CREATE ROLE
# 授权(sql命令)
openGauss=# alter user opengauss sysadmin;
ALTER ROLE
# 创建数据库(sql命令)
openGauss=# create database yurqdb;
CREATE DATABASE
openGauss=# \l
                              List of databases
   Name    | Owner | Encoding |   Collate   |    Ctype    | Access privileges
-----------+-------+----------+-------------+-------------+-------------------
 finance   | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 school    | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +
           |       |          |             |             | omm=CTc/omm
 template1 | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +
           |       |          |             |             | omm=CTc/omm
 yurqdb    | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
(6 rows)

4. Datakit 安装

4.1 解压Datakit

[root@node-138 opt]# mkdir -p /ops/server/openGauss-visualtool/logs /ops/server/openGauss-visualtool/config /ops/ssl /ops/files
[root@node-138 opt]# tar xf Datakit-5.0.0.tar.gz -C /ops/server/openGauss-visualtool/
[root@node-138 server]# cd /ops/server/openGauss-visualtool/
[root@node-138 openGauss-visualtool]# mkdir visualtool-plugin
[root@node-138 openGauss-visualtool]# mv *.jar visualtool-plugin/
[root@node-138 openGauss-visualtool]# mv visualtool-plugin/visualtool-main.jar .
[root@node-138 openGauss-visualtool]# ll
total 92088
-rw-r--r-- 1 root root      865 Mar 28  2023 application-temp.yml
-rw-r--r-- 1 root root     6746 Mar 28  2023 base-ops-README.md
drwxr-xr-x 2 root root        6 Jan  5 18:54 config
-rw-r--r-- 1 root root     3752 Mar 28  2023 data-migration-README.md
-rw-r--r-- 1 root root    48121 Mar 28  2023 data-studio-readme.md
drwxr-xr-x 2 root root        6 Jan  5 18:54 logs
-rw-r--r-- 1 root root    17164 Mar 28  2023 observability-instance-README.md
-rw-r--r-- 1 root root     8172 Mar 28  2023 observability-log-search-README.md
-rw-r--r-- 1 root root     8629 Mar 28  2023 observability-sql-diagnosis-README.md
-rw-r--r-- 1 root root 94180819 Mar 28  2023 visualtool-main.jar
drwxr-xr-x 2 root root      281 Jan  5 18:55 visualtool-plugin
-rw-r--r-- 1 root root     7245 Mar 28  2023 visualtool-README.md

4.2 修改配置文件

[root@node-138 openGauss-visualtool]# cp application-temp.yml application-temp.yml.bak
[root@node-138 openGauss-visualtool]# cat application-temp.yml
system:
  # File storage path
  defaultStoragePath: /ops/files
  # Whitelist control switch
  whitelist:
    enabled: false
server:
  port: 9494
  ssl:
    key-store: /ops/ssl/keystore.p12
    key-store-password: 123456
    key-store-type: PKCS12
    enabled: true
  servlet:
    context-path: /
logging:
  file:
    path: /ops/server/openGauss-visualtool/logs/
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.opengauss.Driver
    url: jdbc:opengauss://192.168.17.138:5432/yurqdb?currentSchema=public
    username: opengauss
    password: Newm123@
    druid:
      test-while-idle: false
      test-on-borrow: true
      validation-query: "select 1"
      validation-query-timeout: 10000
      connection-error-retry-attempts: 0
      break-after-acquire-failure: true
      max-wait: 3000
management:
  server:
    port: 9494

修改spring.datasource.url的ip,port,database、dbuser、dbpassword

4.3 创建密钥文件

这里使用keytool工具生成密钥,需要注意的是keytool -genkey命令用于创建SSL文件(包括密钥对和证书),并且它与 JDK (Java Development Kit)是有关系的。keytool 是JDK提供的一个工具,用于管理密钥库和证书,用于加密和身份验证等安全通信。而我们前面提到该平台依赖JDK11环境,所以这里使用JDK11来创建密钥文件。

请提前安装号JDK11

生成ssl文件示例(生成ssl的java必须跟运行DataKit是一个java版本):

keytool -genkey -noprompt \
    -dname "CN=opengauss, OU=opengauss, O=opengauss, L=Shenyang, S=Shenyang, C=CN"\
    -alias opengauss\
    -storetype PKCS12 \
    -keyalg RSA \
    -keysize 2048 \
    -keystore /ops/ssl/keystore.p12 \
    -validity 3650 \
    -storepass 123456

执行完成后,会在/ops/ssl/下生成密钥文件keystore.p12

注意:

  • storepass与配置文件application-temp.yml中的key-store-password保持一致
  • keystore路径与配置文件application-temp.yml中的key-store路径保持一致

4.4 启动Datakit

切换到omm用户,进入/ops/server/openGauss-visualtool目录,执行启动命令(必须要进入到这个目录启动,否则会报错)

[root@node-138 openGauss-visualtool]# mkdir -p /ops/server/openGauss-visualtool/logs/
[root@node-138 openGauss-visualtool]# touch /ops/server/openGauss-visualtool/logs/visualtool-main.out
[root@node-138 openGauss-visualtool]# chown -R omm /ops/server/openGauss-visualtool/
[root@node-138 openGauss-visualtool]# ll /ops/server/openGauss-visualtool/logs/visualtool-main.out
-rw-r--r-- 1 omm root 0 Jan  5 21:17 /ops/server/openGauss-visualtool/logs/visualtool-main.out
[omm@node-138 ~]$ nohup java -Xms2048m -Xmx4096m -jar /ops/server/openGauss-visualtool/visualtool-main.jar --spring.profiles.active=temp >/ops/server/openGauss-visualtool/logs/visualtool-main.out 2>&1 &

注:第一次启动会显示插件初始化异常,加载完毕后kill掉这个进程然后再重新启动一遍就一切正常了。

5. 界面管理

访问URL https://192.168.17.138:9494就可以来到登录界面了
在这里插入图片描述登录账号:admin 密码:admin123

登录后,具体如何使用,请自行摸索吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/294984.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库设计——DQL

D Q L \huge{DQL} DQL ⭐⭐⭐⭐⭐ DQL:数据库查询语言,用来查询数据库中的记录,非常的重要,对于数据库的操作修改相对来讲还是较少部分,绝大多数操作都是数据查询。 整体的语法结构: 基本查询 示例&#…

【Java】LockSupport原理与使用

LockSupport: 关键字段: private static final sun.misc.Unsafe UNSAFE;private static final long parkBlockerOffset; Unsafe:"魔法类",较为底层,在LockSupport类中用于线程调度(线程阻塞、线程恢复等)。…

【Unity】如何在Unity中使用C#的NuGet 包资源

【背景】 Unity的脚本语言是C#,而C#有很多功能和能力可以通过nuget包提供。有没有办法把这些能力结合到Unity中一起使用呢?如果可以,那将大大扩展Unity中各类功能实现的便捷性。 【方法】 答案是:你可以! 获取Nuge…

经典八股文之RocketMQ

核心概念 NameServer nameserver是整个rocketmq的大脑,是rocketmq的注册中心。broker在启动时向所有nameserver注册。生产者在发送消息之前先从 NameServer 获取 Broker 服务器地址列表(消费者一 样),然后根据负载均衡算法从列表中选择一台服务器进行消…

SSM在线手机品牌商城----计算机毕业设计

项目介绍 该项目为前后台项目,分为普通用户与管理员两种角色,前台普通用户登录,后台管理员登录; 管理员角色包含以下功能: 管理员登录,用户管理,品牌管理,子品牌管理,商品管理,订单管理,留言板管理等功能。 用户角…

Note: A Journey Across Canada

A Journey Across Canada 一场横穿加拿大的旅行 across journey After a quiz last autumn, Kuang crossed the continent eastward to Toronto to visit his schoolmate, the distance measuring approximately 5000 kilometers. 去年秋天一次考试后,Kuang向东穿…

Ubuntu 安装 JMeter:为你的服务器配置做好准备

Apache JMeter 是一个开源的负载测试工具,可以用于测试静态和动态资源,确定服务器的性能和稳定性。在本文中,我们将讨论如何下载和安装 JMeter。 安装 Java(已安装 Java 的此步骤可跳过) 要下载 Java,请遵…

AI小冰入驻淘宝 将提供虚拟人陪伴服务

AI小冰正式入驻淘宝! 据悉,小冰在淘宝开出了“小冰旗舰店”、以及手淘小程序“X Eva 克隆人的平行世界”,为消费者提供基于KOL虚拟人带来的陪伴服务体验。用户搜索“小冰旗舰店”就可以直达店铺进行选购。 ​小冰旗舰店的首批商品包括冰花直充…

【设计模式-5】抽象工厂模式的代码实现及使用场景

前面我们了解到工厂方法模式通过引入抽象工厂的概念,使得产品对象的创建可以依赖于具体工厂,但是这种设计模式最大的问题是会造成类的数量爆炸式增长。对于这个问题,抽象工厂模式通过引入两个新的概念:产品等级与产品簇&#xff0…

ant-design-vue 使用本地iconfont.js

createFromIconfontCN只能使用【在线资源】,但是在线资源存在不稳定的风险 有人提了issue,不过目前也没有解决,但是有人提出了一种新的的解决方案 参考链接: https://github.com/ant-design/ant-design/issues/16480 main.js im…

【UML建模】部署图(Deployment Diagram)

1.概述 部署图是一种结构图,用于描述软件系统在不同计算机硬件或设备上的部署和配置情况,以图形化的方式展示系统中组件、节点和连接之间的物理部署关系。 通过部署图,可以清晰地了解系统的物理结构和部署方式,包括系统组件和节…

prometheus grafana mysql监控配置使用

文章目录 前传bitnami/mysqld-exporter:0.15.1镜像出现了问题.my.cnf可以用这个"prom/mysqld-exporter:v0.15.0"镜像重要的事情mysql监控效果外传 前传 prometheus grafana的安装使用:https://nanxiang.blog.csdn.net/article/details/135384541 本文说…

软件测试|SQL AND和OR运算符解析

简介 在SQL(Structured Query Language)中,AND和OR是两个常用的逻辑运算符。它们用于组合条件来构建复杂的查询语句,帮助我们更精确地过滤和检索数据。本文将详细介绍SQL中的AND和OR运算符,包括其语法、用法以及使用时…

Matlab绘制动态心形线

1. 代码 for alpha0:0.1:30 x-1.8:0.001:1.8; y(x.^2).^(1/3)0.9*(3.3-x.^2).^(1/2).*sin(alpha*pi*x); plot(x,y,r-,LineWidth,1.2); set(gca,YGrid,on); axis([-3,3,-2,4]); text(-2,3.35,$f(x)x^{\frac{2}{3}}0.9(3.3-x^2)^{\frac{1}{2}}sin(\alpha\pi x)$,Interpreter,lat…

Python Gui图形化开发

PyQt5、Tkinter、Kivy等GUI工具,助你轻松构建Python应用。新手友好的PySimpleGUI,高交互性的PyForms,助你搭建理想用户界面。 学习编程,不仅要学习MySQL以及编程语言和并行架构之间的关系这类基础知识,还有一个重要的…

openGauss 5.0.0企业版一主一备安装部署

目录 一、环境准备 1. 华为云购买两台ECS 1.1查看openEuler版本,操作系统版本及CPU的制式是基础 1.2查看CPU模式 1.3操作系统环境准备 2. 集群配置XML文件准备: 2.1集群参数配置: 2.2主机参数配置: 2.3备机参数配置&…

静态网页设计——校园官网(HTML+CSS+JavaScript)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 使用技术:HTMLCSSJS 主要内容:对学校官网的结构进行模仿,对布局进行模仿。 主要内容 1、首页 首页以多个div对页面进行分割和布局…

Fiddler抓包工具之fiddler界面工具栏介绍

Fiddler界面工具栏介绍 (1)WinConfig:windows 使用了一种叫做“AppContainer”的隔离技术,使得一些流量无法正常捕获,在 fiddler中点击 WinConfig 按钮可以解除这个诅咒,这个与菜单栏 Tools→Win8 Loopback…

CSS 缩小旋转动画

<template><div class="container" @mouseenter="startAnimation" @mouseleave="stopAnimation"><!-- 旋方块 --><div class="box" :class="{ rotate-scale-down: isAnimating }"><!-- 元素内容…

bat批处理文件_输出内容到文本

文章目录 1、echo str > test.txt&#xff08;覆盖原有内容&#xff09;2、echo str >> test.txt&#xff08;不覆盖原有内容&#xff0c;追加&#xff09; 1、echo str > test.txt&#xff08;覆盖原有内容&#xff09; 2、echo str >> test.txt&#xff0…