「systemd」- 从 systemctl status 中提取个别字段

问题描述

在 Shell Script 中,我们需要判断服务的运行状态,以作出相应的逻辑处理。

该笔记将记录:如何获取 systemd 管理的某个服务的运行状态。

解决方法

我们以 nginx 服务为例,判断服务的运行状态

# systemctl show nginx.service --property ActiveState
ActiveState=inactive

# systemctl start nginx.service

# systemctl show nginx.service --property ActiveState
ActiveState=active

如果希望在 Shell Script 中使用:

eval $(systemctl show nginx.service --property ActiveState)
if [ "$ActiveState" = "active" ]; then
    echo "Nginx is running."
else
    echo "Nginx is stopped."
fi

参考文献

python – how to get individual values from the output of systemctl status – Stack Overflow
shell – Run a string as a command within a Bash script – Stack Overflow