Service systemd服务文件中是否有使用before/after的先决条件?

Service systemd服务文件中是否有使用before/after的先决条件?,service,systemd,Service,Systemd,我有两个服务文件,它们都是这样的: [Unit] Description=A service [Service] User=root #change this to your workspace WorkingDirectory=/data/acloud/repository/lib #path to executable. #executable is a bash script file I created to run the application jar file ExecStart

我有两个服务文件,它们都是这样的:

[Unit]
Description=A service
[Service]
User=root
#change this to your workspace
WorkingDirectory=/data/acloud/repository/lib
#path to executable. 
#executable is a bash script file I created to run the application jar file
ExecStart=/data/acloud/repository/lib/program.sh
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
我在其中一个文件中添加了
After=
,希望它只能在另一个服务启动后启动。但它不起作用。即使其他服务没有启动,它也可以毫无问题地启动。我不明白为什么

另外,我将
Requires=
放在同一个文件中,并删除了
after
子句。它按预期工作。启动此服务时,另一个服务将自动启动


感谢您的帮助。谢谢。

澄清:两个服务文件看起来都像描述中所示,但显然有不同的名称和不同的ExecStart路径。文档解释了After和Requires的含义。看完后还有什么不清楚的吗?如果是这样,你能补充一下你的问题中不清楚的地方吗?@Michal,我已经看过你分享的文件了。我的理解是,如果foo.service有一个类似After=bar.service的条目,那么foo.bar只有在bar.service启动后才会启动。只有=bar.service之后的条目就足以实现这一点,不需要其他更改。但就我而言,foo.bar甚至在酒吧服务之前就开始了。我遗漏的一个细节是,这两个应用程序最初都是spring boot应用程序,我使用“sudo systemctl start foo/bar”启动它们。我做错了吗?我认为这个问题可能更适合ServerFault、SuperUser或Unix SE。实际上已经有了相当清楚的解释。澄清:两个服务文件看起来都像描述中所示,但显然有不同的名称和不同的ExecStart路径。文档解释了After和Requires的含义。看完后还有什么不清楚的吗?如果是这样,你能补充一下你的问题中不清楚的地方吗?@Michal,我已经看过你分享的文件了。我的理解是,如果foo.service有一个类似After=bar.service的条目,那么foo.bar只有在bar.service启动后才会启动。只有=bar.service之后的条目就足以实现这一点,不需要其他更改。但就我而言,foo.bar甚至在酒吧服务之前就开始了。我遗漏的一个细节是,这两个应用程序最初都是spring boot应用程序,我使用“sudo systemctl start foo/bar”启动它们。我做错了吗?我认为这个问题可能更适合ServerFault、SuperUser或Unix SE。其实也似乎已经有了比较清楚的解释。