我也见过类似的问题,但没有一个是针对我所面临的情况的。我的服务A的定义如下(注Type=simple)。
[Unit]
Description=Sample service A
Before=shutdown.target
After=multi-user.target
Requires=multi-user.target
Conflicts=shutdown.target
[Service]
Type=simple
RemainAfterExit=yes
Restart=no
ExecStart=/etc/rc.d/init.d/script_a start
ExecStop=/etc/rc.d/init.d/script_a stop
[Install]
RequiredBy=random.target另一个服务B只需要在服务A运行完成后才能运行。我尝试了以下操作,但是服务B似乎在服务A一开始就启动了。服务B不等待A完成。
[Unit]
Description=Sample service B
After=serviceA.service
Requires=serviceA.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/scriptb start
[Install]
RequiredBy=random.target我怎样才能使服务B等到A完成?
我也试着把OnSuccess=serviceB.service放在A服务中,但是没有帮助。
发布于 2023-03-09 12:47:30
为了使服务B等待服务A完成,可以将WantedBy选项添加到服务A中,将RequiredBy选项添加到服务B中,使用相同的目标。以下是如何修改单元文件:
服务A:
Description=Sample service A
Before=shutdown.target
After=multi-user.target
Requires=multi-user.target
Conflicts=shutdown.target
[Service]
Type=simple
RemainAfterExit=yes
Restart=no
ExecStart=/etc/rc.d/init.d/script_a start
ExecStop=/etc/rc.d/init.d/script_a stop
WantedBy=service-b.target
[Install]
RequiredBy=random.target 关于服务B:
Description=Sample service B
After=serviceA.service
Requires=serviceA.service
RequiredBy=service-b.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/scriptb start
[Install]
RequiredBy=service-b.target服务A标记为WantedBy此目标,服务B标记为RequiredBy此目标。这意味着服务B只在服务-b.目标值到达时才会启动,而服务-b.目标只有在服务A成功完成时才能到达。
https://askubuntu.com/questions/1378545
复制相似问题