我的机器上正在运行许多Java进程。我需要跟踪每个进程重新启动多少次。
例如:让我们考虑两个java进程进程1-重新启动5次。进程2-重新启动2次。
我能够获取正在运行的进程的PID,java命令。但是一旦流程重新启动,我将无法区分。因为PID重新启动后发生了变化。我也不能考虑使用Java命令,因为同一应用程序的两个实例具有相同的命令。
那么跟踪Java进程重启的其他方法还有哪些?
您希望您的进程在重启后保持相同的身份。理想情况下,您将有一个参数,系统属性或环境变量来告诉进程其身份。
正如您在问题中指出的那样,此身份不能在命令行上传递。因此,该过程必须通过获取专有资源来“查找”其身份。
此资源可以是实现锁的共享系统,但可能很复杂。
作为专有资源,我们有网络套接字。因此,您可以使过程在唯一的目标中人为地打开套接字以使其获得标识。
您可以使用https://stackoverflow.com/a/116113/2242270中的代码来打开一定范围内的插座。然后,该进程的标识是可以打开的端口。