首页 >>  正文

shell脚本实例解析

来源:baiyundou.net   日期:2024-09-21

华为云云耀云服务器L实例评测|在云耀云服务器L实例使用Docker搭建redis集群——三主三从集群

购买云耀云服务器 L 实例

华为云耀云服务器 L 实例是一款轻量级云服务器,开通选择实例即可立刻使用,不需要用户再对服务器进行基础配置。新用户还有专享优惠,2 核心 2G 内存 3M 带宽的服务器只要 89 元/年,可以点击华为云云耀云服务器 L 实例购买地址去购买云服务器。

购买指导可以查看上一篇文章华为云云耀云服务器 L 实例评测 |云服务器选购

云耀云服务器 L 实例安装 docker

这一部分在上一篇文章中已经详细说明,详见华为云云耀云服务器 L 实例评测|在云耀云服务器 L 实例上安装 Docker,本文不再赘述。

测试 Docker 是否正常运行

# 查看docker版本

docker version

# 测试运行容器

docker run hello-world

看到输出 docker 版本则表示 docker 已经成功安装,此时我们可以继续运行 hello world 的容器,测试容器是否可以正常运行。

如果 Docker 正常运行,就可以看到 docker 在成功创建容器并运行容器后,输出 hello from Docker!

创建 redis 的 docker 网段

这里将 redis 集群的网段设置为 172.16.0.0/24。

docker network create --driver bridge --subnet 172.16.0.0/24 --gateway 172.16.0.1 redis-net

查看刚刚创建的 redis 网段

docker network ls

创建 redis 的配置文件

先创建 shell 脚本来生成 redis 配置文件

sudo vim redis-node-config.sh

在 redis-node-config.sh 文件中输入以下内容:

#!/bin/bash

# 配置文件存放路径

BASE_PATH=/test/redis

# 创建个数

REDIS_COUNT=6

# ip前缀

REDIS_IP=172.16.0.1

for port in $(seq 1 $REDIS_COUNT);

do

mkdir -p $BASE_PATH/node-$port/conf

mkdir -p $BASE_PATH/node-$port/data

touch $BASE_PATH/node-$port/conf/redis.conf

cat < $BASE_PATH/node-$port/conf/redis.conf

port 6379

# 生产环境中为了安全性请绑定当前机器的ip

bind 0.0.0.0

# 启动集群模式

cluster-enabled yes

cluster-config-file nodes.conf

# redis节点宕机被发现的时间

cluster-node-timeout 5000

cluster-announce-ip $REDIS_IP$port

cluster-announce-port 6379

cluster-announce-bus-port 16379

appendonly yes

EOF

done

赋予脚本可执行权限

sudo chmod +x redis-node-config.sh

运行脚本创建配置文件

./redis-node-config.sh

查看脚本是否成功生成文件

cd /test/redis

ll

脚本启动 redis 容器

创建启动脚本

sudo vim redis-run.sh

在 redis-run.sh 中输入以下内容:

#!/bin/bash

# 配置文件存放路径

BASE_PATH=/test/redis

# 创建个数

REDIS_COUNT=6

# ip前缀

REDIS_IP=172.16.0.1

for port in $(seq 1 $REDIS_COUNT);

do

docker run -d -p 637$port:6379 -p 1667$port:16379 \\

--name redis-$port \\

-v $BASE_PATH/node-$port/data:/data \\

-v $BASE_PATH/node-$port/conf/redis.conf:/etc/redis/redis.conf \\

--net redis-net \\

--ip $REDIS_IP$port \\

redis redis-server /etc/redis/redis.conf

done

赋予脚本可执行权限

sudo chmod +x redis-run.sh

运行脚本启动多个 redis 容器

./redis-run.sh

脚本会创建六个 redis 容器并将它们启动起来。

开始搭建 redis 集群

# 进入其中一个容器

docker exec -it redis-1 /bin/bash

# 说明:--cluster :使用cluster的方式搭建集群 --cluster-replicas 1 :一个主机有一个从机

redis-cli --cluster create 172.16.0.11:6379 172.16.0.12:6379 172.16.0.13:6379 172.16.0.14:6379 172.16.0.15:6379 172.16.0.16:6379 --cluster-replicas 1

执行过程中需要输入一次 yes

测试 redis 集群

# 进入redis-1容器

docker exec -it redis-1 /bin/bash

# -c:以集群方式启动

redis-cli -c

# 设置一个键值对

set name berbai01

这里显示是 172.16.0.12 上的 redis 处理了 set 操作。

查看集群节点

cluster nodes

到此已经成功搭建了 redis 的 3 主 3 从集群,上图中 master 为主 redis,slave 则是从 redis。-----已授权转载

