diff --git a/Centos搭建activemq.md b/Centos搭建activemq.md
new file mode 100644
index 0000000..140497e
--- /dev/null
+++ b/Centos搭建activemq.md
@@ -0,0 +1,236 @@
+### Centos 搭建activemq
+
+
+
+### 软件版本
+
+centos 7
+
+openJDK 8
+
+activeMQ 5.16.5
+
+### 配置jdk8
+
+下载 JDK 8 这里选用openJDK8
+
+下载地址 :[Latest releases | Adoptium](https://adoptium.net/temurin/releases/?version=8)
+
+
+
+
+
+
+
+下载后 上传到linux 服务器
+
+
+
+
+
+
+
+解压
+
+```
+tar -zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u345b01.tar.gz`
+
+mv jdk8u345-b01 /opt/
+```
+
+#配置path
+`vim vim /etc/profile`
+
+#按下 `insert` 键 进入编辑模式
+
+
+
+#文档最后追加
+
+export JAVA_HOME=/opt/jdk8u345-b01
+export PATH=$PATH:/opt/jdk8u345-b01/bin
+
+#保存更改 并退出
+
+按一下 `esc` 再输入`:wq` 保存退出
+
+
+
+
+
+
+
+刷新配置
+
+` source /etc/profile`
+
+
+
+
+
+验证JAVA
+
+`java version`
+
+
+
+
+
+
+
+## 安装 activemq
+
+
+
+下载activemq
+
+
+
+下载地址 [活动MQ (apache.org)](https://activemq.apache.org/components/classic/download/)
+
+上传到服务器
+
+
+
+
+
+解压
+
+```
+tar -zxvf apache-activemq-5.16.5-bin.tar.gz`
+
+mv apache-activemq-5.16.5 /opt/
+
+```
+
+编辑配置文件
+
+
+
+`vim /opt/apache-activemq-5.16.5/conf/jetty.xml`
+
+
+
+按下 insert 键 进入编辑模式
+
+找到如下配置 将`127.0.0.1` 修改为`0.0.0.0`
+
+
+
+
+
+按一下 `esc` 再输入`:wq` 保存退出
+
+
+
+### 创建系统服务
+
+
+
+`sudo vi /usr/lib/systemd/system/activemq.service`
+
+输入一下内容
+
+```
+[Unit]
+Description=activemq message queue
+After=network.target
+[Service]
+PIDFile=/opt/apache-activemq-5.16.5/data/activemq.pid
+ExecStart=/opt/apache-activemq-5.16.5/bin/activemq start
+ExecStop=/opt/apache-activemq-5.16.5/bin/activemq stop
+User=root
+Group=root
+Restart=always
+RestartSec=9
+StandardOutput=syslog
+StandardError=syslog
+SyslogIdentifier=activemq
+
+[Install]
+WantedBy=multi-user.target
+```
+
+
+
+刷新配置文件
+
+`systemctl reload`
+
+启动服务
+
+`systemctl start activemq`
+
+查看状态
+
+systemctl status activemq
+
+
+
+
+
+
+
+### 更改用户账号
+
+#### admin ui
+
+在 mq安装目录/conf/jetty.xml中
+
+```
+
+
+
+
+
+```
+
+
+
+
+
+在 mq安装目录/conf/jetty-realm.properties中,
+
+username: password [,rolename ...]
+
+admin: password,admin
+
+帐号:admin,
+
+密码:password
+
+用户:admin (就是刚刚jetty.xml设定的roles)
+
+
+
+#### 连接账号密码
+
+在ActiveMQ的conf目录的activemq.[xml](https://so.csdn.net/so/search?q=xml&spm=1001.2101.3001.7020)中添加账号密码
+
+```
+
+
+
+
+
+
+
+```
+
+
+
+
+
+
+
+
+
+#### 设置控制台 连接账号密码
+
+
+
+
+
+访问控制台 iP:8161
+
+admin/admin
\ No newline at end of file
diff --git a/JAVA开发环境搭建.md b/JAVA开发环境搭建.md
new file mode 100644
index 0000000..558f206
--- /dev/null
+++ b/JAVA开发环境搭建.md
@@ -0,0 +1,85 @@
+# JAVA开发环境搭建
+
+openJDK+idea+mysql+vue
+
+
+
+## openJDK安装
+
+### jvm 版本
+
+- openJ9 IBM 捐赠给了Eclipse 基金会
+
+- hotspot oracle 开源的jvm 和oracle jdk 同款
+
+- Temurin (hotspot)
+
+- 。。。。。。
+
+
+
+#### 下载地址
+
+1. Temurin https://adoptium.net/temurin/releases/?version=8
+
+2. oracle http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
+
+
+
+### 安装JDK
+
+这里使用 Temurin 演示 ,选择合适的版本下载 如:windows x64 jdk 8
+
+下载后解压至合适的目录 如 Z:\jdk\jdk8
+
+#### 设置环境变量
+
+用管理员权限启动 cmd
+
+查看 JAVA_环境变量是否存在
+
+```
+echo %JAVA_HOME%
+```
+
+设置当前用户环境变量
+
+```
+ setx JAVA_HOME Z:\jdk\jdk8
+
+ setx -m PATH "%PATH%;%JAVA_HOME%\bin"
+```
+
+设置系统级环境变量
+
+```
+ setx /m JAVA_HOME Z:\jdk\jdk8
+
+ setx -m PATH "%PATH%;%JAVA_HOME%\bin"
+```
+
+系统变量or 用户环境变量只需要设置 一次
+
+#### 验证
+
+运行CMD,验证JAVA环境变量
+
+```
+java --version
+```
+
+## tomcat8.5下载与安装
+
+ 2.1 下载地址:http://tomcat.apache.org/download-80.cgi
+
+ 2.2 安装
+
+## eclipse下载
+
+ 3.1 下载地址:https://www.eclipse.org/downloads/
+
+## mySql下载与安装
+
+ 4.1 下载地址:https://dev.mysql.com/downloads/windows/installer/8.0.html
+
+ 4.2 安装
\ No newline at end of file
diff --git a/Linux下打开超大文件方法.md b/Linux下打开超大文件方法.md
new file mode 100644
index 0000000..61bbdfd
--- /dev/null
+++ b/Linux下打开超大文件方法.md
@@ -0,0 +1,32 @@
+Linux下打开超大文件方法
+
+在Linux下用VIM打开大小几个G、甚至几十个G的文件时,是非常慢的。
+
+这时,我们可以利用下面的方法分割文件,然后再打开。
+
+1 查看文件的前多少行
+
+head -10000 /var/lib/mysql/slowquery.log > temp.log
+
+上面命令的意思是:把slowquery.log文件前10000行的数据写入到temp.log文件中。
+
+2 查看文件的后多少行
+
+tail -10000 /var/lib/mysql/slowquery.log > temp.log
+
+上面命令的意思是:把slowquery.log文件后10000行的数据写入到temp.log文件中。
+
+3 查看文件的几行到几行
+
+sed -n '10,10000p' /var/lib/mysql/slowquery.log > temp.log
+
+上面命令的意思是:把slowquery.log文件第10到10000行的数据写入到temp.log文件中。
+
+
+
+4 根据查询条件导出
+cat catalina.log | grep '2017-09-06 15:15:42' > test.log
+
+
+5 实时监控文件输出
+tail -f catalina.out
\ No newline at end of file
diff --git a/README.md b/README.md
index e69de29..5d240c1 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+自用 博客文章备份
\ No newline at end of file
diff --git a/RabbitMQ非root用户安装(Linux环境).md b/RabbitMQ非root用户安装(Linux环境).md
new file mode 100644
index 0000000..8e4f4b8
--- /dev/null
+++ b/RabbitMQ非root用户安装(Linux环境).md
@@ -0,0 +1,259 @@
+#### 下载 erlang
+
+https://www.erlang.org/patches/otp-22.3.4.26
+
+### 安装erlang
+
+检查依赖
+
+```
+rpm -qa | grep -E "ncurses-devel*|openssl-devel*"
+```
+
+安装依赖(root)
+
+```
+yum install ncurses-devel
+yum install openssl-devel
+
+```
+
+配置安装目录
+
+```
+cd /app/otp_src_25.3/
+./configure --prefix=/home/test02/erlang/
+```
+
+编译安装
+
+```
+make && make install
+```
+
+
+
+编辑path
+
+```
+cd ~
+vi .bash_profile
+
+追加
+export PATH=$PATH:/home/test02/erlang/bin
+
+刷新
+source .bash_profile
+```
+
+
+
+
+
+验证
+
+```
+erl
+
+
+#退出
+halt()
+.
+```
+
+
+
+### 安装rabbitmq
+
+https://www.rabbitmq.com/download.html
+
+
+
+
+
+https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.10.6/rabbitmq-server-generic-unix-3.10.6.tar.xz
+
+
+
+erlang rabbitma 版本对应关系
+
+https://www.rabbitmq.com/which-erlang.html
+
+解压rabbitmq
+
+```
+xz -d /home/test02/rabbitmq/rabbitmq-server-generic-unix-3.8.3.tar.xz
+tar xvf /home/test02/rabbitmq/rabbitmq-server-generic-unix-3.8.3.tar
+
+```
+
+
+
+配置rabbitmq
+
+```
+cd /home/test02/rabbitmq/rabbitmq_server-3.8.3/etc/rabbitmq/
+vim rabbitmq.env.conf
+
+
+#添加内容如下:
+#node name
+NODENAME=rabbit
+
+#data dir
+MNESIA_BASE=/home/test02/rabbitmq/rabbitmq/data
+
+
+端口设置
+vim rabbitmq.conf
+
+#添加内容如下:
+#listen port
+listeners.tcp.default = 5672
+
+#log dir
+log.dir =/home/test02/rabbitmq/rabbitmq/logs
+
+#open remote request
+loopback_users = none
+
+```
+
+手动创建目录
+
+```
+mkdir /home/test02/rabbitmq/rabbitmq/data /home/test02/rabbitmq/rabbitmq/logs -p
+```
+
+
+
+配置 path
+
+```
+vim .bash_profile
+#添加内容如下:
+# rabbitmq
+export PATH=$PATH:/home/test02/rabbitmq/rabbitmq/sbin
+
+
+#刷新
+source .bash_profile
+```
+
+
+
+
+
+
+
+启动rabbitmq
+
+```
+rabbitmq-server -detached
+```
+
+
+
+启动状态
+
+```
+rabbitmqctl status
+```
+
+停止
+
+```
+rabbitmqctl stop
+```
+
+
+
+```
+
+```
+
+启动控制台插件
+
+```
+rabbitmq-plugins enable rabbitmq_management
+```
+
+
+
+
+
+创建新用户
+
+默认用户guest只能localhost本地登录
+
+所以新建用户 供后续使用
+
+```
+
+rabbitmqctl add_user yiling yiling123456;a
+rabbitmqctl set_user_tags yiling administrator
+rabbitmqctl set_permissions -p / yiling ".*" ".*" ".*"
+```
+
+
+
+修改guest 弱口令
+
+
+
+
+
+
+
+访问控制台
+
+ip:15672
+
+用刚刚创建的账号(yiling)密码(yiling123456;a)登录。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### 回退
+
+卸载依赖
+
+yum remove ncurses-devel
+yum remove openssl-develremove
+
+
+
+删除 erlang
+
+rm -rf /home/test02/erlang
+
+删除rabbitmq
+
+rm -rf /home/test02/rabbitmq
+
+
+
+修改path
+
+cd ~
+
+vi .bash_profile
+
+将之前追加的 path 路径删除
+export PATH=$PATH:/home/test02/erlang/bin
+
+刷新
+source .bash_profile
\ No newline at end of file
diff --git a/S3.md b/S3.md
new file mode 100644
index 0000000..88f6232
--- /dev/null
+++ b/S3.md
@@ -0,0 +1,167 @@
+### 安装 jdk1.8 (单用户)
+
+下载 [Latest releases | Adoptium](https://adoptium.net/temurin/releases)
+
+解压 **tar -zxvf** OpenJDK8U-jdk_x64_linux_hotspot_8u332b09.tar
+
+设置环境变量
+
+在 ~ 目录下 编辑 .bash_profile
+
+
+
+添加 修改路径
+
+```
+JAVA_HOME=/home/wlf/jdk1.8.0_221
+CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
+PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
+export PATH CLASSPATH JAVA_HOME
+```
+
+ 刷新 source .bash_profile
+
+
+
+测试 是否成功
+
+
+
+java -version
+
+
+
+
+
+
+
+### 安装 zk(单机集群)
+
+下载 [Index of /apache/zookeeper/zookeeper-3.5.10 (tsinghua.edu.cn)](https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.10/)
+
+
+
+- 解压 `apache zookeeper`
+
+```text
+tar -zxvf apache-zookeeper-3.5.10-bin.tar.gz
+
+
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### 安装kafka(单机集群)
+
+
+
+
+
+下载 kafka [Apache Kafka](https://kafka.apache.org/downloads)
+
+
+
+[10分钟搭建单机Kafka集群 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/136758040?from_voters_page=true)
+
+
+
+### 安装redis
+
+下载 [Index of /releases/ (redis.io)](http://download.redis.io/releases/)
+
+
+
+### 安装 consul
+
+ 下载 [Downloads | Consul by HashiCorp](https://www.consul.io/downloads)
+
+
+
+解压
+
+```text
+unzip consul_1.9.0_linux_amd64.zip
+
+```
+
+### 启动命令
+
+zk 启动
+
+/home/test02/zookeeper/zookeeper_node1/bin/zkServer.sh start;
+/home/test02/zookeeper/zookeeper_node2/bin/zkServer.sh start;
+/home/test02/zookeeper/zookeeper_node3/bin/zkServer.sh start;
+
+
+
+zk 启动
+
+/home/test02/zookeeper/zookeeper_node1/bin/zkServer.sh stop;
+/home/test02/zookeeper/zookeeper_node2/bin/zkServer.sh stop;
+/home/test02/zookeeper/zookeeper_node3/bin/zkServer.sh stop;
+
+zk 查看状态
+
+/home/test02/zookeeper/zookeeper_node1/bin/zkServer.sh status;
+/home/test02/zookeeper/zookeeper_node2/bin/zkServer.sh status;
+/home/test02/zookeeper/zookeeper_node3/bin/zkServer.sh status;
+
+
+
+
+
+
+
+
+
+kafka 启动
+
+nohup /home/test02/kafka/kafka_2.12-2.2.1/bin/kafka-server-start.sh /home/test02/kafka/kafka_2.12-2.2.1/config/server_node3.properties > /home/test02/kafka/log/kafka3-logs/startup.log 2>&1 &
+nohup /home/test02/kafka/kafka_2.12-2.2.1/bin/kafka-server-start.sh /home/test02/kafka/kafka_2.12-2.2.1/config/server_node2.properties > /home/test02/kafka/log/kafka2-logs/startup.log 2>&1 &
+nohup /home/test02/kafka/kafka_2.12-2.2.1/bin/kafka-server-start.sh /home/test02/kafka/kafka_2.12-2.2.1/config/server_node1.properties > /home/test02/kafka/log/kafka1-logs/startup.log 2>&1 &
+
+
+
+kafka 停止(三个节点都停止)
+
+/home/test02/kafka/kafka_2.12-2.2.1/bin/kafka-server-stop.sh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend-deployment.md b/backend-deployment.md
new file mode 100644
index 0000000..86055b8
--- /dev/null
+++ b/backend-deployment.md
@@ -0,0 +1,96 @@
+---
+title: 如何部署后端服务
+---
+
+[[_TOC_]]
+
+这里描述如何安装相关软件,增加配置,并部署后端产出物的整个过程。
+
+以下以 Ubuntu 18.04 为例,假设访问地址为 `http://dev-app.rqm.yldev.net`。
+
+# 准备服务器
+应在 VMware vSphere 创建一(或多)台虚拟机,或由项目方 IT 提供一(或多)台 Linux 服务器。
+- 安装有 OpenSSH Server,用于远程访问。
+- 应仅对 Web 服务器开放 18080 ~ 18100 端口
+
+# 安装 OpenJDK 8
+应使用 `apt-get install openjdk-8-jdk` 安装 OpenJDK 8。
+
+# 安装业务服务
+后端业务服务应安装为 Systemd 服务,由以下几部分配置组成。在配置完成后,应使用 `systemctl enable xxx` 设置为重启时自动启动。
+
+## Systemd 配置
+这里定义某个业务服务的 Systemd 配置,描述相关账户、加载的环境变量,以及执行命令等。
+```bash
+# /etc/systemd/system/rqm-prepare.service
+[Unit]
+Description=rqm-prepare
+After=syslog.target
+
+[Service]
+User=nobody # 以非 root 身份运行
+EnvironmentFile=-/etc/default/rqm-prepare # 从此文件加载环境变量
+WorkingDirectory=/opt/rqm/
+ExecStart=/usr/bin/java $LOGGING $JAVA_OPTS -Dserver.port=${PORT} -Djava.security.egd=file:///dev/urandom -jar $BINARY
+SuccessExitStatus=143
+Restart=on-failure # 如果是非正常退出则重启服务
+StandardOutput=journal
+StandardError=journal
+
+[Install]
+WantedBy=multi-user.target
+```
+
+## 环境变量
+某个服务运行时所需的环境变量均在此文件中配置,包括运行的端口号、可执行文件以及时区等。
+
+```bash
+# /etc/default/rqm-prepare
+PORT=18082
+BINARY=/opt/rqm/rqm-prepare.jar
+JAVA_OPTS=-Xms256m -Xmx1024m
+TZ=Asia/Shanghai # 指定当前服务运行在东八区
+LOGGING="-Dlogging.config=/etc/rqm/logback.xml" # 按照指定的配置输出日志
+# Service References
+RETROFIT_ENDPOINTS_DOCUMENT_BASE_URL=http://127.0.0.1:18083/ # 其他服务的引用地址
+```
+
+## 日志配置
+这里定义业务服务输出的日志级别及目标。
+
+```xml
+
+
+
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n
+
+
+
+ udp:graylog.ylops.net
+ 12201
+ 1.1
+ true
+ true
+ name=${name}
+ true
+ yyyy-MM-dd HH:mm:ss,SSSS
+
+ INFO
+
+
+
+
+
+
+
+
+```
+
+# 部署产出物
+应从后端版本库 CI 中下载产出物,并拷贝至 `/opt/rqm/` 目录中。
+
+# 启动并测试
+可使用 `systemctl start xxx` 启动单个业务服务。使用 `curl http://localhost:18082/` 访问该服务。
diff --git a/centos 安装 docker.md b/centos 安装 docker.md
new file mode 100644
index 0000000..dc63f98
--- /dev/null
+++ b/centos 安装 docker.md
@@ -0,0 +1,263 @@
+
+
+# Centos 安装 Docker
+
+
+
+## 安装脚本
+
+一键安装脚本!Linux系统都支持!
+
+```
+
+ curl -sSL https://get.docker.com/ | sh
+
+ #国内阿里云镜像
+ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
+
+ #Azure源(中国区azure)
+ curl -fsSL https://get.docker.com | bash -s docker --mirror AzureChinaCloud
+```
+
+
+
+## 启动服务
+
+```
+
+ # 启动docker服务
+ systemctl start docker.service
+
+ # 停止docker服务
+ systemctl stop docker.service
+
+ # 重启docker服务
+ systemctl restart docker.service
+
+ # 查看docker服务当前状态
+ systemctl status docker.service
+
+ # 设置 docker 服务开机自启动
+ systemctl enable docker.service
+
+ # 停止 docker 服务开机自启动
+ systemctl disable docker.service
+```
+
+
+
+## 国内镜像
+
+为了加速下载镜像文件,国内服务器可以指定国内的镜像!
+
+阿里云:https://registry.cn-hangzhou.aliyuncs.com/
+
+华为云:https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com/
+
+Docker中国:https://registry.docker-cn.com
+
+网易:http://hub-mirror.c.163.com
+
+中科大:https://docker.mirrors.ustc.edu.cn
+
+腾讯云 https://mirror.ccs.tencentyun.com
+
+
+
+### 写入配置文件 重启服务
+
+```
+
+ sudo mkdir -p /etc/docker
+
+ sudo tee /etc/docker/daemon.json <<-'EOF'
+ {
+ "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
+ }
+ EOF
+ sudo systemctl daemon-reload
+ sudo systemctl restart docker
+```
+
+
+
+
+
+## 迁移目录
+
+主要是为了不让Docker镜像,容器占用系统盘的容量!
+
+如果就一块盘或者系统盘容量大,这部分内容可忽略!
+
+```
+
+ # 给Docker廋身一下
+ #docker system prune
+
+ #停止Docker服务
+ systemctl stop docker
+
+ #创建目标目录
+ mkdir -p /data/docker/
+
+ #同步源目录文件 -> 目标目录
+ rsync -avz /var/lib/docker/ /data/docker
+
+ #修改Docker配置文件
+ vim /etc/docker/daemon.json
+
+ #修改或者新增内容如下
+ {
+ "data-root": "/data/docker"
+ }
+
+ #启动Docker服务
+ systemctl start docker
+
+ # 查看是否修改成功
+ docker info | grep "Docker Root Dir"
+
+ #输出:Docker Root Dir: /data/docker 就OK了!
+
+```
+
+
+
+## 常用命令
+
+```
+ #下载镜像
+ docker pull nginx
+ #启动容器
+ #下面命令为启动一个nginx,将服务器的8080 端口 映射到 容器的80端口,且容器命名为nginx-test
+ docker run -d -p 8080:80 nginx --name="nginx-test"
+
+ #停止容器
+ docker stop xxxx
+
+ 删除容器
+ docker rm id
+
+
+ -f, --force=false 是否强行终止并删除一个运行中的容器
+ -l, --link=false :删除容器的连接 ,但保留容器
+ -v, --volumes=false :删除容器挂载的数据卷
+
+
+
+ 删除所有镜像
+ docker rmi $(docker images -q)
+ #停止所有容器
+ docker stop $(docker ps -a -q)
+ #删除所有容器
+ docker rm $(docker ps -a -q)
+ #启动所有容器
+ docker start $(docker ps -a -q)
+
+
+ #进入容器
+ docker exec -it jd /bin/bash
+ docker exec -it jd /bin/sh
+ docker exec -it jd /bash
+ docker exec -it jd /sh
+
+
+ #宿主往容器中复制文件
+ docker cp /etc/apt/sources.list ubuntu:/etc/apt/
+
+
+ #容器中往宿主机复制
+ docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt
+
+
+ #不进入容器 在容器中执行命令
+ docker exec ID 命令
+
+ #查看容器信息
+ docker inspect ID
+
+
+ #查询部分信息
+ docker inspect -f {{.Config.Hostname}} id
+```
+
+
+
+## 开发调试
+
+### Build Dockerfile
+
+```
+
+
+ #比如我们要写一个Dockerfile 该怎么调试呢?
+ docker build -t [命名] [编译的目录]
+
+ #比如:AList目录中有Dockerfile,重新编译镜像,且命名成alist
+ docker build -t alist ./AList/
+
+ #启动 alist
+ docker run alist --name="alist"
+
+```
+
+## 容器目录映射
+
+以docker hub的centos:8为研究对象
+
+**1、宿主机和容器映射目录都不存在**
+
+宿主机和容器映射目录都会自动创建,且在一边操作等同于在另一边操作。
+
+**2、宿主机目录不存在,容器映射目录为空。容器中/usr/lib/games目录为空**
+
+宿主机映射目录会自动创建,且在一边操作等同于在另一边操作。
+
+**3、宿主机目录不存在,容器映射目录不为空。容器中/usr/lib/locale/C.utf8目录不为空**
+
+宿主机映射目录会自动创建,容器映射目录中原来的文件都消失了,在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。
+
+
+
+**4、宿主机映射目录为空,容器映射目录不存在**
+
+容器映射目录会自动创建,且在一边操作等同于在另一边操作。
+
+**5、宿主机和容器映射目录都为空。**
+
+在一边操作等同于在另一边操作。
+
+**6、宿主机映射目录为空,容器映射目录不为空**
+
+容器映射目录中原来的文件都消失了。在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。
+
+**7、宿主机映射目录不为空,容器映射目录不存在**
+
+容器映射目录会自动创建,一进去该目录就能看见宿主机映射目录中的文件,且在一边操作等同于在另一边操作。
+
+**8、宿主机映射目录不为空,容器映射目录为空**
+
+一进容器映射目录就能看见宿主机映射目录中的文件,且在一边操作等同于在另一边操作。
+
+**9、宿主机和容器映射目录都不为空。**
+
+容器映射目录中原来的文件都消失了。在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。
+
+
+
+
+
+
+
+## 常见问题
+
+容器内没有网 不能解析dns
+
+创建时添加以下参数
+
+```
+--network=host
+```
+
+
+
diff --git a/centos_防火墙.md b/centos_防火墙.md
new file mode 100644
index 0000000..646e713
--- /dev/null
+++ b/centos_防火墙.md
@@ -0,0 +1,29 @@
+• 查看防火墙状态:命令执行后,响应结果包含active (running) 表示防火墙是开启状态。如果防火墙没有开启,可以使用后文中的命令开启防火墙。
+\>systemctl status firewalld
+
+• 查看已开放端口:该命令会列出防火墙所有对外开放访问的端口的信息
+\>firewall-cmd --list-all
+
+
+• 防火墙开放某个端口(如:kafka服务端口为9092)
+\>firewall-cmd --zone=public --add-port=9092/tcp --permanent
+success
+
+
+命令含义:
+–zone: 作用域
+–add-port=9092/tcp: 添加端口,格式为:端口/通讯协议
+–permanent: 永久生效,没有此参数重启后失效
+• 开放端口后需重载防火墙配置,这样新开放的端口才能生效
+\>firewall-cmd --reload
+Success
+
+
+• 如果决定收回某些端口的开放权限,执行下列命令
+firewall-cmd --zone=public --remove-port=10050/tcp;firewall-cmd --runtime-to-permanent;firewall-cmd --reload;
+• firewalld的linux其他基本操作
+• 启动防火墙: systemctl start firewalld
+• 关闭防火墙: systemctl stop firewalld
+• 查看防火墙状态: systemctl status firewalld
+• 开机禁用 : systemctl disable firewalld
+• 开机启用 : systemctl enable firewalld
\ No newline at end of file
diff --git a/centos搭建edb12.md b/centos搭建edb12.md
new file mode 100644
index 0000000..d4b960f
--- /dev/null
+++ b/centos搭建edb12.md
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+```
+PGSETUP_INITDB_OPTIONS="-E UTF-8 -D 数据路径" /usr/edb/as12/bin/edb-as-12-setup initdb
+
+注意 更改数据路径需要修改 service 文件
+```
+
+```
+systemctl start edb-as-12
+```
+
diff --git a/debian 11 安装 编译nginx.md b/debian 11 安装 编译nginx.md
new file mode 100644
index 0000000..b0b1d74
--- /dev/null
+++ b/debian 11 安装 编译nginx.md
@@ -0,0 +1,545 @@
+### debian 11 安装 编译nginx
+
+
+
+##### 安装编译环境
+
+```
+ #GCC
+ apt install -y build-essential
+
+ #安装正则库
+ apt install -y libpcre3 libpcre3-dev
+
+ #安装zlib库
+ apt install -y zlib1g-dev
+
+ #openssl
+ apt install -y openssl libssl-dev
+
+```
+
+
+
+##### 下载源码
+
+官网 https://nginx.org/en/download.html
+
+这里以 `nginx-1.20.2` 版本为例
+
+https://nginx.org/download/nginx-1.22.0.tar.gz
+
+
+
+
+
+##### 解压源码
+
+```
+ cd /opt/
+
+ wget https://nginx.org/download/nginx-1.22.0.tar.gz
+
+ tar -zxvf nginx-1.22.2.tar.gz
+
+ cd nginx-1.22.2/
+
+```
+
+
+
+##### 配置编译参数模块
+
+指定安装路径 --prefix=/usr/local/nginx
+
+执行用户、组 可以不加,如果系统中没有 该用户会报错
+
+--user=www \
+--group=www \
+
+
+
+```
+ ./configure \
+ --prefix=/usr/local/nginx \
+ --user=www \
+ --group=www \
+ --sbin-path=/usr/local/nginx/sbin/nginx \
+ --conf-path=/usr/local/nginx/nginx.conf \
+ --error-log-path=/var/log/nginx/error.log \
+ --http-log-path=/var/log/nginx/access.log \
+ --pid-path=/var/run/nginx.pid \
+ --lock-path=/var/run/nginx.lock \
+ --http-client-body-temp-path=/var/cache/nginx/client_temp \
+ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
+ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
+ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
+ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
+ --with-file-aio \
+ --with-threads \
+ --with-http_addition_module \
+ --with-http_auth_request_module \
+ --with-http_dav_module \
+ --with-http_flv_module \
+ --with-http_gunzip_module \
+ --with-http_gzip_static_module \
+ --with-http_mp4_module \
+ --with-http_random_index_module \
+ --with-http_realip_module \
+ --with-http_secure_link_module \
+ --with-http_slice_module \
+ --with-http_ssl_module \
+ --with-http_stub_status_module \
+ --with-http_sub_module \
+ --with-http_v2_module \
+ --with-mail \
+ --with-mail_ssl_module \
+ --with-stream \
+ --with-stream_realip_module \
+ --with-stream_ssl_module \
+ --with-stream_ssl_preread_module
+
+```
+
+
+
+
+
+##### 编译 and 安装 nginx
+
+```
+ make
+
+ make install
+```
+
+
+
+##### 创建进程守护
+
+```
+ vim /usr/lib/systemd/system/nginx.service
+
+
+
+
+ [Unit]
+ Description=nginx
+ After=network.target
+
+ [Service]
+ Type=forking
+ ExecStart=/usr/local/nginx/sbin/nginx
+ ExecReload=/usr/local/nginx/sbin/nginx -s reload
+ ExecStop=/usr/local/nginx/sbin/nginx -s quit
+ PrivateTmp=true
+
+ [Install]
+ WantedBy=multi-user.target
+
+
+```
+
+
+
+
+
+##### 验证安装
+
+```
+curl 127.0.0.1
+```
+
+
+
+配置nginx.conf
+
+加到 http 节点中
+
+```
+ include mime.types;
+ default_type application/octet-stream;
+
+ server_names_hash_bucket_size 512;
+ client_header_buffer_size 32k;
+ large_client_header_buffers 4 32k;
+ client_max_body_size 50m;
+
+ sendfile on;
+ tcp_nopush on;
+
+ keepalive_timeout 60;
+
+ tcp_nodelay on;
+
+ fastcgi_connect_timeout 300;
+ fastcgi_send_timeout 300;
+ fastcgi_read_timeout 300;
+ fastcgi_buffer_size 64k;
+ fastcgi_buffers 4 64k;
+ fastcgi_busy_buffers_size 128k;
+ fastcgi_temp_file_write_size 256k;
+ fastcgi_intercept_errors on;
+
+ gzip on;
+ gzip_min_length 1k;
+ gzip_buffers 4 16k;
+ gzip_http_version 1.1;
+ gzip_comp_level 2;
+ gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
+ gzip_vary on;
+ gzip_proxied expired no-cache no-store private auth;
+ gzip_disable "MSIE [1-6]\.";
+
+ limit_conn_zone $binary_remote_addr zone=perip:10m;
+ limit_conn_zone $server_name zone=perserver:10m;
+
+ server_tokens off;
+ access_log off;
+```
+
+
+
+##### 分离配置文件
+
+将每个网站单独一个配置 ,在nginx中全局加载
+
+在/etc/ 目录中创建 nginx 文件夹用来储存 配置
+
+```
+ mkdir /etc/nginx/site-enable -p
+
+ mkdir /etc/nginx/tcp-enable
+
+ cd /etc/nginx/site-enable
+
+ vim site.conf
+```
+
+
+
+#### 具体使用
+
+如果你是按我的方法编译,那么,需要注意。
+
+- `/usr/local/nginx`:为Nginx编译安装的地址。
+- `/usr/local/nginx/nginx.conf`:Nginx默认配置文件。
+
+同时,我们使用`systemctl`对Nginx进行管理:
+
+- `systemctl start nginx`:启动Nginx服务。
+- `systemctl reload nginx`:Nginx配置重载。
+- `systemctl stop nginx`:停止Nginx服务。
+
+
+
+#### 常见问题
+
+没有用户
+
+
+
+
+
+目录创建失败(多级目录)
+
+
+
+#### 附1: `systemctl 操作`
+
+```
+ #重载配置文件 添加新的 或者修改都要重载。
+ systemctl daemon-reload
+
+ #启动Nginx服务
+ systemctl start nginx
+
+ #Nginx配置重载。
+ systemctl reload nginx
+
+ #停止Nginx服务。
+ systemctl stop nginx
+
+ #重启nginx
+ systemctl restart nginx
+
+ # 停止nginx服务开机自启动
+ systemctl disable nginx.service
+```
+
+#### 附2: `journalctl操作`
+
+```
+
+
+ #追踪日志
+ journalctl -f -u nginx.service
+
+ #读日志
+ journalctl -r -u nginx.service
+```
+
+
+
+#### 附3: `linux 创建用户`
+
+```
+ #创建用户组
+ groupadd www
+
+ #创建用户
+ useradd www -g www
+ adduser 用户名
+```
+
+##### useradd与adduser 差异
+
+###### 命令使用方法
+
+```
+ useradd 用户名
+
+ adduser 用户名
+```
+
+###### 命令差异总结
+
+在Ubuntu下`useradd`与`adduser`命令不同
+
+- useradd在使用该命令创建用户是不会在/home下自动创建与用户名同名的用户目录,而且不会自动选择shell版本,也没有设置密码,那么这个用户是不能登录的,需要使用passwd命令修改密码。
+
+- adduser在使用该命令创建用户是会在/home下自动创建与用户名同名的用户目录,选择系统shell版本,会在创建时会提示输入密码,更加友好。
+
+在CentOS下`useradd`与`adduser`命令相同
+
+- useradd 和 adduser都会在/home下自动创建与用户名同名的用户目录,但是没有提示输入密码,需要使用passwd手动设置一下!
+
+ `passwd 用户名; #为用户设置密码`
+
+#### 附4: 完整的nginx 配置文件
+
+apt 卸载nginx
+
+```
+查询 nginx 相关软件
+
+dpkg --get-selections|grep nginx
+
+卸载nginx(删除配置)
+apt-get --purge remove nginx
+
+
+```
+
+
+
+#### 附5: 完整的nginx 配置文件
+
+###### nginx.conf
+
+```
+
+worker_processes auto;
+
+worker_rlimit_nofile 51200;
+
+stream {
+ log_format tcp_format '$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_received|$session_time|$upstream_addr|$upstream_bytes_sent|$upstream_bytes_received|$upstream_connect_time';
+
+ access_log /var/log/nginx/tcp-access.log tcp_format;
+ error_log /var/log/nginx/tcp-error.log;
+
+ include /etc/nginx/tcp-enable/*.conf;
+}
+
+
+events {
+ use epoll;
+ worker_connections 51200;
+ multi_accept on;
+ }
+
+
+http {
+ include mime.types;
+ default_type application/octet-stream;
+
+ server_names_hash_bucket_size 512;
+ client_header_buffer_size 32k;
+ large_client_header_buffers 4 32k;
+ client_max_body_size 50m;
+
+ sendfile on;
+ tcp_nopush on;
+
+ keepalive_timeout 60;
+
+ tcp_nodelay on;
+
+ fastcgi_connect_timeout 300;
+ fastcgi_send_timeout 300;
+ fastcgi_read_timeout 300;
+ fastcgi_buffer_size 64k;
+ fastcgi_buffers 4 64k;
+ fastcgi_busy_buffers_size 128k;
+ fastcgi_temp_file_write_size 256k;
+ fastcgi_intercept_errors on;
+
+ gzip on;
+ gzip_min_length 1k;
+ gzip_buffers 4 16k;
+ gzip_http_version 1.1;
+ gzip_comp_level 2;
+ gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
+ gzip_vary on;
+ gzip_proxied expired no-cache no-store private auth;
+ gzip_disable "MSIE [1-6]\.";
+
+ limit_conn_zone $binary_remote_addr zone=perip:10m;
+ limit_conn_zone $server_name zone=perserver:10m;
+
+ server_tokens off;
+ access_log off;
+
+ server {
+ listen 80;
+ server_name localhost;
+ location / {
+ root html;
+ index index.html index.htm;
+ }
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ root html;
+ }
+ }
+include /etc/nginx/site-enable/*.conf;
+}
+
+```
+
+
+
+###### web-site.conf
+
+```
+server {
+ listen 80;
+ server_name frp.plugin.dr1997.com;
+ index index.php index.html index.htm default.php default.htm default.html;
+ root /www/wwwroot/frp.plugin.dr1997.com;
+
+ #禁止访问的文件或目录
+ location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
+ {
+ return 404;
+ }
+
+ #一键申请SSL证书验证目录相关设置
+ location ~ \.well-known{
+ allow all;
+ }
+
+ access_log /www/wwwlogs/frp.plugin.dr1997.com.log;
+ error_log /www/wwwlogs/frp.plugin.dr1997.com.error.log;
+}
+```
+
+###### ssl
+
+```
+server {
+ listen 80;
+ listen 443 ssl http2;
+ server_name frp.dr1997.com *.frp.dr1997.com;
+ index index.php index.html index.htm default.php default.htm default.html;
+ root /www/wwwroot/frp.dr1997.com;
+
+ #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
+ #error_page 404/404.html;
+ #HTTP_TO_HTTPS_START
+ if ($server_port !~ 443){
+ rewrite ^(/.*)$ https://$host$1 permanent;
+ }
+ #HTTP_TO_HTTPS_END
+ ssl_certificate /www/server/panel/vhost/cert/frp.dr1997.com/fullchain.pem;
+ ssl_certificate_key /www/server/panel/vhost/cert/frp.dr1997.com/privkey.pem;
+ ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
+ ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
+ ssl_prefer_server_ciphers on;
+ ssl_session_cache shared:SSL:10m;
+ ssl_session_timeout 10m;
+ add_header Strict-Transport-Security "max-age=31536000";
+ error_page 497 https://$host$request_uri;
+
+ #SSL-END
+
+
+ #一键申请SSL证书验证目录相关设置
+ location ~ \.well-known{
+ allow all;
+ }
+
+ access_log /www/wwwlogs/frp.dr1997.com.log;
+ error_log /www/wwwlogs/frp.dr1997.com.error.log;
+}
+```
+
+###### 反向代理(http)
+
+```
+ server {
+ listen 80;
+ listen 443 ssl http2;
+ server_name frp.dr1997.com *.frp.dr1997.com;
+ index index.php index.html index.htm default.php default.htm default.html;
+ root /www/wwwroot/frp.dr1997.com;
+
+ #PROXY-START/
+ location ~* \.(gif|png|jpg|css|js|woff|woff2)$ {
+ proxy_pass http://127.0.0.1:8880;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header REMOTE-HOST $remote_addr;
+ expires 12h;
+ }
+ location / {
+ proxy_pass http://127.0.0.1:8880;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header REMOTE-HOST $remote_addr;
+
+ add_header X-Cache $upstream_cache_status;
+
+ #Set Nginx Cache
+
+ add_header Cache-Control no-cache;
+ }
+
+ #PROXY-END/
+
+ access_log /www/wwwlogs/frp.dr1997.com.log;
+ error_log /www/wwwlogs/frp.dr1997.com.error.log;
+ }
+
+
+
+```
+
+###### 反向代理 tcn
+
+```
+ upstream tcp {
+ server 127.0.0.1:3306;
+ }
+
+ server {
+ listen 3307;
+ proxy_connect_timeout 8s;
+ proxy_timeout 24h;
+ proxy_pass tcp;
+ }
+```
+
diff --git a/git 删除远端文件.md b/git 删除远端文件.md
new file mode 100644
index 0000000..e9b533e
--- /dev/null
+++ b/git 删除远端文件.md
@@ -0,0 +1,13 @@
+# git 删除远端文件
+
+
+
+```
+git rm -r -n --cached 文件/文件夹名称
+
+加上 -n 这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览。
+
+
+git rm -r --cached 文件/文件夹名称
+```
+
diff --git a/gitea+drone_cicd部署.md b/gitea+drone_cicd部署.md
new file mode 100644
index 0000000..f6aa7cc
--- /dev/null
+++ b/gitea+drone_cicd部署.md
@@ -0,0 +1,425 @@
+
+
+# gitea+drone_cicd部署记录
+
+
+
+## 基础环境
+
+1. centos 7.6 bit64 *3
+2. mysql 8.0
+3. gitea 1.16.8
+4. Nginx nginx-1.20.0
+
+## 服务器划分
+
+- 一台 2H4G8M80G硬盘的腾讯云(248-3) 安装 mysql+gitea+nginx(代理gitea)
+- 一台 2H4G8M60G硬盘的腾讯云(248-2) 安装docker+drone+drone runner
+- 一台 2H4G8M60G硬盘的腾讯云(248-1) 安装 mysql+java+ nginx(服务发布)
+
+
+
+## 安装mysql
+
+#### 下载mysql 源
+
+打开地址
+
+https://dev.mysql.com/downloads/repo/yum/
+
+找到 **Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package**
+
+点击进去 找到 mysql 8.0 的源
+
+在ssh 中下载
+
+```
+wget https://repo.mysql.com//mysql80-community-release-el7-6.noarch.rpm
+```
+
+查找 并卸载 自带的mysql
+
+```
+rpm -qa|grep mysql
+find / -name mysql
+
+rpm -e --nodeps mysql-libs-5.1.*
+
+```
+
+#### 安装mysql
+
+```
+
+//安装 mysql 源
+yum localinstall mysql80-community-release-el7-3.noarch.rpm
+
+
+//安装密钥
+rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
+
+//安装mysql 8.0
+yum install mysql-community-server
+
+
+//启动 mysql
+service mysqld start
+
+```
+
+#### 修改mysql 密码
+
+```arcade
+//查询密码
+grep 'temporary password' /var/log/mysqld.log
+
+//登录mysql
+mysql -uroot -p
+
+//修改密码
+ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
+
+//刷新权限
+flush privileges;
+
+
+//创建用户名
+create user '你的用户名'@'%' identified with mysql_native_password by '你的密码';
+create user 'gitea'@'%' identified with mysql_native_password by 'gitea147258;D';
+//设置权限
+grant all on *.* to '你的用户名'@'%';
+grant all on *.* to 'gitea'@'%';
+//刷新权限
+flush privileges;
+
+```
+
+## 安装gitea
+
+
+
+### 安装git
+
+```
+yum -y install git
+```
+
+### 安装gitea
+
+```
+创建一个目录用于存放gitea和git数据的目录
+mkdir /opt/git
+
+// 创建用户组
+groupadd git
+//创建用户
+useradd git -g git
+
+//进入创建的目录
+cd /opt/git
+
+//下载github 最新版 (https://github.com/go-gitea/gitea)
+wget -O gitea https://github.com/go-gitea/gitea/releases/download/v1.16.8/gitea-1.16.8-linux-amd64
+
+// 设置成可运行文件
+chmod +x gitea
+
+
+//切换至 git 用户
+su git
+
+测试运行 能访问后 退出 切换到 root
+./gitea web
+
+//将刚刚创建的目录授权给 git 用户,组。
+chown -R git:git /opt/git
+
+
+//设置进程守护
+vim /etc/systemd/system/gitea.service
+
+[Unit]
+Description=Gitea
+After=syslog.target
+After=network.target
+
+[Service]
+RestartSec=2s
+Type=simple
+User=git
+Group=git
+ExecStart=/opt/git/gitea web --config /opt/git/custom/conf/app.ini
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
+
+
+
+//运行
+systemctl start gitea
+// 查看是否成功运行
+ps -aux | grep gitea
+```
+
+### 安装Nginx
+
+#### 下载nginx
+
+```bash
+//切换目录 (看个人习惯)
+cd /opt/nginx
+wget http://nginx.org/download/nginx-1.20.0.tar.gz
+
+```
+
+#### 安装依赖
+
+```
+# 安装gcc、gcc-c++
+yum -y install gcc
+yum -y install gcc-c++
+
+# 安装pcre 、zilb
+yum -y install pcre*
+yum -y install zlib*
+
+# 安装openssl(若需要支持 https 协议)
+yum -y install openssl
+yum -y install openssl-devel
+```
+
+
+
+#### 解压nginx
+
+```
+tar -zxvf nginx-1.20.0.tar.gz
+```
+
+#### 编译nginx
+
+```
+ //进入nginx 目录
+ cd nginx-1.20.0
+
+ //配置编译参数
+ ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre
+
+ //编译安装
+ make && make install
+
+ //指定配置启动 访问ip 看到欢迎信息则成功
+ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
+
+
+
+```
+
+#### 进程守护
+
+```
+# 新建文件
+vim /lib/systemd/system/nginx.service
+
+# 添加内容
+[Unit]
+Description=nginx.server
+After=network.target
+
+[Service]
+Type=forking
+PIDFILE=/var/run/nginx.pid
+ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
+ExecRepload=/bin/kill -s HUP $MAINPID
+ExecStop=/bin/kill -s QUIT $MAINPID
+PrivateTmp=true
+
+[Install]
+WantedBy=multi-user.target
+```
+
+
+
+#### 开机自启
+
+```
+# 启动nginx服务
+systemctl start nginx.service
+
+# 停止nginx服务
+systemctl stop nginx.service
+
+# 重启nginx服务
+systemctl restart nginx.service
+
+# 查看nginx服务当前状态
+systemctl status nginx.service
+
+# 设置nginx服务开机自启动
+systemctl enable nginx.service
+
+# 停止nginx服务开机自启动
+systemctl disable nginx.service
+```
+
+
+
+#### 常用命令
+
+```
+# 进入目录
+cd /usr/local/nginx/sbin
+
+# 验证配置是否正确
+./nginx -t
+# 如果看到如下内容, 那么配置正确, 可以重启Nginx
+nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
+nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
+
+# 重启Nginx, 之后就可以通过域名访问了, 哈哈
+./nginx -s reload
+```
+
+
+
+#### 配置反向代理
+
+目录 ssl证书自行替换
+
+```
+server
+{
+ listen 80;
+ listen 443 ssl http2;
+ server_name gitea.dr1997.com;
+ index index.php index.html index.htm default.php default.htm default.html;
+ root /www/wwwroot/gitea_dr1997_com;
+
+ #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
+ #error_page 404/404.html;
+ #HTTP_TO_HTTPS_START
+ if ($server_port !~ 443){
+ rewrite ^(/.*)$ https://$host$1 permanent;
+ }
+ #HTTP_TO_HTTPS_END
+ ssl_certificate /www/ssl/gitea_dr1997_com/fullchain.pem;
+ ssl_certificate_key /www/ssl/gitea_dr1997_com/privkey.pem;
+ ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
+ ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
+ ssl_prefer_server_ciphers on;
+ ssl_session_cache shared:SSL:10m;
+ ssl_session_timeout 10m;
+ add_header Strict-Transport-Security "max-age=31536000";
+ error_page 497 https://$host$request_uri;
+
+ #SSL-END
+
+ #ERROR-PAGE-START 错误页配置,可以注释、删除或修改
+ #error_page 404 /404.html;
+ #error_page 502 /502.html;
+ #ERROR-PAGE-END
+
+ #引用反向代理规则,注释后配置的反向代理将无效
+
+ location / {
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_pass http://127.0.0.1:3000;
+ }
+ location ~ .*\.(js|css|png)$ {
+ proxy_pass http://127.0.0.1:3000;
+ }
+ #PROXY-END/
+
+ #禁止访问的文件或目录
+ location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
+ {
+ return 404;
+ }
+
+
+ access_log /www/wwwlogs/gitea.dr1997.com.log;
+ error_log /www/wwwlogs/gitea.dr1997.com.error.log;
+}
+```
+
+## 安装 Drone
+
+### 安装 drone server
+
+### 安装 drone runner
+
+### 流水线配置
+
+```
+workspace:
+ base: /srv/drone-demo
+ path: .
+
+pipeline:
+ build:
+ image: golang:alpine
+ # pull: true
+ environment:
+ - KEY=VALUE
+ secrets: [key1, key2]
+ commands:
+ - echo $$KEY
+ - pwd
+ - ls
+ - go version
+ - GO111MODULE=off CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app ./
+ - ls
+ - ./app
+
+```
+
+全程容器化
+
+
+
+```
+
+docker run \
+ --volume=/var/lib/drone:/data \
+ --env=DRONE_GITEA_SERVER=https://git.dr1997.com \
+ --env=DRONE_GITEA_CLIENT_ID=74e78545-efa3-4c69-b9a3-226579f65ead \
+ --env=DRONE_GITEA_CLIENT_SECRET=BeSfuXea0EFwNCNNE3dLA4aDbZUyAeFEmpjpibZx1Ysq \
+ --env=DRONE_RPC_SECRET=ad12a3284ecc37e2bcb03d40a88854e2 \
+ --env=DRONE_SERVER_HOST=drone.dr1997.com \
+ --env=DRONE_SERVER_PROTO=https \
+ --env=DRONE_TLS_AUTOCERT=true \
+ --env=DRONE_GIT_ALWAYS_AUTH=true \
+ --publish=80:80 \
+ --publish=443:443 \
+ --restart=always \
+ --detach=true \
+ --name=drone \
+ drone/drone:2
+
+
+
+
+ docker pull drone/drone-runner-docker:1
+
+
+
+ docker run --detach \
+ --volume=/var/run/docker.sock:/var/run/docker.sock \
+ --env=DRONE_RPC_PROTO=https \
+ --env=DRONE_RPC_HOST=drone.dr1997.com \
+ --env=DRONE_RPC_SECRET=ad12a3284ecc37e2bcb03d40a88854e2 \
+ --env=DRONE_RUNNER_CAPACITY=2 \
+ --env=DRONE_RUNNER_NAME=my-first-runner \
+ --publish=3000:3000 \
+ --restart=always \
+ --name=runner \
+ drone/drone-runner-docker:1
+```
+
+
+
+
+
diff --git a/mysql 迁移数据至postgresql.md b/mysql 迁移数据至postgresql.md
new file mode 100644
index 0000000..34094b7
--- /dev/null
+++ b/mysql 迁移数据至postgresql.md
@@ -0,0 +1,176 @@
+# mysql 迁移数据至postgresql
+
+
+
+业务需要 需要将mysql 数据迁移到 postgresql 12
+
+
+
+百度了许久 迁移工具还是挺多的
+
+如
+
+
+
+
+
+docker pull quay.io/enterprisedb/postgresql:12
+
+
+
+
+docker pull ghcr.dockerproxy.com/username/image:tag
+
+
+
+docker pull quay.io/username/image:tag
+
+docker pull quay.dockerproxy.com/username/image:tag
+
+
+
+ docker run -d \
+ --name some-postgres \
+ -e POSTGRES_PASSWORD=cEnq!rnvWV7Z!~+7ag \
+ -p 5444:5444\
+ quay.io/enterprisedb/postgresql:12
+
+
+
+docker run -d --name some-postgres \
+ -e POSTGRES_PASSWORD=cEnq!rnvWV7Z!~+7ag \
+ quay.io/enterprisedb/postgresql:12
+
+
+
+
+
+ docker run -it \
+ --name some-postgres \
+ quay.io/enterprisedb/postgresql:12 \
+ psql -U postgres
+
+
+
+
+
+
+
+ mytsql 172.17.0.3
+
+
+
+
+ GitHub Container Registry
+常规镜像代理
+官方命令:docker pull ghcr.io/username/image:tag
+代理命令:docker pull ghcr.dockerproxy.com/username/image:tag
+
+
+
+docker run -d \
+ --name pgsql-12 \
+ -e POSTGRES_PASSWORD=yiling \
+ -p 5432:5432 \
+ -v /opt/postgresql/data:/var/lib/postgresql/data \
+ ghcr.dockerproxy.com/enterprisedb/postgresql:12
+
+
+ docker run -d --name pgsql-12 -e POSTGRES_PASSWORD=yiling -p 5432:5432 -v /opt/postgresql/data:/var/lib/postgresql/data ghcr.dockerproxy.com/enterprisedb/postgresql:12
+
+
+
+
+
+
+
+$ docker run -d \
+ --name some-postgres \
+ -e POSTGRES_PASSWORD=mysecretpassword \
+ ghcr.dockerproxy.com/enterprisedb/postgresql:12
+
+
+
+
+ bin:/usr/pgsql-12
+
+
+ data /var/lib/postgresql/data/pgdata
+
+
+
+
+
+ docker run -d -v /opt/pgload/pgload.load:/opt/pgload/pgload.load --name pgloader dimitri/pgloader:latest pgloader /opt/pgload/pgload.load
+
+
+
+
+
+
+ mysql_native_password
+
+
+
+ caching_sha2_password
+
+
+
+
+ 镜像
+ docker run -itd --name=ubuntu ubuntu:18.04 /bin/bash
+
+ apt-get update && apt-get install lsb-core
+
+
+
+ su -c 'echo "deb [arch=amd64] https://apt.enterprisedb.com/$(lsb_release -cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list'
+
+
+ su -c 'echo "machine apt.enterprisedb.com login start password oIVqaoGTDFL5aYHD" > /etc/apt/auth.conf.d/edb.conf'
+
+ apt-get -y install apt-transport-https
+
+ apt-get install -y dialog
+
+ apt-get install -y wget
+
+ apt-get install -y vim
+
+ wget -q -O - https://apt.enterprisedb.com/edb-deb.gpg.key | apt-key add -
+
+ apt update
+
+ apt-get -y install edb-as12-server
+
+ /usr/lib/edb-as/12/bin/pg_ctl -D /var/lib/edb-as/12/main -l /var/log/edb-as/edb-as-12-main.log start
+
+
+
+ /usr/lib/edb-as/12/bin/pg_ctl -D /var/lib/edb-as/12/main -l /var/log/edb-as/edb-as-12-main.log restart
+
+
+
+su - enterprisedb
+
+docker run -itd -v /opt/edb-as:/var/lib/edb-as/ -v /var/log/edb-as:/var/log/edb-as -p 5444:5444 --name=myedb myedb:12 /bin/bash
+
+
+
+
+
+docker run -itd -v /opt/edb-as:/var/lib/edb-as/ -v /var/log/edb-as:/var/log/edb-as/ -p 5444:5444 --name=myedb_v2 myedb:12_v2 /bin/bash
+
+
+
+su enterprisedb && /usr/lib/edb-as/12/bin/pg_ctl -D /var/lib/edb-as/12/main -l /var/log/edb-as/edb-as-12-main.log restart
+
+
+
+
+
+
+
+
+
+docker run -itd -p 5445:5444 --name=myedb_test myedb:12 /bin/bash
\ No newline at end of file
diff --git a/postgresql 数据备份 .md b/postgresql 数据备份 .md
new file mode 100644
index 0000000..52b9566
--- /dev/null
+++ b/postgresql 数据备份 .md
@@ -0,0 +1,14 @@
+## postgresql 数据备份
+
+
+
+
+
+以9.6为例
+
+root 账号进入 /opt/postgresql/as9.6/bin
+
+
+
+执行
+
diff --git a/postgresql导入导出.md b/postgresql导入导出.md
new file mode 100644
index 0000000..2275f5a
--- /dev/null
+++ b/postgresql导入导出.md
@@ -0,0 +1,134 @@
+```
+//导入
+pg_restore
+psql -Uicc -dicc -f ./xxx.sql
+psql -Uicc -dicc -h10.23.101.52 -f ./schema/tables/table.sql
+
+//导出表 模式 数据
+pg_dump -h10.23.101.52 -Uicc -dicc> ~/dum.sql
+pg_dump -h10.23.101.52 -Uicc -dicc -f icc.dmp
+
+报错停止 -v ON_ERROR_STOP=1
+
+-a 只要数据
+-s 只要表结构
+-O 不设置表归属
+-n, --schema=SCHEMA 只转储指定名称的模式
+-T 排除表
+-t 指定表
+-Z 压缩0-9
+
+
+pg_dump -U postgres vendemo | gzip > /vendemo.gz 备份下来只有30多k
+
+// 导出压缩文件
+pg_dump -h10.23.101.52 -Uicc -dicc -t 表名 -t表名 -a -O | gzip > iccData.gz
+pg_dump -Uicc -dicc | gzip > iccData.gz
+
+
+//导入压缩文件
+gzip -d iccData.gz | psql -Uicc -dicc -h10.23.101.52
+//没测试过
+psql -Uicctestedb -dicctestedb < gzip -d iccData.gz
+
+
+
+
+psql -U iccedb -d iccedb -h 192.168.53.118 -n 'icc2' | gzip > ~/iccedb_icc2_202206301142.gz
+
+psql -U iccedb -d iccedb -h 192.168.53.118 -v schema=icc2 | gzip > ~/iccedb_icc2_202206301142.gz
+
+
+
+
+
+pg_dump -Uenterprisedb -dicc -h10.23.101.119 \
+-T icc.t_icc_inv_leg \
+-T icc.t_icc_inv_leg_rate \
+-T icc.tcn_stat_new | gzip > ~/icc_icc_202207081500.gz
+
+
+
+./pg_dump -Uenterprisedb -dicc -h10.23.101.119 -O \
+-n icc -s \
+-f ~/icc_data_20220719_2130.sql
+
+yiing&654
+
+
+
+
+
+
+#导出 icc 模式下 排除 t_icc_inv_seg 等表 采用自定义格式压缩等级9(最大)
+
+./pg_dump -Uenterprisedb -dicc -h10.23.101.119 \
+-O -v -F c -Z 9 \
+-t 'icc.*' \
+-T '*.t_icc_inv_seg' \
+-T '*.t_icc_inv_leg_rate' \
+-T '*.t_icc_hsd_inv_leg' \
+-T '*.t_icc_inv_leg' \
+-T '*.tcn_stat_new' \
+-T '*.tcn_stat_sales_volume_total' \
+-T '*.t_foreign_ticket_record' \
+-T '*.tcn_stat_sales_volume_tmp' \
+-T '*.t_icc_hsd_inv_seg' \
+-T '*.tcn_stat_sales_volume' \
+-T '*.t_icc_inv_seg_cabin' \
+-f ~/icc_data_20220719_test.sql
+
+
+#恢复
+
+./pg_restore -Uenterprisedb -dtest2 -h10.23.101.119 \
+-F c ~/icc_data_20220719_test.sql
+
+
+
+
+
+
+
+uat
+psql -Uiccedb -diccedb -h192.168.53.118 -f ~/
+
+
+sit
+psql -Uicctestedb -dicctestedb -h192.168.53.123 -f ~/
+```
+
+
+
+
+
+
+
+
+
+
+
+导出导出部分数据
+
+```
+COPY (select * from icc.tcn_stat
+where afferent_date between to_date('20220701','yyyymmdd') and to_date('20220714','yyyymmdd') ) TO '/home/edbdata/test.csv' WITH csv;
+
+
+
+COPY (
+
+select * from icc.tcn_stat_sales_volume_total
+where flight_date between to_date('20220701','yyyymmdd') and to_date('20221231','yyyymmdd')
+
+) TO '/home/edbdata/tcn_stat_sales_volume_total.csv' WITH csv;
+
+
+
+
+COPY tcn_stat_sales_volume_total FROM '/home/edbdata/tcn_stat_sales_volume_total.csv' WITH csv;
+
+
+
+```
+
diff --git a/postgresql锁表查询.md b/postgresql锁表查询.md
new file mode 100644
index 0000000..7fb2256
--- /dev/null
+++ b/postgresql锁表查询.md
@@ -0,0 +1,39 @@
+```
+SELECT locker.pid,
+ pc.relname,
+ locker.mode,
+ locker_act.application_name,
+ least(query_start,xact_start) start_time,
+ locker_act.state,
+ CASE
+ WHEN granted='f' THEN
+ 'wait_lock'
+ WHEN granted='t' THEN
+ 'get_lock'
+ END lock_satus,current_timestamp - least(query_start,xact_start) AS runtime,
+ locker_act.query
+FROM pg_locks locker,pg_stat_activity locker_act, pg_class pc
+WHERE locker.pid=locker_act.pid
+ AND NOT locker.pid=pg_backend_pid()
+ AND application_name<>'pg_statsinfod'
+ AND locker.relation = pc.oid
+ AND pc.reltype<>0 --and pc.relname='t'
+ORDER BY runtime desc;
+
+
+SELECT pg_terminate_backend(14448)
+
+```
+
+
+
+```
+playboy=> select pg_size_pretty(pg_total_relation_size('test')); //查看表的总大小,包括索引大小
+ pg_size_pretty
+
+ playboy=> select pg_size_pretty(pg_relation_size('test')); //以KB,MB,GB的方式来查看表大小
+ pg_size_pretty
+
+
+```
+
diff --git a/使用 ora2pg 将oracle 数据导入 postgresql.md b/使用 ora2pg 将oracle 数据导入 postgresql.md
new file mode 100644
index 0000000..9ab7248
--- /dev/null
+++ b/使用 ora2pg 将oracle 数据导入 postgresql.md
@@ -0,0 +1,548 @@
+# 使用 ora2pg 将oracle 数据导入 postgresql
+
+## 安装edb
+##### 安装edb 源
+
+```
+
+yum -y install https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm
+
+```
+
+##### 设置账号密码
+
+```
+
+sed -i "s@:@start:oIVqaoGTDFL5aYHD@" /etc/yum.repos.d/edb.repo
+
+```
+
+##### 安装 扩展包 源
+
+```
+
+yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
+
+```
+
+##### 安装edb
+
+```
+
+yum -y install edb-as14-server
+
+```
+
+##### 初始化
+
+```
+
+PGSETUP_INITDB_OPTIONS="-E UTF-8 -D /home/edbdata" /usr/edb/as14/bin/edb-as-14-setup initdb
+
+PGSETUP_INITDB_OPTIONS="-E UTF-8 -D /home/edbdata" /usr/edb/as12/bin/edb-as-12-setup initdb
+
+
+
+PGSETUP_INITDB_OPTIONS="-E UTF-8 -D /home/edbdata" /usr/edb/as12/bin/edb-as-12-setup initdb
+
+```
+
+##### 启动 edb
+
+```
+
+systemctl start edb-as-14
+
+```
+
+##### 连接edb
+```
+
+sudo su - enterprisedb
+psql edb
+
+```
+
+
+
+
+### 常见问题
+
+- 远程连接数据库失败 修改文件 data/pg_hba.conf 添加
+
+ ```
+
+ host all all 0.0.0.0/0 md5
+
+ ```
+
+- 修改数据库密码(在edb 库执行)
+
+ ```
+
+ ALTER USER enterprisedb WITH PASSWORD 'yiing&654';
+
+ ```
+
+
+
+
+
+## 安装 ora2pg
+
+### 安装 perl 环境
+
+```
+yum install -y perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
+yum -y install perl-CPAN
+```
+
+
+
+### 安装Oracle客户端
+
+官网下载 Oracle Instant Client 等包 上传服务器安装
+
+```
+rpm -ivh oracle-instantclient19.15-basic-19.15.0.0.0-1.x86_64.rpm
+rpm -ivh oracle-instantclient19.15-devel-19.15.0.0.0-1.x86_64.rpm
+rpm -ivh oracle-instantclient19.15-jdbc-19.15.0.0.0-1.x86_64.rpm
+rpm -ivh oracle-instantclient19.15-sqlplus-19.15.0.0.0-1.x86_64.rpm
+```
+
+
+
+#### 设置环境变量ORACLE_HOME
+```
+export ORACLE_HOME=/usr/lib/oracle/19.15/client64/
+```
+
+
+
+#### 本地已安装有Oracle数据库
+
+ORACLE_HOME如下设置
+
+```
+export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
+export LD_LIBRARY_PATH=$ORACLE_HOME/lib
+```
+
+
+
+### 安装 perl 依赖
+
+```
+perl -MCPAN -e 'install DBD::Oracle'
+perl -MCPAN -e 'install DBI'
+perl -MCPAN -e 'install DBD::Pg'
+```
+
+按照自己 的路径设置 环境变量
+
+```
+export POSTGRES_HOME=/usr/edb/as14
+export POSTGRES_HOME=/var/lib/edb/as14
+```
+
+
+
+#### 常见问题
+
+```
+Can't locate Test/NoWarnings.pm in @INC (@INC contains: t/lib /root/.cpan/build/DBD-Oracle-1.83-LDK8k0/blib/lib /root/.cpan/build/DBD-Oracle-1.83-LDK8k0/blib/arch /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at t/26exe_array.t line 15.
+```
+
+ 安装 perl-Test-NoWarnings-1.04-2.el7.noarch 解决
+
+
+
+提示测试不通过 手动下载源码 安装
+
+下载地址:https://metacpan.org/release/DBI
+
+```
+tar -zxvf DBI-1.642.tar.gz
+cd DBI-1.642
+perl Makefile.PL
+make
+make install
+```
+
+
+
+
+
+
+
+### 安装ora2pg
+
+下载软件包
+https://github.com/darold/ora2pg/releases
+
+默认安装在`/usr/local/bin/` 目录下
+
+```
+[root@Test01 ~]# tar -xjf ora2pg-20.0.tar.bz2
+[root@Test01 ~]# cd ora2pg-xx/
+[root@Test01 ~]# perl Makefile.PL PREFIX=
+[root@Test01 ora2pg-18.2]# make && make install
+```
+
+简单检查
+ora2pg --help
+
+## 迁移数据
+### 初始化项目
+
+```
+//初始化项目
+ora2pg --init_project ora2pg
+
+
+ora2pg -t SHOW_VERSION -c config/ora2pg.conf
+ora2pg -t SHOW_SCHEMA -c config/ora2pg.conf
+ora2pg -t SHOW_TABLE -c config/ora2pg.conf
+ora2pg -t SHOW_COLUMN -c config/ora2pg.conf
+ora2pg -t SHOW_ENCODING -c config/ora2pg.conf
+```
+
+### 配置配置文件
+
+默认配置文件即可 需要修改
+
+```
+# Set Oracle database connection (datasource, user, password)
+ORACLE_DSN dbi:Oracle:host=dev-db.yldev.net;sid=hcc;port=1521
+ORACLE_USER icc
+ORACLE_PWD ICCICC
+
+# Oracle schema/owner to use
+SCHEMA ICC
+
+
+
+# Set which object to export from. By default Ora2Pg export all objects.
+# Value must be a list of object name or regex separated by space. Note
+# that regex will not works with 8i database, use % placeholder instead
+# Ora2Pg will use the LIKE operator. There is also some extended use of
+# this directive, see chapter "Limiting object to export" in documentation.
+
+
+# 可以使用正则 如 t_.* 可以排除 不想导出的对象 如!t_t2
+#配置中文释义 https://blog.csdn.net/Loiterer_Y/article/details/110927688
+#ALLOW TABLE_TEST
+
+# The value can be a comma delimited list of schema but not when using TABLE
+# export type because in this case it will generate the CREATE SCHEMA statement
+# and it doesn't support multiple schema name. For example, if you set PG_SCHEMA
+# to something like "user_schema, public", the search path will be set like this
+# SET search_path = user_schema, public;
+# forcing the use of an other schema (here user_schema) than the one from Oracle
+# schema set in the SCHEMA directive. You can also set the default search_path
+# for the PostgreSQL user you are using to connect to the destination database
+# by using:
+# ALTER ROLE username SET search_path TO user_schema, public;
+#in this case you don't have to set PG_SCHEMA.
+#PG_SCHEMA LLOW
+PG_SCHEMA icc
+```
+
+
+
+### 测试连接
+
+执行以下命令 返回oracle 版本则连接成功
+
+```
+ora2pg -t SHOW_VERSION -c config/ora2pg.conf
+```
+
+
+
+### 导出表结构
+
+先安装 screen 防止意外断开 导出失败
+
+```
+yum install -y screen
+
+```
+
+#### screen 常用命令
+
+```
+//开启一个screen
+screen -S name
+//进入一个 screen
+screen -r name
+// screen 列表
+screen -ls
+
+可以用快捷键 Ctrl+a d(即按住 Ctrl,依次再按 a,d),而会话中的程序不会关闭
+```
+
+
+
+### 导出数据
+
+该命令根据数据库大小 表大小等待时间不一 建议使用screen 运行
+
+```
+ora2pg -t COPY -o data.sql -b ./data -c ./config/ora2pg.conf
+```
+
+
+
+### 修改校验表结构
+
+导出完成后 在 `./schema/tables` 下有转换好的表结构(主要修改关键字段)
+
+```
+oid
+tableoid
+xmin
+cmin
+xmax
+cmax
+ctid
+```
+
+
+
+### 导入数据库
+
+切换到`enterprisedb` 用户
+
+执行 `sh import_all.sh` 按照提示导入数据
+
+
+
+## 附录
+
+#### 修改用户组 权限
+
+```
+chown [-R] ownname:groupname filename
+chmod -R 777 filename
+
+```
+
+#### 追踪服务日志
+
+```
+journalctl -f -u icc-analysis.service
+```
+
+#### 查看文件大小
+
+```
+df -hl
+df -h path
+ls -lht
+
+du -ah --max-depth=1 /path
+
+查看删除的文件
+lsof -n | grep deleted
+
+du -bsh /
+```
+
+#### Linux 替换命令 sed
+
+```
+参数说明:
+
+-e