有个项目用到了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.在服务器里的任务计划程序或者其他定时工具中创建定时任务,并且选择刚创建的脚本执行就可以了。
针对运行一段时间后出现故障的Java人脸识别程序,本文介绍了通过Tomcat服务和Windows任务计划程序实现定时重启的步骤。首先,通过PowerShell记录PID到文件,然后创建新脚本读取PID并终止进程,最后设置定时任务执行重启操作。这种方法确保了只重启特定的Java进程,而不会影响其他服务。
2363

被折叠的 条评论
为什么被折叠?



