搭建redis集群
当前有三个节点 10.32.5.41,10.32.5.81,10.32.5.88
在每个节点上启动两套redis服务,分别监听7000以及7001端口,其他的配置一致
两套服务分别在处于不同的路径下,按官方文档修改最小配置
port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes 修改完配置之后,执行命令分别启动所有的redis服务 ./bin/redis-server ./conf/redis.conf
服务启动后,现在每个节点都是独立的,并没有关联起来,需要执行命令使它们绑定依赖;
在其中的一个节点上执行以下命令,执行完毕后输出节点集群信息
./redis-cli …

定时任务crontab的使用
常用方式有以下几种
使用的时候特别要注意路径问题,脚本中的涉及的文件尽量使用全路径,不然可能导致运行时错误
*/1 * * * * /opt/log/disk_check.sh #每分钟执行一次 50 3 * * * /opt/log/disk_check.sh #每天3点50分执行一次 0 */1 * * * /opt/log/disk_check.sh #每小时0分执行一次(整点执行) 0 * * * * /opt/log/disk_check.sh #每小时0分执行一次(整点执行) 以下表示每分钟执行一次,小时时间表示每步进一个小时满足条件
分值时间表示任意时刻都可以,因此匹配为每分钟运行一次
* */1 * * * /opt/log/disk_check.sh 2>&1 几种符号的意义
* …

Converting a pointer to a byte slice
如果是从裸指针直接转为 []byte 数组接收,会出现异常,需要准备 []byte 的底层结构再行转换
https://stackoverflow.com/questions/43591047/converting-a-pointer-to-a-byte-slice
https://play.golang.org/p/An7jG5xl2W
package main import ( "fmt" "reflect" "unsafe" ) var data = []byte(`foobar`) func main() { rv := reflect.ValueOf(data) ptr := rv.Pointer() length := rv.Len() var sl …

使用telnet传输文件
部分情况下,目标机器上没安装任何可以传输文件的命令,也没有任何权限进行安装,但是有 telnet 命令
如果需要传输文件,那么会比较麻烦,这里通过 python 的方式进行传输文件
传输文件的方式:从本地机器(python服务端)到目标机器(telnet客户端)
整体逻辑(需要确保目标机器可以连接到本地机器)
1、本地机器启动一个 python 监听
2、目标机器 telnet 连接到本地机器
3、本地机器等待到监听后,读取文件发送到 socket 流
4、目标机器 telnet 客户端接收数据流,写到目标文件
下面是网上找到传输文件的例子,这里还进行 base64 编码(可以去掉),实际使用根据需要调整
import socket import base64 port = 10005 filename = …
