安全协议书 网站开发公司,2023年税收最新政策,最好的网络营销软件,org做后缀的网站通过bat脚本停止java进程的三个方法1.拷贝java.exe启动时复制java.exe程序修改进程映像名#xff0c;然后通过映像名杀进程。栗子过程操作拷贝程序拷贝一份java.exe程序#xff0c;重名为tstop.exe,放在PATH下。修改启动脚本echo offtitle tstoptstop -jar …/lib/laucher.ja…通过bat脚本停止java进程的三个方法1.拷贝java.exe启动时复制java.exe程序修改进程映像名然后通过映像名杀进程。栗子过程操作拷贝程序拷贝一份java.exe程序重名为tstop.exe,放在PATH下。修改启动脚本echo offtitle tstoptstop -jar …/lib/laucher.jar … …/lib/*.jar,…/conf,执行停止命令C:\Users\alvintasklist | findstr tstoptstop.exe 8520 Console 1 42,436 KC:\Users\alvintaskkill /f /im tstop.exe成功: 已终止进程 “tstop.exe”其 PID 为 8520。优点 操作简单可靠缺点 需要给每个java程序拷贝一份java.exe映像名不能重复。2.通过端口杀进程通过端口找到PID然后杀掉进程。栗子一个完整的脚本echo offrem 设置监听的端口号set port6200echo port : %port%for /f usebackq tokens1-5 %%a in (netstat -ano ^| findstr %port%) do (if [%%d] EQU [LISTENING] (set pid%%e))for /f usebackq tokens1-5 %%a in (tasklist ^| findstr %pid%) do (set image_name%%a)echo now will kill process : pid %pid%, image_name %image_name%pauserem 根据进程IDkill进程taskkill /f /pid %pid%pause优点 相对于第一种方案不用有额外的操作拷贝java.exe缺点 脚本相对复杂(主要是不熟悉batch脚本语法)问题分析启动java程序后执行命令netstat -ano | findstr portC:\Users\alvinnetstat -ano | findstr 6200TCP 0.0.0.0:6200 0.0.0.0:0 LISTENING 10332TCP [::]:6200 [::]:0 LISTENING 10332当执行telnet localhost port后再执行命令netstat -ano | findstr portC:\Users\alvinnetstat -ano | findstr 6200TCP 0.0.0.0:6200 0.0.0.0:0 LISTENING 10332TCP [::]:6200 [::]:0 LISTENING 10332TCP [::1]:62644 [::1]:6200 TIME_WAIT 0所以脚本里面需要判断[%%d] EQU [LISTENING]这句3.通过jps命令jps命令简介jps的英文名称是JVM Process Status Tool,功能和ps命令类似。可以列出正在运行的虚拟机进程、显示虚拟机执行主类(main()函数所在的类)的名称、这些进程的本地虚拟机的唯一ID(LVMID, Local Virtual Machine Identifier,LVMID和PID是一致的)。选项作用-q只输出LVMID(PID)-m输出虚拟机进程启动时传递给主类main()函数的参数-l输出主类的全名如果进程执行时是Jar包输出Jar路径-v输出虚拟机进程启动时JVM参数栗子过程操作启动程序通过启动脚本启动程序echo offtitle tstoptstop -jar …/lib/laucher.jar … …/lib/*.jar,…/conf,找到PIDC:\Users\alvinjps -l5084 …/lib/ocean-laucher-1.0.5.6.jar46969864 sun.tools.jps.Jps参照栗子2遍历jps -l输出找到PID 5084通过PID杀掉进程 taskkill /f /pid 5084优点 jps命令相对比netstat -ano语法清晰缺点 java程序需要保证Jar包名(…/lib/laucher-1.0.5.6.jar)不同相对拷贝java.exe要好一些