gpt4 book ai didi

java - 锁定文件以验证服务的单次执行。有多可靠?

转载 作者:行者123 更新时间:2023-11-30 05:59:39 25 4
gpt4 key购买 nike

我正在向 UNIX(AIX) 系统部署一个小服务。我想检查启动时该服务是否没有 Activity 实例正在运行。 像这样实现该检查有多可靠?

  1. 尝试获取文件锁定(使用 FileChannel)
  2. 如果成功,保持锁定并继续执行
  3. 如果失败,则退出并拒绝运行主体

我知道像 Tanuki 包装器这样的软件,但是,我渴望一个更简单(可能不可移植)的解决方案。


编辑:关于 PIDFILE(s):如果可能的话,我想避免使用它们,因为我没有机器的管理权限,也不了解 AIX 的 shell 编程知识。

最佳答案

另一种方法是使用ServerSocket绑定(bind)到服务器上的特定端口。 ,如果端口正在使用中,那么您的服务已经在运行:

int port = 12345;

try {
java.net.ServerSocket ss = new java.net.ServerSocket(port);
} catch (java.net.BindException ex) {
System.err.println("service is already running and bound to port "+port);
System.exit(1);
}

这种方法的优点是它几乎可以在任何平台上正常工作。

关于java - 锁定文件以验证服务的单次执行。有多可靠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2774963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com