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]
 类似资料: