18 根据给定的配置文件启动相应的mongo服务

前言

这里的需求来自于前一篇描述的mongo集群的搭建, 主要是shard吧, 两台机器, 一台启动一个replicationSet, 另外一台启动一个router结点, 两个config结点
然后 最初的设想是为了直接一个脚本启动replicationSet集群, 后来 拓展了一下 对于config结点的启动, router结点的启动也使用了脚本[在本次介绍的脚本上面做了一定程度根据场景进行适配的修改]

问题描述

目录结构如下[略去了一些不重要的文件/文件夹 ]
这里写图片描述

编写一个脚本, 传入参数, 参数为需要启动的mongo服务[这里以基本的数据节点mongod服务为例]的配置文件, 脚本要做的事情 就是启动对应的mongo服务, 可以传入多个参数, 多个配置文件, 启动多个mongo服务

思路

1 首先 实现这个脚本 第一步需要做的事情, 就是 了解如何通过给定的配置文件启动一个mongo服务
$mongoDir/bin/mongod –config $confFile

2 然后 获取给定的脚本所在路径也是其中的一个难点
下面是我曾经尝试过的一些方式
第一个 : 看起来是正确的, 但是 需要明确的一点是当前work diretory未必是脚本所在的文件夹
第二个 : 这个就更不好找问题了, 问题在于”$0”得到的是执行当前脚本使用的路径[可能是相对, 也可能是绝对], 如果是在shardConf目录使用”./start.sh”的话, 则会导致脚本后面获取”mongoDir”不统一, 因此 存在问题
第三个 : 来自于网络, 请详见参考, 这个 是能够获取到我们所需要的目标了[给定的执行的脚本的绝对路径]

# 1. got current script's parent dir by 'pwd', not good incase of cur execute cmd not in script's parent dir
curDir=`pwd`
# 2. got current script's parent dir by '$0', some time got relative path
scriptPath=$0
curDir=${scriptPath%/*}
# 3. got current script's parent dir 
curDir=$(cd `dirname $0`; pwd)

3 剩下的则 都是一些shell相关的基础知识了,, 因此 这里不多描述, 参考连接中会放设计的相关shell的基础知识的连接

参考脚本

startup.sh

#! /bin/bash
# -------------------------------------------------------
source /usr/local/ProgramFiles/shells/Utils.sh

# -------------------------------------------------------

curDir=$(cd `dirname $0`; pwd)
# echo $curDir

mongoDir=${curDir%/*}
echoC "MONGO_HOME : $mongoDir" $green

for conf in $@
do
        echoC "start mongoInstance with :  '$mongoDir/bin/mongod --shardsvr --config $curDir/$conf'" $green
        $mongoDir/bin/mongod --shardsvr --config $curDir/$conf
done

+_+ 简单吧,,

Utils.sh

#! /bin/bash
# print content with color '$color'
black=30
red=31
green=32
yellow=33
blue=34
purple=35
skyBlue=36
white=37
function echoC() {
        echo -e "\033[$2m$1\033[0m"
}


## to be continued ....

效果截图

这里写图片描述

总结

小工具, 扯扯淡, 熟悉了一下shell而已

参考 :
Linux shll中的$符号 – 读取命令行参数 –2016.08.26
http://blog.csdn.net/arkblue/article/details/7801744
Linux shell脚本的字符串截取
http://blog.csdn.net/gumanren/article/details/5601544
shell脚本如何获取当前路径并保存到变量
http://blog.csdn.net/yitianljt/article/details/7615538
在Linux中让echo命令显示带颜色的字
http://onlyzq.blog.51cto.com/1228/546459
linux shell自定义函数(定义、返回值、变量作用域)介绍
http://www.jb51.net/article/33899.htm
Linux Shell编程变量赋值和引用
http://blog.sina.com.cn/s/blog_a0e5bf2c0100yeqv.html
在Shell中使用函数文件,引入文件
http://justcoding.iteye.com/blog/2010786
http://zhidao.baidu.com/question/2138162712611361108.html?qbl=relate_question_1&word=%D4%DAShell%D6%D0%CA%B9%D3%C3%BA%AF%CA%FD%CE%C4%BC%FE%2C%D2%FD%C8%EB%CE%C4%BC%FE
Shell if else语句
http://c.biancheng.net/cpp/view/7005.html [注意空格”if [ var01 op var02 ]”]
http://www.jb51.net/article/56553.htm
Shell脚本中计算字符串长度的5种方法
http://www.jb51.net/article/51348.htm
[转]linux shell 获取当前正在执行脚本的绝对路径
http://www.cnblogs.com/FlyFive/p/3640267.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值