通过pid重启某个cmd或者bat脚本文件

针对运行一段时间后出现故障的Java人脸识别程序,本文介绍了通过Tomcat服务和Windows任务计划程序实现定时重启的步骤。首先,通过PowerShell记录PID到文件,然后创建新脚本读取PID并终止进程,最后设置定时任务执行重启操作。这种方法确保了只重启特定的Java进程,而不会影响其他服务。

        有个项目用到了java写的人脸传输等控制程序,服务用的是tomcat。运行起来没什么问题,但是运行一两个月左右就会出bug,控制面板看着执行都一切正常,但是人脸传输就不执行。奈何我个人java技术不熟,只能在运维端考虑处理方案,既然运行起来没问题那就定时重启好了。

1.第一步就是修改原有执行文件,因为所有的cmd脚本都是使用cmd.exe 我们不能直接taskkill cmd.exe 否则会中止服务器上所有在执行的cmd脚本。所以我们要记录一下pid,通过pid的方式精确的重启某个进程。

原来是通过bat文件执行java

java -jar visitorCentralServiceControl-1.0-SNAPSHOT.jar


在这行代码之前加入

powershell "Get-WmiObject win32_process -filter processid=$pid | ForEach-Object{$_.parentprocessid;}" >> pid.txt

这样的话在执行bat文件的时候就会先创建一个pid.txt 并把这个程序的pid写入进去

2.拿到运行的pid之后就可以进行第二步了,创建一下新的脚本文件,读取出pid.txt中的pid,终止之后并重新启动

set /P var=<pid.txt
echo %var%
rem 终止程序
taskkill /pid %var%
del pid.txt
rem 等待
CHOICE /T 1 /C ync /CS /D y /n
rem 重启
start run.bat

3.在服务器里的任务计划程序或者其他定时工具中创建定时任务,并且选择刚创建的脚本执行就可以了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值