问题描述
在 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
参考文献
K4NZ/从 systemctl status 中提取个别字段
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