如何检查自制程序服务是否开启

问题描述 投票:0回答:3

我使用 Elasticsearch 实例作为 NoSQL 数据库。这是在 macOS 上使用

brew
安装的。

这就是我启动 Elasticsearch 的方式:

brew services start elasticsearch

我想知道是否有一个brew 命令(或其他命令)可以让我知道Elasticsearch 实例是否打开。

最终我想运行一个 bash 脚本来执行以下操作:

If elasticsearch is off:
    Turn on elastiscearch
    Proceed
Else:
    Proceed
bash shell elasticsearch curl homebrew
3个回答
19
投票

brew services list
给出服务状态。所以像
brew services list | grep elastiscearch | awk '{ print $2}'
这样的东西应该返回弹性搜索服务的状态,无论是 started 还是 stopped


5
投票

只要跑:

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

-2
投票

您可以使用命令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 的情况。

© www.soinside.com 2019 - 2024. All rights reserved.