java - 如何杀死一个挂起的 Java 程序(在 Windows 中)?

标签 java powershell networking

假设在 Java 中我有一个简单的 Echo 客户端/服务器对。我启动了服务器进程,但从未真正启动过客户端进程。

我想做的是有第三个程序(称之为“Parent”),它会在闲置 30 秒后自动终止该服务器程序。

我可以使用 Powershell 来执行此操作吗?或者我需要使用 C 或其他编程吗?

最佳答案

是的,只要你有一个好的方法: 1)唯一标识服务器进程 2)判断服务器空闲

如果永远不会有两个(或更多)服务器进程实例,那么您可以通过名称来标识进程(确保您的进程具有唯一的名称!)

确定服务器空闲可能很棘手(因此实现服务器自行停止而不诉诸“父”进程的注释)。但是,如果服务器在 Activity 时是内存或 CPU 密集型的,您可以利用它来区分空闲和繁忙。您可以使用 get-process (gps) 来确定进程当前的 CPU 和内存使用情况。诀窍是如果它当前看起来空闲,就知道它已经空闲了多长时间。为了可靠地做到这一点,您需要比服务器处理请求的频率更频繁地轮询 gps。否则,您可能会在服务器繁忙之前轮询,然后服务器繁忙,然后在服务器空闲时再次轮询。但你会认为它一直闲置。

您可以通过让服务器在知道自己已空闲 30 秒后更改某些内容(例如窗口标题)来避免上述困境。 (但是如果你这样做,为什么不让服务器自行终止呢?)

一旦 PS 脚本确定服务器空闲,则 get-process -name yourServerProcess|stop-process 将停止服务器进程。指定“yourServerProcess”,末尾不带 .EXE。如果出现权限错误,请以管理员身份运行 PS。

关于java - 如何杀死一个挂起的 Java 程序(在 Windows 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687091/

相关文章:

powershell - Powershell Format-Hex不显示行尾。为什么?

java - 如何将自定义类对象注入(inject)Junit环境?

java - 具有间隔的方法的执行

java - 在 HashMap 中显示键值

powershell - Powershell文字颜色

linux - 通过多个接口(interface)发送/接收数据

Java正则表达式来标准化MAC地址

MySQL 插入脚本

ruby-on-rails - 在 Ruby 中生成随机 IP 地址的最短方法是什么?

mysql - 如何使用 MySQL 记录 Windows 7 网络流量和磁盘使用情况?