源码安装Redis
源码安装Reids
系统:Ubuntu 22.04
12345678root@redis01:~# wget wget https://download.redis.io/redis-stable.tar.gzroot@redis01:~# tar xf redis-stable.tar.gzroot@redis01:~# apt -y install build-essential automakeroot@redis01:~# cd redis-stable/root@redis01:~/redis-stable# makeroot@redis01:~/redis-stable# make installroot@redis01:~# redis-cli -vredis-cli 7.0.12
Redis单实例启动123456789101112131415161718192021222324252627282930313233root@redis01:~# echo "vm.overcommit_memory = 1" >> /etc/sysctl ...
Docker多阶段镜像构建
Docker多阶段镜像构建使用多阶段构建的主要有两个原因:
它允许并行构建步骤,使构建管道更快、更高效
它允许创建占用空间较小的最终镜像,仅包含运行程序所需的内容
在Dockerfile中,构建阶段由FROM指令表示,只有一个FROM都是一个构建阶段,这意味着最终的镜像因用于编译程序的资源而变得臃肿
在未使用多阶段构建之前,本人的博客镜像大小一直是1.31GB,为了图方便同时也在node基础镜像中安装了nginx,主要是为了在构建镜像之后直接就能运行。但采用了多阶段镜像构建之后镜像大小减少了90%+,最终大小为72MB
原Dockerfile
1234567891011FROM node:18MAINTAINER xiaowangc<780312916@qq.com>WORKDIR /appCOPY package*.json ./RUN apt update && apt -y install nginxRUN npm install && npm install hexo-cli -gCOPY . .RUN hexo gRUN cp ...
Sed流编辑器
Sed流编辑器Sed是一个流编辑器(Stream editor),它可以对从标准输入流中得到的数据进行处理,然后把处理以后的结果输出到标准输出或者也可以把标准输出重定向到文件,对处理后的结果保存到磁盘文件中。sed只会对流经过它的数据流进行处理和编辑,而不会对原始文件做如何修改。
sed命令的两种形式:
12345$ some_command |sed 'edit commands'# 从管道中读取输入数据$ sed 'edit commands' files# 使用命令行参数读取文件内容,而不是从标准输入中
当执行sed命令时,从输入文件中读取一行数据,并把这行数据复制一份保存在它内部的一个工作缓存中。sed命令把它的这个缓存叫做模式空间(pattern space),所有的数据都是在这个缓存中被处理的,然后sed命令会根据指定的编辑命令对缓存中的数据进行处理。当处理完这行数据后,sed会读取下一行数据,重复整个过程直到所有的数据都被处理完为止。sed命令的特性是使用相同的一系列操作重复处理文件中的每一行文本。
单引号中的编辑命令edit c ...
Linux信号
Linux信号Linux信号是一种进程间通信机制,一般由用户、系统、进程产生,用于通知进程某个状态的改变或者系统异常。现在的Linux系统中有几十种信号的类型,每个信号都有一个数字和一个名字。可以通过命令trap -l或kill -l来查看系统中所有的信号。注意同样的信号名在不通的平台上可能对应不同的数字,跨平台脚本推荐使用信号名。
Bash的内建命令kill可以发送任意指定的信号到某个进程。如果没有指定参数,kill命令默认发送信号15 SIGTERM,在收到这个信号以后,进程会终止执行。
通过使用组合键Ctrl+C结束前台进程是发送了INT信号给前台进程,退出状态码为相应的信号数字再加上128;组合键Ctrl+Z会发送TSTP信号,即terminal stop挂起前台运行的进程,所以进程会被暂停,在命令行中执行jobs可以查看进程的状态为Stopped,通过fg命令可以恢复执行;而组合键Ctrl+\发送的是QUIT信号,前台进程在收到QUIT信号后同样会被终止,可视作加强版Ctrl+C
信号处理在运行Shell的过程中可能会创建临时文件,这些文件在脚本运行的过程中使用,一般情况下在 ...
Pod CA证书问题小记
Pod 证书问题小记在使用helm部署gitlab的时候,发现gitlab-gitlab-runner组件反复重启,通过查看日志发现报错
x509: certificate signed by unknown authority
因为使用的自建CA证书,同时只将CA更新到了宿主机的受信任区域,在Pod中还是无法信任通过我自建的CA颁发的证书。
解决方法:
基于ca证书创建configmap
1# kubectl create configmap ca --from-file=TLS/ca/ca.crt -n gitlab
编辑deployment控制器,将configmap作为卷挂载到容器内的/etc/ssl/certs目录下
123456789volumeMounts:- mountPath: /etc/ssl/certs name: ca-cert volumes:- configMap: defaultMode: 420 name: caname: ca-cert
在其他Pod中访问例如www.baidu.com的公共的 ...
ACME证书申请
2023-04-06: 在对证书升级时,需要注意,现acme.sh客户端申请的证书算法是采用ECC,对于某些例如Windows XP或远古系统的用户来说可能会导致一些列的问题:1.时间不正确2.不信任的根证书
ACME证书申请脚本这是一个用纯Shell(Unix shell)语言编写的ACME协议客户端,实现了完整的ACME协议,支持ECDSA证书、SAN和通配符证书。它简单、强大、易于使用,只需要3分钟就能学会,兼容Bash、Dash和sh。它完全用Shell编写,不依赖Python,只需要一个脚本即可自动颁发、更新和安装您的证书,而且不需要root/sudoer访问权限。此外,它还支持Docker和IPv6并提供Cron作业通知以更新或报告错误等。
支持的CA
ZeroSSL.com CA
Letsencrypt.org CA
BuyPass.com CA
SSL.com CA
Google.com 公共CA
Pebble严格模式
任何其他符合RFC8555标准的CA
支持的模式
Webroot模式
独立模式
独立tls-alpn模式
Apache模式
Nginx模式
...
Ceph集群-基操
Ceph概念Ceph可以为云平台提供对象存储、块存储、文件存储的开源存储系统,一个完整的Ceph集群需要一下组件:
**监视器(Monitors)**:维护集群状态,包括监控映射、管理映射、OSD映射、MDS映射和CRUSH映射。这些Map非常重要,Ceph守护程序相互协调所需的集群状态。监视器还负责管理身份验证守护程序和客户端。
至少三个Monitors实现冗余和高可用
Ceph Manager:管理守护程序是负责跟踪运行时指标和当前Ceph集群的状态,包括存储利用率、性能指标和系统负载。Ceph Manager守护进程还托管基于Python的模块管理和公开Ceph集群信息,包括基于Web的Ceph仪表盘和REST API
通常需要两个实现高可用
Ceph OSD:对象存储守护进程,负责处理数据复制、恢复、重新平衡,并向Ceph提供一些监控信息通过其他Ceph OSD守护进程来监控和管理心跳。
至少三个实现冗余高可用
MDS:Ceph元数据服务器,Ceph文件系统的元数据,设备和Ceph对象存储不会使用MDS
Ceph存储集群是所有Ceph部署的基础。基于RADOS,Ce ...
记一次Windows10故障处理
记一次Windows10故障处理在更新完系统补丁后重启,发现系统部分组合键无法使用,微软输入法打字但是不出现文字提示框并且开始菜单栏无法使用(其他问题还没验证)
sfc命令是一个非常有用的命令行工具,它的全程是system file checker(系统文件检查器),主要用于扫描并修复操作系统中的损坏和丢失的系统文件,以确保系统的稳定性和安全性。
常用命令
sfc /scannow
这个命令将扫描整个系统并检查系统文件的完整性。如果有任何问题,它将自动修复文件,从备份中还原缺失或已损坏的文件
sfc /verifyonly
这个命令将扫描整个系统并检查系统文件的完整性,但不会自动修复
SFC命令主要用于扫描和修复系统文件的完整性,而DISM命令则是更高级的系统维护工具,它可以用于管理和维护Windows映像,例如更新、添加、删除、安装Windows组件和驱动程序等。SFC命令是从WindowsXP开始支持的,并支持所有的Windows版本。而DISM命令只在Windows7及其更高版本的Windows操作系统中支持
dism /online /cleanup-image /scanhe ...
filebeat收集问题
1.可以通过filebeat test output和filebeat test config命令测试配置文件和Output是否能连接上root@node1:/usr/local/filebeat-8.6.2# ./filebeat test outputKafka: 192.168.10.232:9092… parse host… OK dns lookup… OK addresses: 192.168.10.232 dial up… OK
2.通过命令filebeat -e -d ““调试从调试给出的日志信息:{“log.level”:”debug”,”@timestamp”:”2023-03-11T13:59:55.268+0800”,”log.logger”:”input”,”log.origin”:{“file.name”:”log/input.go”,”file.line”:342},”message”:”File /var/log/containers/speaker-r75 ...
linux-ldd命令
ldd命令ldd是一个Linux/Unix命令,它用于打印一个可执行文件或共享库所依赖的动态链接库(shared libraries)列表。这些动态链接库在程序运行时被加载。
ldd命令的语法如下:
12cssCopy codeldd [options] file
其中,file是要检查的可执行文件或共享库的路径。
常见的选项包括:
-v: 打印ldd命令的详细输出,包括搜索路径和版本信息等;
-u: 只打印未满足依赖关系的库的名称;
-d: 打印依赖库的调试信息,包括库的加载地址和符号表等。
示例:
假设我们要查看一个可执行文件/usr/local/bin/myprogram所依赖的库,可以执行以下命令:
1ldd /usr/local/bin/myprogram