Windows中java程序的进程守护
原理
利用powershell筛选进程,如果进程不存在,调用启动脚本启动程序。
利用任务计划程序重复周期动作。
powershell代码
$javaProcess = Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like "*java*" -and $_.CommandLine -like "*Ting3.jar*" } if (-not $javaProcess) { echo "ting3 dead..." cd "D:\st\ting3\ting3" Start-Process "D:\st\ting3\ting3\startThing3.bat" } else{ echo "ting3 running..." }
检测使用java 命令运行Ting3.jar的进程,如果不存在,则调用startTing3.bat
可能会被windows defender等软件删除。
需要确保 PowerShell 的执行策略允许运行脚本。如果遇到执行策略的问题,可以在管理员权限的 PowerShell 中执行以下命令来修改执行策略:
Set-ExecutionPolicy RemoteSigned
任务计划中的配置
注意常规里不要勾选"不管用户是否登录都要运行"和"使用最高权限运行",不然可能一运行ps1脚本就被删掉了,推测是Windows Defender删的,登录以后windows Defender已经被其他杀毒软件接管了,其他杀毒软件恢复区里没找到被删除的脚本。
另外,下次启动时间也是空的,刷新也没用,但是到时间确实也是会启动的,不知道是我这台电脑bug还是什么原因。