Commons Daemon 之 procrun
刘兴修
2023-12-01
Procrun是一套让Java应用程序运行在WIN#@下更容易的库和应用程序。
Procrun服务应用程序
Prunsrv一个让应用程序作为服务运行的服务程序,它能转换任一应用程序作为服务运行。
Procrun监视器应用程序
Prunmgr是一个可视化应用程序,用来监视和配置procrun服务。
可用的命令行选项:
//ES// 编辑服务的配置 这是一个默认的操作. 如果没有提供选项,可执行文件被命名为 服务名称W.exe 来调用
//MS// 服务监视器 把图标放在系统托盘中
命令行参数
每一个命令行指令的格式为 //XX//服务名
可用的命令行选项为:
//TS// 运行服务为一个控制台应用程序,这是默认的操作。可执行文件被命名为 服务名称W.exe 来调用
//RS// 运行服务 仅从服务管理器中调用
//SS// 停止服务
//US// 更新服务参数
//IS// 安装服务
//DS// 删除服务,如果正在运行会停止它
命令行参数
每一个命令行参数的前缀为 -- 。如果命令行前缀为 ++ ,那么参数会被附加在已经存在的选项后面。如果提供了相同名称的环境变量作为命令行参数,但是前缀为PR_,则具有优先权。例如:
set PR_CLASSPATH=xx.jar
等同于使用
--Classpath=xx.jar
作为命令行参数。
参数名称 默认 描述
--Description 服务名称的描述 (最大1024字符)
--DisplayName 服务名称 显示的服务名称
--Install procrun.exe //RS//ServiceName 安装镜像
--Startup 人工 服务启动模式,自动或者人工
--Type 服务 类型可以是交互式的桌面程序。使用和这个选项仅限于本地系统帐号
--DependsOn 列出服务的依赖关系。依赖的服务使用 # 或者 ; 字符分割
--Environment 列出对服务提供的环境变量,格式为 key=value 。使用 # 或者 ; 字符分割
--User 运行程序使用的的用户帐号。它仅用来StartMode模式的java或者exe,让程序作为服务运行在没有作为服务帐号的权限下运行。
--Password --User 指定的帐号的口令
--ServiceUser 指定服务运行的帐号名称。格式为 DomainName\UserName 。服务进程以这个帐号登录,如果帐号属于内建的域,可以使用 .\UserName 的格式
--ServicePassword 通过 --ServiceUser 指定的帐号的口令
--JavaHome JAVA_HOME 设定一个和JAVA_HOME环境变量不同的 JAVA_HOME
--Jvm 自动 使用自动或者指定全路径的jvm.dll 。你可以使用环境变量
--JvmOptions -Xrs 以 -D 或者 -X 格式列出传递给JVM的参数。这些选项使用 # 或者 ; 字符分割。如果你需要嵌入 # 或者 ; 字符,请使用单引号把它括起来。
--Classpath 设置java类路径
--JvmMs 初始内存池,单位 MB
--JvmMx 最大内存池,单位 MB
--JvmSs 线程堆栈,单位 KB
--StartImage 将要启动的可执行程序
--StartPath 启动程序工作路径
--StartClass 用来启动的类
--StartParams 列出传递给 StartImage 或者 StartClass 的参数。参数使用 # 或者 ; 分割。
--StartMethod Main 如果使用了不是main的方法名称
--StartMode executable 可以是一个 jvm java或者exe程序
--StopImage 可执行程序用来发出停止服务的信号
--StopPath 停止程序的工作路径
--StopClass 停止服务的类
--StopParams 列出传递给 StopImage 或者 StopClass 的参数。参数使用 # 或者 ; 分割。
--StopMethod Main 如果使用了不是main的方法名称
--StopMode executable 可以是一个 jvm java或者exe程序
--StopTimeout No Timeout 定义一个时长,单位秒,procrun等待服务优雅地退出
--LogPath working path 日志路径
--LogPrefix jakarta_service 定义服务日志文件名
--LogLevel INFO 定义日志级别error 、 info 、 warn 、 debug
--StdOutput 重定向的stdout文件名称
--StdError 重定向的stderr文件名称
安装服务
你需要使用 //IS// 参数
安装名为 'TestService'的服务
prunsrv //IS//TestService --DisplayName="Test Service" \--Install=prunsrv.exe --Jvm=auto --StartMode=jvm --StopMode=jvm \--StartClass=org.apache.SomeStartClass --StartParams=arg1;arg2;arg3 \--StopClass=org.apache.SomeStopClass --StopParams=arg1#arg2 \
更新服务
你需要使用 //US// 参数
更新名为 'TestService'的服务
prunsrv //US//TestService --Description="Some Dummy Test Service" \--Startup=auto --Classpath=%CLASSPATH%;test.jar
移除服务
你需要使用 //DS// 参数。如果服务正在运行,它会停止它,然后删除。
移除名为 'TestService' 的服务
prunsrv //DS//TestService
调试服务
运行服务为控制台模式,你需要使用 //TS// 参数。服务可以使用CTRL+C or CTRL+BREAK中断。如果你把prunsrv.exe改名为testservice.exe,你仅需要执行the testservice.exe,这个命令模式被默认执行。
在控制台模式运行名为 'TestService'的服务
prunsrv //TS//TestService [additional arguments]