自动清理日志脚本
公司的业务服务会打日志到磁盘, 程序已经做了日志切割, 时间一长磁盘占满会导致业务异常, 普通的清理逻辑是使用 crontab 定时删除文件, 比如每天 1 点删除创建日期超过 30 天的日志文件, 大部分情况下工作是 OK 的, 但是执行周期太长, 如果当天日志暴增, 不能及时删除文件. 也会有隐患, 优化版脚本如下: 日志清理分以下几种: 历史日志, 并且未在写入的日志, 这种可以直接删除掉. 当前正在写入的日志, 需要清理, 这种不能删除, 可以通过清空文件的方式来释放空间 set -euo pipefail 的作用:set -e: 脚本中有任何一条命令执行失败, 整个脚本就失败set -u: 脚本中的变量有任何一个变量为空, 整个脚本执行失败-o pipefail: 脚本中的管道中任何一条命令执行失败, 也会认为脚本执行失败 脚本内容: 磁盘使用率低于 80% 不会执行操作, 所以可以缩短 crontab 执行的间隔, 我一般设置成 5 分钟检测一次, crontab 内容: 注意: crontab 最后需要保留一个空行
快速安装Prometheus监控组件
复制粘贴就能用,适用于非容器化安装, k8s 环境看这个, 更方便 Kubernetes中使用Prometheus对集群节点做监控 安装方式为二进制安装,使用 systemd 来管理(也可以使用 supervisor 等进程管理工具) 安装 node_exporter 安装 Prometheus
Dockerfile中ADD文件的路径问题
首先看一个案例 当前目录的文件如下: Dockerfile 文件内容如下: 本意是想把当前目录下的所有文件放到容器内的 /code 目录, 这个时候使用 docker build 后无法启动, 进入容器, 打开 /code 一看: 会发现, 本来 3 这个文件应该是在 2 这个文件夹内的, 现在统一都跑到了上级目录了, 文件路径完全变了. 自然无法启动. 可以做如下修改:
k8s解除NodePort端口限制
我自己写了一个 svc 的 yaml 文件,部署的时候报错,不在默认的范围内,默认范围是: 30000-32767 kubectl apply -f nginx-src.yaml 报错: 如果是 kubeadm 部署修改配置文件 vim /etc/kubernetes/manifests/kube-apiserver.yaml 在启动参数里面添加如下一行 重启 kube-apiserver
MySQL查询出所有没有主键的表
作者:May22Night链接:https://www.jianshu.com/p/f484c63e5c96 压缩版: 美化版: sql 解释:查询结果中 TABLE_SCHEMA 是库名,TABLE_NAME 就是表名。其查询原理就是 information_schema 库中存储了各个库与表的结构,在 information_schema.TABLES 表中存储了所有表,information_schema.TABLE_CONSTRAINTS 表中存储了表相关的约束,主键就是一种约束,所以 CONSTRAINT_TYPE 字段为 PRIMARY KEY 值的就是拥有主键的表。有了所有表的表名,还有了所有拥有主键的表,那么就简单了,以查询出的全部表为主表,左联一下,右表为空的就是没有主键的表。SQL 中排除了 mysql 自带的五个库,同时解决了不同名的库拥有相同名的表的情况,还有优化空间,不过我觉得不是业务 SQL,没必要优化了。
在Windows下实现一个快速转换音乐格式的小工具
搞点歌在车里听,但是早年 10w 的合资车只能听 mp3 格式,所以把需要我珍藏的音乐转换成 mp3 拷进 U 盘, 转换格式工具当然是选择 ffmpeg 了。搜了下命令是: 接下来需要做一个稍微自动化一点的工具,比如把 flac 文件拖放到 bat 脚本上,就能实现自动转换格式。 完整脚本如下: 其中 chcp 65001 是为了防止 bat 脚本中包含中文导致的乱码。申明脚本编码为 UTF-8, 脚本保存的时候也要以 UTF-8 编码保存, 如果不加 chcp 65001, 那么需要使用 windows 记事本打开重新保存编码选择 ANSI, 因为 cmd 默认的编码就是 GBK 以下是一些常用的代码页。 代码页 说明 65001 UTF-8 代码页 950 繁体中文 936 简体中文默认 GBK 437 MS-DOS 美国英语 另外脚本里用到的变量说明: 上面的脚本用到了短路径, 短路径的好处是可以解决路径中带有空格的问题。
WSL2 - Ubuntu配置记录
WSL 防火墙规则 基础环境配置更换源使用中科大的源: https://mirrors.ustc.edu.cn/help/ubuntu.html 安装常用的包 当前用户免 sudo 密码 WSL 开启 systemd 支持 (仅支持 WSL2) git 配置 zsh 配置安装 zsh 安装 oh my zshhttps://ohmyz.sh/#install 安装主题https://github.com/romkatv/powerlevel10k 安装一些插件https://github.com/zsh-users/zsh-autosuggestions vim修改默认编辑器 安装 vim plug 插件管理工具 配置文件 进入 vim 命令界面, 输入 :PlugInstall 安装插件 常用环境安装安装 golang python nodejs 查看 快速搭建环境记录 安装 zssh, 查看 改造windows-terminal支持lrzsz 常用 alias 常用软链接 tsshtrzsz 使用记录 其他问题如果 wsl 中的...
Linux终端复用器Screen和tmux
参考阮一峰的博客https://www.ruanyifeng.com/blog/2019/10/tmux.html 作用想象一下, 我在自己电脑远程 SSH 连接服务器, 正在命令行执行 mysqldump, 突然 (断网\电脑蓝屏) 了, 那么终端就断了, mysqldump 也就断了, 就需要重新来过. 终端复用器就是创建一个虚拟的终端, 可以挂在后台, 随时想进就进, 还有其他好用的功能, 比如将终端日志保存到文件内. 常用的工具有 tmux 和 screen, tmux 类似于 screen, 但是功能更强大, screen 的记录日志功能很好用, 两者各有千秋. 另外终端复用器对 rz/sz 这种工具的兼容性都不好, 建议不要用来进行 rz/sz 传文件 tmux安装 快速使用输入 tmux 即可启动, 在终端下面有一条状态栏, 显示当前的终端编号. 退出输入: exit 或者按下 Ctrl + d 或者直接关闭窗口查看后台运行的会话: tmux ls进入会话: tmux a -t 0 常用操作 操作 命令或快捷键 打开 tmux tmux 新建 tmu...
Jenkins pipeline中正确使用git
看到很多 jenkins 使用都是直接执行 git clone 命令, 这么做有以下几个缺点. 需要耗费时间去处理 git 分支, 代码冲突等工作, 还需要判断是使用 git clone 还是 git pull 账号密码 (或者 ssh 秘钥) 需要存储在构建机器上, 如果更换了构建节点, 那么需要重新配置, 即对构建环境有依赖, 构建环境是个黑盒子, 因为你不知道上个维护者在这台构建机器上做了什么. 不受 jenkins 管理, 比如删除流水线, 拉取的代码任然存在机器上 做个分支选项框是个痛苦的事情将代码交给 jenkins 管理则省去了这些操作. 使用凭据管理账号密码在 系统管理 – 凭据 – 系统 – 全局凭据 里面增加一个新的凭据 成功后记录一下 ID 编写流水线 branch 不支持 origin/master 这种格式, 所以需要用 split 处理一下 如何生成流水线
Jenkins升级插件引发的血案
我们公司用的 jenkins 是老版本, 不知道什么时候谁点了升级插件, 但是没有重启 jenkins, 一直用者好好的, 突然有一天有个倒霉蛋重启了 jenkins,然后就报错了. 搜索了一圈的解决方案:关闭认证, 配置文件在 .jenkins/config.xml 目录中, 需要先切换到 jenkins 用户, 先备份 cp .jenkins/config.xml{,.bak} 然后再修改 将 authorizationStrategy 这一块改为 将 securityRealm 块 删除, 保存后重启 jenkins, 日志里会打印账号密码, 用这个登陆. 登陆后, 可以看到各种不兼容的插件了. 现在升级 jenkins 版本, 升级后可以看到插件都兼容了, 然后将有更新的插件都更新一下. 如果无法启动, 注意查看 jenkins 启动日志, 我公司升级后提示 java 版本不兼容, 需要将 java 8 升级到 java 11 才可启动新版 jenkins, 为了不影响现有流水线构建, 所以不修改环境变量了, 指定 java 版本来运行新版 jenkins 最后...


