系统服务添加多个服务依赖项
前言
在做项目中我们常会碰到需要设置系统服务的依赖项的需要,有些程序需要在别的系统服务启动之后再启动。设置单个依赖项很多教程,但是怎么为一个服务添加多个服务依赖项呢?我找了很久也没找到,那就让我来抛砖引玉一波。
1.添加单个服务依赖项
添加单个服务依赖项建议通过命令行的方式添加:
win+r键打开命令行
cmd 命令行添加命令如下:
sc config "服务名称" depend= "依赖的服务名称"
注意:有时服务显示的名称和实际的服务名称不相同,依赖的服务名称,需要点击服务详情查看,以详情页面显示的服务名为准
比如:
sc config "服务A" depend= "服务B"
如果执行成功则会提示,需要注意的是**"depend="前后都必须带空格,“depend"之前必须要有空格,”="和"服务B"之间必须要有空格**。
设置成功后,A服务依赖B服务启动,即:只有先启动B服务后,A服务才会启动。
添加服务依赖项成功后,我们可以再注册表中看到设置成功的服务依赖项:
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 找到成功设置依赖项的服务名
找到DependOnService这个多字符串值,里面就是设置成功的服务依赖项。
当然,也可以通过去找注册表,添加"多字符串值"来设置依赖项,但是不太建议,翻找注册表还是挺麻烦的,而且似乎也只能添加一个依赖项,添加多个依赖项时也容易报错。
以上是添加一个服务依赖项的的操作流程,那么如何添加多个服务依赖项呢?
2.添加多个服务依赖项
在cmd命令行输入 sc config "服务A" depend= "服务B"
只能添加一个服务依赖项。如果再执行一次命令sc config "服务A" depend= "服务C"
,那么后一个添加的服务依赖项(服务C)会覆盖前一个设置的服务依赖项(服务B),这样始终只能设置一个服务依赖项。
因为我的项目包注册成了服务,我要给项目包添加多个服务依赖项,我尝试在 sc config "服务A" depend= "依赖项"
指令中把多个依赖项直接空格间隔开,结果命令行提示报错:
查看指令提示后,我发现添加多个服务依赖项时,depend= 后面添加的多个依赖项需要用斜杠“/”分隔开,才能成功添加。添加多个服务依赖项的命令如下:
sc config "服务A" depend= "服务1"/"服务2"/"服务3"/......
执行指令:
sc config "thinvent-auth" depend= "MySQL57"/"RabbitMQ"/"Redis"
这里可以看到,我的项目包设置了三个服务依赖项,分别是MySQL57、RabbitMQ和Redis,多个依赖项之间用斜杠"/"分隔开,就能执行成功。
添加成功后,我们在“服务”–“依存关系”中可以看到添加成功的服务依赖项: