感谢您调查这个问题。
我有一个 Systemd 服务,我们将其称为 main-application.service,它需要在启动自身之前先启动服务 testA.service 和 testB.service。以下是服务实现(目录位置 - /usr/lib/systemd/system)
main-application.service 文件
[Unit]
Description=Main App
After=testA.service
After=testB.service
Requires=testA.service testB.service
[Service]
EnvironmentFile=/appl/main-application/env-1.conf
EnvironmentFile=/appl/main-application/env-2.conf
ExecStart=/usr/bin/java -jar $EXEC_PATH --spring.config.location=file:/appl/main-application/app.properties
User=root
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
测试A.服务
[Unit]
Description=SVC A
After=syslog.target
[Service]
Type=oneshot
ExecStart=/appl/service-a/main.sh
User=root
[Install]
WantedBy=multi-user.target
测试B.服务
[Unit]
Description=SVC B
After=syslog.target
[Service]
Type=oneshot
ExecStart=/appl/service-b/main.sh
User=root
[Install]
WantedBy=multi-user.target
我们希望测试服务 A 和 B 都在主应用服务之前执行,没有顺序要求。我仍然在主服务中指定了“After”指令,希望它能起作用,但事实并非如此。奇怪的是,当我重新启动主应用服务时,它会随机启动测试服务 A 或 B,但不会同时启动两者。
操作系统——Redhat 8.9
您能给出建议吗?提前谢谢您!