目录

需求说明:

一、Nssm(推荐) 

二、Sc 命令

命令格式:

命令参数:

案例演示:

三、instsrv + srvany

命令格式:

案例演示:

(1)打开注册表(win+r运行regedit)

(2)给 kapacit 服务增加子项 Parameters

 (3)给子项 Parameters 增加两个字符串类型的参数 AppDirectory 和 Application,并指定参数值

(4)启动服务

 (5)移除服务

server.bat 使用方法


 

需求说明:

        因为最近时长需要在Windows上使用bat脚本启动服务如influxdb、kapacitor等,想把命令行窗口隐藏起来,做成系统服务管理也方便。

下面介绍3中方法来注册系统服务!!!

一、Nssm(推荐) 

使用 Nssm 工具注册系统服务是最为方便、有效的!!!

可以查看我的这篇文章:Windows 和 Linux 下后台运行 Jar包_Stars.Sky的博客-CSDN博客_cmd后台启动jar包

这里着重介绍另外两个方法。

二、Sc 命令

        SC 是用来与服务控制管理器和服务进行通信的命令行程序。也可以将.bat 脚本或 .exe 程序注册成windos服务。

命令格式:

这里需要用管理员角色启动doc命令窗口。

# 创建服务:
sc create ServiceName binpath= 脚本路径.bat start= auto type= own displayname= 服务名
(注意“=”后有个空格)

# 删除服务:
sc delete 服务名

命令参数:

  • ServiceName:在注册表中为service key制定的名称。注意这个名称是不同于显示名称的(这个名称可以用net start和服务控制面板看到),而SC是使用服务键名来鉴别服务的。
  • binpath= BinaryPathName:指定一个进入服务二进制文件的路径。binpath= 没有默认值,必须要给出此字符串。
  • type= {own | share | interact | kernel | filesys | rec | adapt}:关于建立服务的类型,选项值包括驱动程序使用的类型,默认是share。

  • start= {boot| system| auto| demand| disabled}:关于启动服务的类型,选项值包括驱动程序使用的类型,默认是demand(手动)。

  • displayname= DisplayName:指定被用户界面程序用来标识服务的友好名称。

案例演示:

sc create influx binpath= D:\test\dbs\influxdb-1.8.2-1\influx_start.bat type= own start= auto displayname= influxdb01

# influx_start.bat 内容:
start cmd /c "cd /d D:\test\dbs\influxdb-1.8.2-1 && influxd.exe -config influxdb.conf"

看到创建,在任务管理器打开服务列表,也出现了influx 服务:

但是右击开始运行服务,报错:

        也确保了脚本单独执行是可以成功的,但是在这里不成功(可能sc命令大概率是不支持.bat 脚本注册服务的,只支持 .exe程序),便使用接下来的第三种方法了。

三、instsrv + srvany

        instsrv.exe和srvany.exe是Microsoft Windows Resource Kits工具集中的两个实用工具,这两个工具配合使用可以将任何的exe应用程序作为window服务运行。

        srany.exe是注册程序的服务外壳,可以通过它让应用程序以system账号启动,可以使应用程序作为windows的服务随机器启动而自动启动,从而隐藏不必要的窗口。

下载链接:https://pan.baidu.com/s/1gF5IseFL0vrJkkgwBNi7CA 
提取码:yyds

解压后有如下三个文件:

命令格式:

# 使用管理打开 cmd
绝对路径\instsrv.exe 服务名 绝对路径\srvany.exe

注意:必须输入两个.exe 文件的绝对路径,否则会报如下错误
- The fully qualified path to the .EXE must be given

案例演示:

C:\Users\Administrator>D:\test\dbs\instsrv.exe kapacit D:\test\dbs\srvany.exe

# 自定义服务名为 kapacit

服务创建成功: 

但还没完,需要到注册表修改服务参数:

  • (1)打开注册表(win+r运行regedit)

找到刚刚创建的服务路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kapacit 

  • (2)给 kapacit 服务增加子项 Parameters

右击-新建-项

命名为 Parameters

  •  (3)给子项 Parameters 增加两个字符串类型的参数 AppDirectory 和 Application,并指定参数值

本例中:
    AppDirectory = "D:\test\dbs\kapacitor"(脚本所在的目录路径)
    Application = "D:\test\dbs\kapacitor\kapacitor_start.bat"(脚本所在的绝对路径)

  • (4)启动服务

在任务管理器中启动服务即可成功!!!

  •  (5)移除服务

sc delete kapacit

或者

D:\test\dbs\instsrv.exe kapacit remove

server.bat 使用方法

右击编辑 server.bat 文件:

只需要修改图片标注的地方,Crtl + S 保存,然后双击运行该文件即可自动注册好服务,就不需要上面那样麻烦的点击与修改。 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