我有这个简单的脚本尝试启动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。
答案 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
的正确选项。