首页 > 系统相关 >把任意程序注册成windows服务, 并设置开机自动启动

把任意程序注册成windows服务, 并设置开机自动启动

时间:2023-06-01 12:24:04浏览次数:55  
标签:xml exe 服务 启动 windows zookeeper kafka 开机 任意

背景

最近有个需求让我把原本部署在linux系统上的数据库和对数据库进行CRUD的java程序部署到windows系统上来.

问题

mysqltdengine这两个数据库有windows版本, 直接安装就行了, 并且也已经自动注册成服务, 可以自己设置开机自动启动(控制面板->本地服务)
image
image

但是

kafkazookeeper是绿色版,怎么设置自动启动呢?还有springboot的jar程序,又该如何是好呢?

解决

可以使用winSW这个开源项目来注册自定义服务.
https://github.com/winsw/winsw/releases
image
下载这两个文件:
WinSW-x64.exe
sample-allOptions.xml

如何使用?

zookeeper

1.把两个文件都改名为你想注册的服务名称, 比如zookeeper.xmlzookeeper.exe
然后exe文件就不用动了, 修改xml文件.

2.修改xml文件
xml文件有这么几项是必填项

<service>
  <!-- 该服务的唯一标识 -->
  <id>zookeeper</id>
  <!-- 注册为系统服务的名称 -->
  <name>zookeeper</name>
  <!-- 对服务的描述 -->
  <description>数据采集系统zookeeper</description>
  <!-- 执行程序 -->
  <executable>C:\software\zookeeper-3.4.14\bin\zkServer.cmd</executable>
  <!-- 执行参数 -->
  <arguments>C:\software\zookeeper-3.4.14\conf\zoo.cfg</arguments>
  <!-- 
  日志模式
  支持的模式:
      * append - Rust update the existing log
      * none - Do not save executable logs to the disk
      * reset - Wipe the log files on startup
      * roll - Roll logs based on size
      * roll-by-time - Roll logs based on time
      * rotate - Rotate logs based on size, (8 logs, 10MB each). This mode is deprecated, use "roll"
    默认模式: append

    官方文档看https://github.com/kohsuke/winsw/blob/master/doc/loggingAndErrorReporting.md for more details
  -->
  <logmode>rotate</logmode>
</service>
这个xml文件就是定义了该服务每次启动时,去执行哪个文件,并且参数或者包含参数的配置文件在哪里, 所以配置了执行文件路径之后,就不要动了,也不要删除,不然服务会启动失败.

3.安装服务
在管理员模式的CMD命令行中
a.执行 zookeeper.exe install安装服务
b.执行 start zookeeper.exe 开启服务
c.在控制面板->本地服务 已经能看到了,且可以右键它启动和停止,设置成自动就是开机自动启动
image
也可以在xml文件中配置好自动启动
<startmode>Automatic</startmode>

4.在注册表中查看和修改
win + r打开运行,输入regedit打开注册表编辑器
image
依次打开计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\zookeeper
找到刚才创建的zookeeper服务
image
如果你后期把zookeeper.exe移动了位置, 就需要改这个地方了

5.日志
如果服务启动失败,日志默认是在zookeeper.exe文件同级目录,
也可以在xml文件中配置指定目录
<logpath>%BASE%\logs</logpath>

kafka

1.故技重施安装kafka服务
a. 修改kafka.xml
image

<service>
  <!-- 该服务的唯一标识 -->
  <id>kafka</id>
  <!-- 注册为系统服务的名称 -->
  <name>kafka</name>
  <!-- 对服务的描述 -->
  <description>kafka</description>
  <!-- 将程序添加到系统服务 -->
  <executable>C:\software\kafka_2.12-2.4.1\bin\windows\kafka-server-start.bat</executable>
  <!-- 执行的参数 -->
  <arguments>C:\software\kafka_2.12-2.4.1\config\server.properties</arguments>
  <!-- 失败后重试 -->
  <onfailure action="restart" delay="10 sec"/>
  <!-- 日志模式 -->
  <logmode>rotate</logmode>
</service>

2.故技重施安装服务
a.执行 kafka.exe install安装服务

3.注意kafka启动要在zookeeper之后,这需要修改注册表中的开机启动程序顺序,修改这个List,在末尾加上zookeeper和kafka
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder
image
image

java程序

image

1.修改xml

<service>
  <!-- 该服务的唯一标识 -->
  <id>k2h</id>
  <!-- 注册为系统服务的名称 -->
  <name>k2h</name>
  <!-- 对服务的描述 -->
  <description>数据采集系统</description>
  <!-- 将java程序添加到系统服务 -->
  <executable>java</executable>
  <!-- 执行的参数 -->
  <arguments>-jar -Xms2048m -Xmx2048m -Dspring.config.location=C:\apps\k2t\config\application.yml "C:\apps\k2t\k2h-3.02.jar" --spring.profiles.active=prod >/dev/null</arguments>
  <!-- 日志模式 -->
  <logmode>rotate</logmode>
