测试系统单元是否在bash脚本中处于活动状态

mat*_*ath 10 linux bash scripting admin systemd

我正在编写一个脚本来自动在CentOs 7发行版上安装绑定服务器.

我坚持systemctl status,因为它不会产生错误代码(它是正确的,因为状态不是错误)我可以使用.

我想要的是检查服务是否已启动(活动).这样做的最佳和最有效的方法是什么?

lar*_*sks 32

检查服务是否处于活动状态的最佳方法是使用以下systemctl is-active命令:

# systemctl start sshd
# systemctl is-active sshd >/dev/null 2>&1 && echo YES || echo NO
YES
# systemctl stop sshd
# systemctl is-active sshd >/dev/null 2>&1 && echo YES || echo NO
NO
Run Code Online (Sandbox Code Playgroud)

  • 你也可以使用`-q`开关,这样你就不必重定向输出:`systemctl -q is-active sshd` (11认同)

vol*_*a89 11

如果要签入 shell 脚本,可以执行以下操作:

if (systemctl -q is-active some_application.service)
    then
    echo "Application is still running."
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

要检查应用程序是否未运行,只需在条件中添加感叹号即可。

  • 看起来脚本正在检查 systemctl 的返回代码而不是返回的字符串。所以它有效。 (2认同)