5 windows下的磁盘管理
装了一个苹果系统在ssd上,用硬盘盒插到windows电脑上,其GUI版的磁盘管理工具,无法删除分区和格式化磁盘,又找了一个国产的DiskGenius,
能删除分区,其后啥事也干了了,原来windows下有一个diskpart工具,list disk
列出所有盘,select disk 1
选择一个盘,clean
就把盘给清理干净了,
再用GUI版的磁盘管理工具能就把磁盘格式化当移动硬盘用了。
4 windows版redis做本地开发测试
在数据量大的情况下,减少网络IO,特别是本地硬件资源比服务器资源更强大时,急需要一个windows的redis来解决问题。
临时服务安装:cmd敲命令进入Redis安装文件下,启动临时服务:redis-server.exe redis.windows.conf
,如果出现一个方形图标,安装临时服务成功。
备注:通过以上面命令,会创建Redis临时服务,不会在window Service列表出现Redis服务名称和状态,此窗口关闭,服务会自动关闭 可以装一个Redis Management测试一下,当关闭这个临时服务是数据库连不上的。
现在进行客户端调用,因为只有临时服务,所以不要关闭上面窗口,我们打开文件夹下redis-cli.exe执行文件,进入客户端Dos窗口,
敲入Set uid 1
返回OK
,表示写入内存中;我们再敲Get uid
,会返回一个Value值1
参考自这里 ,redis的windows版本在这里,虽长年不更新,但还能用。
3 用mtr分析网络请求
背景:把腾讯云狠狠冤枉了一顿,用Ssh操控云主机,时不时没法及时响应,敲的内容过好几秒才能显示出来。 同时用阿里云对比,貌似又正常(也怪不得我要冤枉了)。这就把问题都怪腾讯云不稳定上面来了。 (2018/09/25)
定位问题的方法:
-
- 获得本地IP,本地电脑用浏览器访问:ping.huatuo.qq.com获得本地公网IP
-
- MTR测试【那个慢的服务器IP】,3分钟后截图,mtr在这里可下载。
-
- MTR测试【本地电脑IP】,在服务器上则使用mtr命令
备注:需提供双向的mtr测试和ping测试的截图,本地ip–服务器ip 服务器ip–本地ip 完整的截图
结果访问第一跳就有丢包,腾讯小伙视为不正常,提示换网络环境尝试:
后来插网线就0丢包了,万恶的360WIFI网卡
2 用rsync来同步两台机器的目录(单身)
- 背景:
(1)用spring开发的程序,双机部署,上传接口,可能随机到不同的机器;
(2)file访问文件的请求只反代理到其中一台机器的某目录
- 问题:
如何将B机器的文件实时归纳到A机器?即单向同步。
- 解决:
用rsync + inotify
达到实时单向同步的效果,主要参考自这里
- 做法:
(1)首先保证B机器可以用ssh免密登录A机器,方法是:
ssh-keygen -t rsa # 在B机器上生成ssh公钥
scp /root/.ssh/id_rsa.pub root@172.26.3.142:~/.ssh/temp.pub # 将B机器的公钥拷贝到A机器
cat ~/.ssh/temp.pub >> ~/.ssh/authorized_keys # 在A机器上执行,将B的公钥追加到A机器的授权允可中
chmod 600 ~/.ssh/authorized_keys # 在A机器上执行,设置权限
ssh root@172.26.3.142 # 在B机器执行命令并不需要验密则表示成功!
(2)rsync一般是系统自带了,以下命令都在A机器上执行:
which rsync # 从环境变量看rsync在哪,一般在/usr/bin下
rpm -qf /usr/bin/rsync # 查看属性于哪个安装包,阿里主机上是较新的3.1.2版,因此不要动了
rsync --daemon # 查看rsync加载的配置文件,没有东西,看样子是没有启动。一般在/etc/rsyncd.conf下
vim /etc/rsyncd.conf # 编辑同步脚本,基本上就是把注释的代码打开,修改之后的内容如下,后续也没运行什么命令,不过系统进程中可以看到rsync,有监听873端口
rsync --daemon # 如果关闭了,使用这个命令启动
rsyncd.conf的配置示例:
# configuration example:
uid = root
gid = root
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[ftp]
path = /root/www/guguhui_service/api
comment = copy file from 143
# https://blog.csdn.net/iie_libi/article/details/56682520
host allow = 172.26.3.143
list = yes
auth users = root
其实有了minio之后,这种场景都不存在
(3)inotify是能监听文件目录的变化,在B机器上安装inotify,以下命令在B机器上执行:
wget https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz # 下载 https://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/
tar -zxvf inotify-tools-3.13.tar.gz # 解压
cd inotify-tools-3.13/
./configure --prefix=/root/program/inotify && make && su -c 'make install' # 配置并编译安装
cd ../inotify/bin
vim monitor.sh # 新建启动脚本,脚本如下,主要是就是调用两个工具命令行
monitor.sh的脚本如下:
#!/bin/bash
SRC=/root/www/guguhui_service/api/
DST=root@172.26.3.142:/root/www/guguhui_service/api/
/usr/bin/rsync -ahqzt --delete $SRC $DST
/root/program/inotify/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read status
do
/usr/bin/rsync -ahqzt --delete $SRC $DST
echo "`date +'%Y-%m-%d %H:%M:%S'` ${status} has rsynced " >>rsync.log
done
以上脚本有点危险,–delete参数会将目标无关的extraneous东西都删除掉,什么是无关,是B机器没有的吗?现在的情况是发现A的一些文件不见,所以用以下脚本 :
#!/bin/bash
SRC=/root/www/guguhui_service/api/
DST=root@172.26.3.142:/root/www/guguhui_service/api/
/usr/bin/rsync -ahqzt $SRC $DST
/root/program/inotify/bin/inotifywait -mrq -e modify,create,attrib ${SRC} | while read status
do
/usr/bin/rsync -ahqzt $SRC $DST
echo "`date +'%Y-%m-%d %H:%M:%S'` ${status} has rsynced " >>rsync.log
done
其它shell管理脚本:
chmod +x monitor.sh # 执行权限
./monitor.sh & # 后台启动
ps -ef|grep inotify # 可以看到进程
(4)验证
在B机器上新增目录或修改文件、删除文件或目录,都能实时同步到A机器
1 用Wireshark分析TCP网络包
程序调用接口,对方返回异常,比如说长度超限,但是用POSTMAN等模拟是可以的。程序发的请求有什么问题?真相是什么?
正常的请求如下:
但是,程序发出的请求是这样的:
诊断出:未按form-data的格式发东西,原来是header没加上
ip过滤器的添加方式:
ip.addr == 172.16.0.121