","gnid":"9d8337d18a0ab405b","img_data":[{"flag":2,"img":[{"desc":"","height":"529","title":"","url":"https://p0.ssl.img.360kuai.com/t01d0d243467d03dee4.jpg","width":"1283"},{"desc":"","height":"564","title":"","url":"https://p0.ssl.img.360kuai.com/t0171e943abd7d0571e.jpg","width":"468"},{"desc":"","height":"558","title":"","url":"https://p0.ssl.img.360kuai.com/t01c424501fd2940eb7.jpg","width":"533"},{"desc":"","height":"112","title":"","url":"https://p0.ssl.img.360kuai.com/t018fe7e95df3358a2e.jpg","width":"1283"},{"desc":"","height":"282","title":"","url":"https://p0.ssl.img.360kuai.com/t01df0b31317d250dce.jpg","width":"1002"},{"desc":"","height":"394","title":"","url":"https://p0.ssl.img.360kuai.com/t013eeb453308713b8e.jpg","width":"748"},{"desc":"","height":696,"title":"","url":"https://p0.ssl.img.360kuai.com/t014e96258992d33dcb.jpg","width":1172},{"desc":"","height":858,"title":"","url":"https://p0.ssl.img.360kuai.com/t01e0e74f2a31c8e0f8.jpg","width":1280},{"desc":"","height":"272","title":"","url":"https://p0.ssl.img.360kuai.com/t014a1024a79d73c4f4.jpg","width":"908"},{"desc":"","height":"206","title":"","url":"https://p0.ssl.img.360kuai.com/t013870d4441bd2f349.jpg","width":"1283"}]}],"original":0,"pat":"art_src_0,fts0,sts0","powerby":"pika","pub_time":1699873441000,"pure":"","rawurl":"http://zm.news.so.com/bafbf4c84e13aa1f3ea5e2ebd475a541","redirect":0,"rptid":"92df448fe235fe02","rss_ext":[],"s":"t","src":"杨老师技术评论","tag":[],"title":"在云耀云服务器L实例使用Docker搭建redis集群——三主三从集群

宿信崔2209如何编写一个shell脚本查看某个进程是否在运行 -
元鸿典19512361354 ______ ^1 、编写一个shell脚本来查看某个进程是否在运行,用户可以通过ps命令获取所有的进程,然后通过awk命令提取进程名,再用grep提取相应的进程名即可. 2、参考代码如下: ps -aux |awk '{print $11}' | grep "^$1" >/dev/null case $? in 0) echo "find process $1" ;; 1) echo "$1 is not running" ;; *) echo "unknow error" esac3、脚本运行结果如下

宿信崔2209编写一个shell脚本,脚本名为shell,执行该脚本的功能是:判断第一个位置参数是否是 -
元鸿典19512361354 ______ #!/bin/bash (( $# > 0 )) || exit [[ ! $1 =~ ^[/]*root$ ]] && echo "第一个位置参数不是/root目录" && exit ls -a /$1 > 13out shift while (( $# > 0 )) do [ -f $1 ] && echo "File "$1":" >> 13out && cat $1 >> 13out && shift && continue [ -d $1 ] && echo "this dir" && shift && continue echo "该文件($1)既不是普通文件也不是目录文件" shift done

宿信崔2209如何执行shell脚本其中一条命令 -
元鸿典19512361354 ______ 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:复制代码代码如下:cd /data/shell./hello.sh./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作...

宿信崔2209linux shell脚本读取用户输入的参数
元鸿典19512361354 ______ while read var do echo $var done 这样也是可以的,没错. 想回退的话用 ctrl+backspace

宿信崔2209创建一个script,Linux shell脚本 -
元鸿典19512361354 ______ 和C语言类似,在Shell中用if、then、elif、else、fi这几条命令实现分支控制.这种流程控制语句本质上也是由若干条Shell命令组成的,例如先前讲过的 if [ -f ~/.bashrc ]; then ~/.bashrc fi 其实是三条命令,if [ -f ~/.bashrc ]是第一条,then . ~/.bashrc...

宿信崔2209如何写出高大上的shell脚本 -
元鸿典19512361354 ______ 如何编写一个shell脚本 本文结合大量实例阐述如何编写一个shell脚本. 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集,而且是一门非常棒的编程语...

宿信崔2209shell 脚本中$$,$#,$?分别代表什么意思? -
元鸿典19512361354 ______ 给你个全的,你在Linux环境下多试下就明白了:$0 这个程式的执行名字$n 这个程式的第n个参数值,n=1..9$* 这个程式的所有参数,此选项参数可超过9个.$# 这个程式的参数个数$$ 这个程式的PID(脚本运行的当前进程ID号)$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)$? 执行上一个指令的返回值 (显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误)$- 显示shell使用的当前选项,与set命令功能相同$@ 跟$*类似,但是可以当作数组用

宿信崔2209UNIX/Linux shell脚本 if语句的几个案例 -
元鸿典19512361354 ______ if [条件测试1] && (||) [条件测试2]; //以if为起始,后面可以接若 then //干个判断式,使用&&或|| 第一段程序执行内容 elif [条件测试3] && (||) [条件测试4]; //第二段的判断,如果第一 then //段没有符合就来此搜寻条件 第二段程序执行内容 else ...

宿信崔2209什么是shell编程啊,求简单实例 -
元鸿典19512361354 ______ 刚刚学习了新书<<实用Linux Shell编程>>,书写的容易懂,第一章就回答了什么是shell编程的问题.下面简单回答,仅供参考,谢谢!1)linux 命令,你可以一条一条执行,例如...

宿信崔2209Linux如何编写shell脚本?
元鸿典19512361354 ______ 一般以 #!/bin/sh 开头(不是必须要写,但一定要单独一行),指定执行这个脚本的shell程序(也可以用#!/bin/zsh或其他),然后就是堆命令了.Linux的shell脚本支持很多功能,加上Linux高度模块化的命令,完全可以用shell脚本写出复杂的程序. 以上只是简单介绍如何开始写shell脚本,如果要写复杂的脚本,还需要深入学习相关知识(如if——fi、case——esac等结构). 当然,还需要给脚本加上可执行权限(chmod +x ./file.sh),否则可以用 sh ./file.sh 方式执行脚本(这里的sh是执行脚本所需shell,命令也可以是zsh ./file.sh或其他).

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024