我有 5 个服务在
ubuntu
中运行。我每天都会检查它们的状态,因此必须为所有 5 项服务输入 sudo systemctl status <>
命令。所以我想创建一个简单的脚本service_status.sh
来列出状态。如下所示:
sudo systemctl status receiver0.service
sleep 2
sudo systemctl status receiver1.service
sleep 2
sudo systemctl status receiver2.service
sleep 2
sudo systemctl status sender.service
sleep 2
sudo systemctl status health.service
这运行良好并显示服务的状态,但问题是如果这些服务中的任何一个处于非活动状态或重新启动,则脚本会冻结它们并且不显示其余服务的状态。例如,如果
receiver2.service
由于某种原因没有运行:
● receiver2.service - receiver 2
Loaded: loaded (/etc/systemd/system/receiver2.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Wed 2021-05-19 07:15:34 EAT; 25s ago
Process: 5333 ExecStart=/usr/bin/python3 /home/andrew/Documents/source/receiver_
Main PID: 5333 (code=exited, status=1/FAILURE)
lines 1-5/5 (END)
脚本在此停止,并且不显示
sender.service
和 health.service
的状态。我可以在脚本中进行哪些更改,以便它不会冻结并显示其他服务的状态?
使用 is-active 并检查命令的返回码。
要检查活动服务:
systemctl is-active --quiet <service-name> && echo "<service-name> active"
要检查非活动服务:
! $(systemctl is-active --quiet <service-name>) && echo "<service-name> inactive"