我使用
elasticsearch
实例作为 nosql 数据库。这是在 mac os 上用 brew
安装的。
这就是我开始的方式
elasticsearch
。
brew services start elasticsearch
我想知道是否有一个brew命令(或其他命令)可以让我知道
elasticsearch
实例是否打开。
最终我想运行一个 bash 脚本来执行以下操作:
If elasticsearch is off:
Turn on elastiscearch
Proceed
Else:
Proceed
brew services list
给出服务的状态。所以像 brew services list | grep elastiscearch | awk '{ print $2}'
这样的东西应该返回弹性搜索服务的状态,无论是 started 还是 stopped
只要跑:
brew services
示例输出
Name Status User Plist
grafana started mark /Users/mark/Library/LaunchAgents/homebrew.mxcl.grafana.plist
influxdb started mark /Users/mark/Library/LaunchAgents/homebrew.mxcl.influxdb.plist
mosquitto stopped
redis started mark /Users/mark/Library/LaunchAgents/homebrew.mxcl.redis.plist
unbound stopped
您还可以运行以下命令来获取 homebrew 服务的进程 ID (pid):
launchctl list | grep homebrew
460 0 homebrew.mxcl.influxdb
484 0 homebrew.mxcl.grafana
469 0 homebrew.mxcl.redis
您可以使用命令brew services list检查像
Homebrew
这样的Elasticsearch
服务是否正在运行,该命令将显示Homebrew
管理的所有服务的状态。在输出中,您会发现 Elasticsearch
及其当前状态,指示它是已启动还是已停止。要将其合并到 bash 脚本中,您可以解析输出以确定服务的状态并启动它(如果它尚未运行)。
在脚本中,您可以使用类似
brew services list | grep elasticsearch | awk '{print $2}'
的命令来提取 Elasticsearch
服务的状态。如果状态不是 "started"
,您可以执行 brew services start elasticsearch
来启动服务,然后再继续执行脚本的其余部分。这可确保 Elasticsearch
在您的脚本需要时运行,而无需每次都手动检查。
以下是实现它的方法:
STATUS=$(brew services list | grep elasticsearch | awk '{print $2}')
if [ "$STATUS" != "started" ]; then
brew services start elasticsearch
fi
# rest of the code
此代码片段捕获 Elasticsearch 的当前状态,并仅在服务尚未运行时启动该服务。通过自动执行此检查,您的脚本会变得更加健壮,并且可以处理可能未事先手动启动 Elasticsearch 的情况。
您可以在这里这里
找到有关自制服务的更多信息