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

原创 2016年08月29日 23:05:57

前言

这里的需求来自于前一篇描述的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

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Linux各位服务配置文件的相应目录位置

启动引导程序配置文件LILO /etc/lilo.conf GRUB /boot/grub/menu.lst 系统启动文件核脚本主启动控制文件 /etc/inittab SysV启动脚本的位置 ...

mongo配置文件

下面描述的配置信息在MongoDB3.4版本中可用。只介绍常用的配置,不常用的以后遇到再添加。配置文件在使用mongod和mongos命令启动的时候,你可以使用这个配置文件。这个配置文件包含的内容和m...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Hadoop集群搭建示意图即相应配置文件汇总

核心内容: 1、Hadoop1.1.2伪分布(或集群)搭建核心配置文件 2、Hadoop2.4.1伪分布(或集群无HA)搭建核心配置文件 3、Hadoop2.4.1 + HA 集群搭建核心配置文...

User Profile Synchronization Service–Hangs on Starting (I fixed it!) 用户配置文件同步服务卡在“正在启动”状态

User Profile Synchronization Service–Hangs on Starting

User profile synchronization service starting issues 用户配置文件同步服务启动问题

User profile synchronization service starting issues zh

更改windows服务的配置文件(app.config)无需重新启动

这个问题是前一阶段写windows服务碰到的。本来在写获取配置文件的某个配置的值的时候,通常我都是写类似下面的这么一个静态方法来获取: 1: /// 2: ...

my.ini配置文件引起的"无法启动mysql服务,发生错误1067"

1. 问题描述本人的mysql是官网下载的zip包绿色版5.7.4-m14版本, 我从将mysql整个目录打包拷贝到另一个机器上, 重新配置了my.ini及安装了mysql服务, 但在启动mysql服...

Spring学习笔记(18)----使用Spring配置文件实现事务管理

由于我们要拦截UserDAOImpl中的方法,因此我们需要在配置文件中配置信息,在配置文件中使用了AOP技术来拦截方法。  xml配置代码: 这
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)