1

我有这个简单的脚本来尝试启动 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。

4

1 回答 1

1

bash提供作业控制,这意味着您可以在后台同时运行多个作业。用于&在后台启动进程:

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命令设置为它们的初始命令。我不知道iTermOSX,但我几乎 100% 确定它提供了这样的功能。对于 gnome 终端,它看起来像这样:

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

检查手册页以获得正确的选项iTerm

于 2015-07-06T19:35:03.827 回答