个人日记
背景
| 今日分享 1. 在线虚拟画板 https: 2. 跨平台的开源的Aria2 GUI软件 。https: 3. LVS NAT工作模式 实现原理:NAT模型其实就是一个多路的DNAT,客户端对VIP进行请求,Director通过事先指定好的调度算法计算出应该转发到那台RS上,并修改请求报文的目标地址为RIP,通过DIP送往RS。当RS响应客户端报文给CIP,在经过Director时,Director又会修改源地址为VIP并将响应报文发送给客户端,这段过程对于用户来说是透明的。 NAT特性: 1)RS和Director必须要在同一个IP网段中。 2)RS的网关必须指向DIP 3)可以实现端口映射 4)请求报文和响应报文都会经过Director 5)RS可以是任意OS 6)DIP和RIP只能是内网IP
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 1. nginx USR1信号可以重载日志,可以在一定大小时将日志移动走,重置日志,即可完成日志分割。HUP信号对应reload。 2. grafana监控kubernetes https://mp.weixin.qq.com/s/1hPGCA3gwT7QJ62ro26ZJg 3. nginx特性和功能 特性 模块化设计、较好的扩展性 高可靠性:一个master启动一或多个worker,每个worker响应多个请求 低内存消耗:10000个keepalive连接在Nginx中仅消耗2.5MB内存(官方数据) 支持热部署:不停机更新配置文件、更新日志文件、更新服务器程序版本 功能 静态web资源服务器,能够缓存打开的文件描述符 支持http/imap/pop3/smtp的反向代理;支持缓存、负载均衡 支持fastcgi(fpm) 模块化,非DSO机制,支持过滤器zip压缩,SSI以及图像大小调整 支持SSL
|
1 2
| 1. 常见的几种网络故障案例分析与解决! https://mp.weixin.qq.com/s?__biz=MzIxMTEyOTM2Ng==&mid=2247492229&idx=1&sn=d9ce593d9d951ededc026f33d9ab6d8b&chksm=9758a7fca02f2eea9a0616883c459e310ebb5c576d9dad730605bb2888729d93c445caeb57a5&mpshare=1&scene=23&srcid=0112DRCKZll1lBD8t3kzRepw&sharer_sharetime=1610417414955&sharer_shareid=526a33875b341a963104be96ad05b723#rd
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| 2. mysql读写分离
简介 Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。而且安装方便。配置的注释写的蛮详细的,都是中文。
主要功能 读写分离 从库负载均衡 IP过滤 自动分表 DBA可平滑上下线DB 自动摘除宕机的DB 下载地址:https://github.com/Qihoo360/Atlas
1.rpm安装 rpm -ivh Atlas-2.2.1.el6.x86_64.rpm 2.配置 cd /usr/local/mysql-proxy/conf mv test.cnf test.cnf.bak
配置文件解读: [mysql-proxy] admin-username = user admin-password = pwd proxy-backend-addresses = 10.0.0.160:3306 proxy-read-only-backend-addresses = 10.0.200:3306,10.0.0.120:3306 pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=
daemon = true
keepalive = true event-threads = 8 log-level = message log-path = /usr/local/mysql-proxy/log sql-log=ON proxy-address = 0.0.0.0:33060 admin-address = 0.0.0.0:2345 charset=utf8 /usr/local/mysql-proxy/bin/mysql-proxyd test start
验证:netstat -lntup | grep proxy
tcp 0 0 0.0.0.0:2345 0.0.0.0:* LISTEN 7719/mysql-proxy tcp 0 0 10.0.0.140:33060 0.0.0.0:* LISTEN 7719/mysql-proxy
测试:mysql -umha -p... -h 10.0.0.160(配合mha-vip使用) -P 端口33060
读的操作是2台slave服务器 写操作是1台master服务器 环境要求: 需要添加一个应用用户 grant update,insert on *.* to 'app'@'10.0.0.%' identified by '123.com';
在atlas中添加用户 /usr/local/mysql-proxy/bin/encrypt llll tF5TeinkMj8=
重启mysql-proxy服务 /usr/local/mysql-proxy/bin/mysql-proxyd test start 验证: mysql -uapp -plll -h10.0.0.160 -P33060 [hermit auto="1" loop="1" unexpand="0" fullheight="0"]netease_songs
|
1 2 3
| 每日分享: 检查 Linux 磁盘使用情况 https://linux.cn/article-14823-1.html
|
修改网卡名称设置为ens0
1 2 3 4 5 6 7 8 9 10 11 12 13
| 1、文件追加:net.ifnames=0 [17:33:31 root@localhost ~]#vim /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto resume=UUID=b65aa78c-be4d-4c68-a276-c31aee04579a rhgb quiet net.ifnames=0" GRUB_DISABLE_RECOVERY="true" GRUB_ENABLE_BLSCFG=true 2、加载grup并重启 [17:44:26 root@localhost ~]#grub2-mkconfig /boot/grub2/grub.cfg ;reboot 3、由于网卡已重置需在本机重新配置IP地址
|
vim默认配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 1、在用户家目录配置:vim /root/.vimrc ""set nu set si set incsearch set showcmd imap <tab> <c-n> nmap <tab> v>
set wildmode=longest:list,full inoremap ' ''<Esc>i inoremap " ""<Esc>i inoremap ( ()<Esc>i inoremap [ []<Esc>i inoremap { {}<Esc>i inoremap < <><Esc>i
autocmd BufNewFile *.sh exec ":call AddTitleForShell()" function AddTitleForShell() call append(0,"#!/bin/bash") call append(1,"# **********************************************************") call append(2,"#") call append(3,"# * Author : 张雪龙") call append(4,"# * Email : 1024320609@qq.com") call append(5,"# * Create time : ".strftime("%Y-%m-%d %H:%M")) call append(6,"# * Filename : ".expand("%:t")) call append(7,"# * Description : ") call append(8,"#") call append(9,"# **********************************************************") endfunction
|
history
1 2 3 4 5 6
| 显示3条历史记录::history n [21:46:01 root@localhost ~] 993 vim /etc/default/grub 994 grub2-mkconfig /boot/grub2/grub.cfg ;reboot 995 history 3
|
1 2 3 4 5
| 清除历史记录:history -c [21:53:24 root@localhost ~] [21:53:41 root@localhost ~] 1 history [21:53:47 root@localhost ~]
|
1 2 3 4 5 6 7 8 9
| 临时修改历史列表为时间格式:HISTTIMEFORMAT [21:56:27 root@localhost ~]#HISTTIMEFORMAT="%F %T" [21:56:58 root@localhost ~]#history 1 2022-07-21 21:53:47history 2 2022-07-21 21:55:56echo $HISTIMEFORMAT 3 2022-07-21 21:56:23HISTIMEFORMAT="%F %T" 4 2022-07-21 21:56:27history 5 2022-07-21 21:56:58HISTTIMEFORMAT="%F %T" 6 2022-07-21 21:57:02history
|
1 2
| 永久修改历史列表格式 [22:18:51 root@localhost ~]#echo HISTTIMEFORMAT="%F %T" >> .bash_profile
|
1 2 3 4 5 6 7 8
| history命令快捷方式使用 1、执行上一条命令 [22:20:32 root@localhost ~] vim .bash_profile [22:22:25 root@localhost ~] vim .bash_profile 向上键!
|
命令行扩展
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 1、家目录:~ [23:10:16 root@localhost /] [23:10:20 root@localhost ~] 2、用户家目录:~username [23:10:20 root@localhost ~] [23:11:02 root@localhost zxl] 3、以逗号为分割的字符串或系列:{} [23:11:02 root@localhost zxl] a.txt b.txt c.txt d.txt [23:13:01 root@localhost zxl] a/e.txt b/e.txt c/e.txt d/e.txt [23:14:37 root@localhost zxl] a.txt b.txt c.txt d.txt e.txt f.txt g.txt h.txt i.txt j.txt k.txt l.txt m.txt n.txt o.txt p.txt q.txt r.txt s.txt t.txt u.txt v.txt w.txt x.txt y.txt z.txt [23:15:22 root@localhost zxl] 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 10.txt
|
通配符glob
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| *:匹配任意长度字符 [23:20:20 root@localhost data] -rw-r--r-- 1 root root 0 7月 21 23:19 ./aaa.txt -rw-r--r-- 1 root root 0 7月 21 23:19 ./aab.txt -rw-r--r-- 1 root root 0 7月 21 23:19 ./aac.txt -rw-r--r-- 1 root root 0 7月 21 23:19 ./aad.txt ?:匹配任意一个单个字符 [23:23:03 root@localhost data] ls: 无法访问'./ada?': 没有那个文件或目录 [23:23:06 root@localhost data] -rw-r--r-- 1 root root 0 7月 21 23:19 ./ada.txt []:匹配中括号指定集内任意单个字符 [23:27:12 root@localhost data] -rw-r--r-- 1 root root 0 7月 21 23:19 aaa.txt -rw-r--r-- 1 root root 0 7月 21 23:19 aba.txt -rw-r--r-- 1 root root 0 7月 21 23:19 aca.txt -rw-r--r-- 1 root root 0 7月 21 23:19 ada.txt -rw-r--r-- 1 root root 0 7月 21 23:19 aea.txt -rw-r--r-- 1 root root 0 7月 21 23:19 afa.txt -rw-r--r-- 1 root root 0 7月 21 23:19 aga.txt
|
变量引用和赋值
1 2 3 4
| 变量名=变量对应的值 [23:29:46 root@localhost data]#name=zhangsan [23:31:53 root@localhost data]#echo $name zhangsan
|
1 2 3 4 5 6 7
| 删除自定义变量 unset 变量名 [23:31:53 root@localhost data]#echo $name zhangsan [23:31:58 root@localhost data]#unset name [23:33:25 root@localhost data]#echo $name
|
1 2 3 4 5 6 7
| 变量名使用规则 1、只能包含字母数字和下划线,不能以数字开头 2、不能使用shell的命令和关键字作为变量,如if do done 等 3、变量内容如果为空,可使用双引号或单引号可以括号起来 4、转义字符(\)的使用,将一些特殊字符号显示为字面本身的符号,如enter键、$,\,',",空格符 5、如果变量没有赋值引用,其值为空,即为null 6、变量引用时,若变量名和其它字符相连时,需要用${变量名}
|
变量的分类
1 2 3
| 普通变量:作用域在当前shell中,不包括其子进程,所有的普通变量在shell进程终止时,会自动销毁 环境变量:作用域在当前进程和其子进程,需要关键字export或declare -x来声明,才可以成为环境变量 本地变量:作用域即可引用到的范围,比如函数,需要使用关键字local来声明才能成为本地变量
|
1 2 3 4 5 6 7 8 9 10 11
| 环境变量声明:export 变量名 [23:59:43 root@localhost data]#echo $BASHPID 2063 [00:00:05 root@localhost data]#echo $NAME zhangxuelong [00:00:19 root@localhost data]#bash [00:00:24 root@localhost data]#echo $NAME zhangxuelong [00:00:36 root@localhost data]#echo $BASHPID 3451 注释:NAME变量在子进程传值不变
|
1 2 3 4
| 环境变量相关命令: export declare +x env
|
1 2 3
| 只读变量名:只能只读不能修改变量 声明:readonly 变量名
|
常见的系统内置变量
1 2 3 4 5 6 7 8 9 10 11 12 13
| UID:当前用户ID HOME:当前用户的家目录 SHELL:当前使用的shell类型 BASHPID:当前BASH的进程编号即PID HISTSIZE:记录命令历史数目 MALL:当前用户邮件信箱文件存储目录 PATH:执行文件的搜索路径。目录之间以冒号分隔,搜索路径是按路径目录顺序查询 LANG:系统使用的语言及编码字符集,可以用locale -a 可以查看系统支持的所有语系编码,如需永久生 效:/etc/locale.com文件 RANDOM:随机生成数字的变量,变量取值范围0-32767之间 PS1:命令提示符 OSTYPE:操作系统类型——linux-gnu HOSTTYPE:主机类型——x86_64 MACHTYPE:主机类型——x86_64-redhat-linux-gnu
|
执行状态结果:$?
1 2 3 4 5 6 7 8 9 10
| bash:执行后悔生成一个状态码,值范围:0-255,0表示执行成功,1-255表示前一个命令出现的各种错误 $?: [00:21:31 root@localhost data] aaaa [00:26:29 root@localhost data] 0 [00:26:37 root@localhost data] cp: 无法获取'sad' 的文件状态(stat): 没有那个文件或目录 [00:26:59 root@localhost data] 1
|
一次执行多个命令
1 2 3 4 5 6 7 8
| 分号连接多条命令 格式:命令1;命令;2命令3 [00:27:02 root@localhost data]#echo sdasd;touch ddda.log;ehco nihaoya sdasd bash: ehco: 未找到命令... 相似命令是: 'echo' [00:29:54 root@localhost data]#ls ddda.log ddda.log
|
1 2 3 4 5 6 7 8 9 10
| 小括号包含多个命令 格式:(命令1;命令2;命令3) 提示:()会开启子shell,所有()内执行,不会影响当前shell中的变量值 [00:33:01 root@localhost data]#name=aaa [00:33:13 root@localhost data]#age=18 [00:33:28 root@localhost data]#echo $name;(age=20;echo $NAME $age) aaa 20 [00:35:05 root@localhost data]#echo $name aaa
|
1 2 3 4 5 6 7 8 9 10
| 花括号包含多个命令 格式:{命令1;命令2;命令3} 提示{}不会开启子shell,{}中的变量赋值会影响当前的shell中的变量值,{}和命令至少要一个空格,最后一个命令必须以";"或换行符结束 [00:35:05 root@localhost data]#echo $name aaa [00:39:57 root@localhost data]#{ echo $name;name=bbb;echo $name;} aaa bbb [00:41:40 root@localhost data]#echo $name bbb
|
vim
1
| 格式:vim [option]...file...
|
选项[option]
1 2 3 4 5 6 7 8 9 10
| +#:打开文件第几行 [21:25:06 root@localhost ~]#vim + /etc/passwd [21:31:21 root@localhost ~]#vim +2 /etc/passwd +/pattern(正则) [21:34:40 root@localhost ~]#vim +/zxl /etc/passwd -b file 二进制文件打开 -d file file 比较多个文件,相当于 vimdiff -m file 只读打开文件 -e file 直接进入ex模式
|
三种主要模式和转换
1 2 3
| 1、命令或普通模式,默认模式,可以移动光标,剪切/粘贴文本 2、插入或编辑模式:用于修改文本 3、扩展命令或命令行模式:保存、退出等
|
命令模式转换插入模式
1 2 3 4 5 6
| i:在光标所在出输入 I:光标所在行首输入 a:光标所在出后面输入 A:光标所在行末输入 o:当前光标所在行下方打开新一行输入 O:当前光标所在行上方打开新一行输入
|
扩展命令模式基本命令
1 2 3 4 5 6 7 8 9 10
| w:写入磁盘文件 wq:写入并退出 x:写入并退出 X:加密 q:不保存,退出 q!:不保存,强制退出 r filename:读文件到当前文件中 w filename:当前文件内容写入另外一个文件 !command 执行命令 r!command 读取命令的输出
|
地址定界
1 2
| 格式 :start_pos,end_pos cmd
|
1 2 3 4 5 6 7 8
| 地址定界格式 #: #具体第几行,例如:2 表示光标定位第二行 #,#: #从左侧#表示起始行,到右侧#表示结尾行 #,+#: 从左侧#表示起始行,加上右侧#表示的行数,例如2,3 表示2到5行 .: 当前行 $: 最后一行 .,$-1: 当前行到最后一行减一 /pattern/: 从当前行向下查找,直到匹配pattern的第一行,即正则表达式
|
地址定界后跟一个编辑命令
1 2 3 4 5 6
| d:删除 y:复制 w file:另存为指定文件 r file:在指定位置插入指定文件中的所有内容 t m
|
查找并替换
1 2 3 4 5 6
| 格式: s/要查找的内容/替换为的内容/修饰符 修饰符: i:忽略大小写 g:全局替换,默认情况,每行只能替换一次出现 gc:全局替换,每次替换前提问
|
定制vim工作特性
1 2 3
| 配置文件: /etc/vimrc 全局配置 ~/.vimrc 个人配置
|
1 2 3
| 行号 显示:set number,简写:set nu 取消:set nonumber,简写:set nonu
|
1 2 3
| 忽略字符大小写 启用:set ignorecase 简写 set ic 不忽略:set noic
|
1 2 3
| 自动缩进 启用:set aotoindent,简写set ai 禁用:set noai
|
1 2 3
| 复制保留格式 启用:set paste 禁用:set nopaste
|
1 2 3
| 显示tab^|和换行符和$显示 启用:set list 禁用:set
|
1 2 3
| 高亮搜索 启用:set hlsearch 禁用:set nohlsearch 简写:nohl
|
1 2 3
| 语法高亮 启用:syntax no 禁用:syntax off
|
1 2 3 4
| 文件格式 启用Windows格式:set fileformat=dos 启用Unix格式:set fileformat=unix 简写 set ff=dos|Unix
|
1 2 3 4
| tab用空格替代 启用:set expandtab 默认个空格代替 禁用:set 简写:set
|
1 2 3 4
| 设置缩进宽度 向右缩进 命令模式>> 向左缩进 命令模式<< 设置缩进为4个字符:set shiftwidth=4
|
1 2 3
| 设置文本宽度 set textwidth=65 从左向右计数 set wrapmargin=15 从走向左计数
|
1 2 3
| 设置光标所在行的标识标识线 启用:set cursorline 简写 set cul 禁用:set nocursorline
|
1 2 3
| 加密 启用:set key=password 禁用:set key=
|
1 2 3
| set的帮助 :help option-list :set or :set all
|
1 2 3 4
| 退出vim快捷键,必须在命令模式下操作 ZZ:保存退出 ZQ:不保存退出
|
1 2 3 4 5 6 7
| 删除命令 d:结合光标跳转字符,实习范围删除 d$:删除到行尾 d^:删除到非空行 dd:删除当前行
D:等同于D$
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 将文件的内容在当前终端运行一次,才能使用系统变量,要不然值为空 . /etc/os-release
[23:54:17 root@localhost ~]#cat /etc/os-release NAME="CentOS Linux" VERSION="8" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="8" PLATFORM_ID="platform:el8" PRETTY_NAME="CentOS Linux 8" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:8" HOME_URL="https://centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-8" CENTOS_MANTISBT_PROJECT_VERSION="8"
|