</service>

这里要注意,如果你的java程序有外置的配置文件,一定要在执行参数里加上, 否则会不生效.
2.安装
k2h.exe install
3.因为我的java程序是kafka的消费者,要依赖于kafka,所以也加在开机自启的List后面
image
这样就好了

测试

把kafka,zookeeper,java程序里的配置IP什么的都改好
然后重启一下win10看看效果:

标签:xml,exe,服务,启动,windows,zookeeper,kafka,开机,任意
From: https://www.cnblogs.com/qds1401744017/p/17443012.html

相关文章

  • FTP搭建及内网穿透(Windows环境)、两种(主动、被动)模式
    有两种方法一、使用IIS搭建FTP需要注意的是被动端口设置完后要重启一下【MicrosoftFTPService】服务才能生效Windows系统IIS搭建FTP服务如何配置被动端口?1、打开IIS管理器,点击左侧的服务器,进入服务器设置主页找到 FTP功能 中的 FTP防火墙支持 点击进入2、在数据通道端......
  • windows下通过net user add和powershell添加用户,sysmon仅仅采集到进程,而在windows安全
    执行操作:C:\Windows\system32>netuser/add"jack""fuckoff"命令成功完成。C:\Windows\system32>powershellWindowsPowerShell版权所有(C)MicrosoftCorporation。保留所有权利。尝试新的跨平台PowerShellhttps://aka.ms/pscore6PSC:\Windows\system32&g......
  • Windows远程命令执行——psexec、wmiexec、wmic、nc,这属于横向移动范畴,另外还有smbexe
    环境:Win10、Win7虚拟机Windows远程命令执行1、psexec.exe远程执行命令psexec\\192.168.30.128-uAdministrator-p123456789cmd.exe 这里一开始登陆的是另一个管理员账号,但是一直被拒绝访问,后来把Administrator账号取消隐藏,一下就连接上。之后看到一篇文章也有一样的情况,只有A......
  • powercat 果然windows defender实时保护就不让我下载 关闭以后才可以运行
     ......
  • 如果关闭windows屏幕广告
    windows锁屏广告怎么关?右上角的推广广告,如何关闭呢?进入设置,个性化,锁屏设置欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。文章来源:刘俊涛的博客若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)......
  • windows复制粘贴功能失效的解决方案
    解决方案:1、如果远程复制正在进行,先使用任务管理器,强制结束:将任务管理器面板切换到进程,找到rdpclip.exe,选中它,然后点击结束进程。(电脑主要依赖该进程进行粘贴) 2、键盘上按Win+R组合键,弹出“运行”窗口,输入rdpclip.exe,按回车,重新启动复制粘贴功能 3、启动成功后,就可以正常......
  • Ubuntu 20.04.2 设置程序开机自启动
    Ubuntu20.04.2设置程序开机自启动Ubuntu20.04.2设置程序开机自启动关于Jar包设置开机自启动乌班图20放置开机启动文件的目录改变了首先是进入放置起动脚本的目录cd/etc/profile.droot@dell3640:/home/uadmin/huimv.hy#cd/etc/profile.droot@dell3640:/etc/profile.d......
  • Windows 配置 Hadoop and Spark
    一JDK环境配置由于项目用的JDK17,所以单独给Hadoop配了JDK11,建议直接配置JAVA_HOME环境变量为JDK11,因为后面Spark需要用到JAVA_HOME下载JDK11链接:https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html目前Hadoop和Spark兼容JDK11和JDK8单独修改Had......
  • 解决方案 | Windows 验证账号出现 0x80190001错误解决
    一、问题描述点击windows开始→账户→更改账户设置→验证,出现下面的错误。 二、解决方法网上流行的是这个方法,https://blog.csdn.net/qq_36393978/article/details/107413791 ,但是这个其实是恢复网络刷新dns的方法,大家可试一试。 如果不行,试试下面的方法,在任务栏搜索框......
  • Windows通过使用批处理.bat脚本文件修改DNS值
    在公司内网有自己的DNS服务器,但是在使用某些软件时又经常需要特定的DNS地址,每次切换都非常麻烦,所以写了个.bat批处理脚本文件方便切换,如果是修改IP等信息做些修改后同样可以使用。@echooff:startecho1:设置DNS为手动2:设置DNS为自动set/pvar=请选择if%var%==1gotoop......