如何创建shell脚本来检查Ubuntu中systemd服务的状态?

如何创建shell脚本来检查Ubuntu中systemd服务的状态?,ubuntu,service,systemd,Ubuntu,Service,Systemd,我在ubuntu中运行了5个服务。我每天检查它们的状态,因此必须为所有5个服务输入sudo systemctl status命令。所以我想创建一个简单的脚本service\u status.sh,它将列出状态。如下所示: sudo systemctl status receiver0.service sleep 2 sudo systemctl status receiver1.service sleep 2 sudo systemctl status receiver2.service sle

我在ubuntu中运行了5个服务。我每天检查它们的状态,因此必须为所有5个服务输入
sudo systemctl status
命令。所以我想创建一个简单的脚本
service\u 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
的状态。我可以在脚本中进行哪些更改,以便它不会冻结并显示其他服务的状态?

使用并检查命令的返回代码。

它可能返回错误,而bash可能返回该错误。您应该将返回值存储在变量中,然后可以处理它、忽略它或执行以下操作之一: