求助:Windows PowerShell关闭会话后运行Java后台任务的命令
解决Windows PowerShell后台运行Java应用且关闭终端不终止的方法
Start-Job创建的作业依赖当前PowerShell会话,会话关闭后进程会被强制终止,所以得用脱离会话的方式运行Java程序:
方法1:用Start-Process启动独立进程
直接启动Java进程,让它完全脱离PowerShell会话,关闭终端后依然运行:
Start-Process java -ArgumentList "-jar .\app.jar" -NoNewWindow -WindowStyle Hidden
-NoNewWindow:不在新窗口中运行程序-WindowStyle Hidden:隐藏程序窗口,实现后台运行
如果需要记录输出日志,可添加重定向参数:
Start-Process java -ArgumentList "-jar .\app.jar" -NoNewWindow -WindowStyle Hidden ` -RedirectStandardOutput ".\app_stdout.log" ` -RedirectStandardError ".\app_stderr.log"
注意:如果系统PATH里没配置Java路径,要换成Java.exe的绝对路径,比如
"C:\Program Files\Java\jdk1.8.0_301\bin\java.exe"
方法2:创建Windows计划任务(更持久)
如果需要程序开机自动启动,或者完全独立于任何用户会话运行,用计划任务更可靠:
创建任务(开机自启)
schtasks /create /tn "MyJavaApp" ` /tr "C:\Program Files\Java\jdk1.8.0_301\bin\java.exe -jar C:\full\path\to\app.jar" ` /sc onstart /ru SYSTEM
/tn:指定任务名称(自定义)/tr:要执行的命令,必须用绝对路径(计划任务默认工作目录不是当前文件夹)/sc onstart:设置为开机时启动/ru SYSTEM:用系统账户运行,无需用户登录
手动启动任务
如果不需要开机自启,先创建按需执行的任务:
schtasks /create /tn "MyJavaApp" ` /tr "C:\Program Files\Java\jdk1.8.0_301\bin\java.exe -jar C:\full\path\to\app.jar" ` /sc ondemand /ru SYSTEM
然后手动启动:
schtasks /run /tn "MyJavaApp"
停止任务
需要停止程序时,执行:
schtasks /end /tn "MyJavaApp"
内容的提问来源于stack exchange,提问作者Springhills
相关产品推荐
相关产品推荐

