我很想为此获得一个跨平台的解决方案,但即使它只是 unix,也可以。
简单的解决方案是从 shell(伪代码)执行此操作(如果 ps -aux | grep myJar | print {awk 2}.contains myPID,请不要运行 myProgram。
现在不幸的是,我们的 linux 团队不希望这样的脚本在生产中运行,因为它可能(诚然)具有不良行为。
所以我需要的是能够运行一个文件,并在它运行时查看是否有另一个程序正在运行。如果程序已经在运行并且低于该时间限制,它应该阻止程序运行。
一个例子:
Myprog.jar -- 超时 5 分钟
Myprog.jar 位于每 4 分钟调用一次的 cron 中,
第一次调用它启动,第二次调用它仍在运行,但是由于它没有超过超时,所以很好。
如果在第三次检查通过时(在执行 8 分钟时)它仍在运行,它会被杀死,然后它的进程会被自己替换。
如果有人可以帮助我了解如何执行此操作(我们一直在尝试设置锁定文件,但成功有限)
谢谢!