简单的BASH脚本启动Redis哨兵

时间:2015-07-06 19:24:30

标签: bash shell redis-sentinel

我有这个简单的脚本尝试启动3个不同的Redis Sentinel进程来监控主/从Redis进程:

# (attempts to run 3 sentinel processes from one script)
    redis-sentinel /usr/local/redis/sentinel-26379.conf
    redis-sentinel /usr/local/redis/sentinel-26380.conf
    redis-sentinel /usr/local/redis/sentinel-26381.conf
# end

但是,当然,这实际上不会启动3个单独的进程 - 它只会在终端窗口中运行第一个命令,而后两个命令将不会运行。我可以在一个脚本的不同窗口中运行所有3个命令的最佳方法是什么? (我还有一些其他命令,我想从同一个脚本运行,但我想保持简单的例子。)

我在Mac OSX上使用iTerm2。

1 个答案:

答案 0 :(得分:1)

bash提供job control,这意味着您可以在后台同时运行多个作业。使用&在后​​台启动流程:

redis-sentinel /usr/local/redis/sentinel-26379.conf &
redis-sentinel /usr/local/redis/sentinel-26380.conf &
redis-sentinel /usr/local/redis/sentinel-26381.conf &

如果您输入

jobs

您将获得正在运行的作业列表。请注意,所有作业都会将其输出写入同一终端。我猜是你真正想要的。

如果您确实想在不同的窗口中启动该进程,则需要从脚本启动三个终端并将redis-sentinel命令设置为其初始命令。我在OSX上不知道iTerm,但我几乎100%确定它提供了这样的功能。对于gnome-terminal,它看起来像这样:

 gnome-terminal -e 'redis-sentinel /usr/local/redis/sentinel-26379.conf' &

查看手册页以获取iTerm的正确选项。

相关问题