【问题标题】:Check centos 'network' service status in java programmatically以编程方式检查 java 中的 centos 'network' 服务状态
【发布时间】:2016-06-06 09:27:02
【问题描述】:

我正在 java 中执行network 服务重启,如下所示。

String[] serviceStop = { "service","network","restart" };
Process networkProc = new ProcessBuilder(serviceStop).start();
networkProc.waitFor();
Integer returncode=networkProc.exitValue();

即使它仍在重新启动,它也会返回成功代码。 但我需要通过检查network service 状态来确保重新启动成功并在完成后返回。如何在 Java 中实现这一点?

【问题讨论】:

  • 稍后您将不得不使用另一个进程来尝试连接。
  • 是的..但是要连接什么进程以及如何检查这个特定的服务。这是个问题。

标签: java linux process centos command


【解决方案1】:

您可以使用service network status 来显示网络状态。使用循环和睡眠,您应该可以实现您想要的,但我对您的需求感到非常惊讶。

  • 您确定 exitValue 为 0 吗?
  • 您确定拥有执行此命令的所有权限吗?
  • 你看流程输出了吗? (某些进程以 0 退出但显示错误)

    Process networkProc = new ProcessBuilder(serviceStop)
                    .redirectOutput(new File("serviceRestartOuput.txt"))
                    .start();
    

您也可以使用 ifdown 和 ifup ifdown eth0 && ifup eth0 代替 service,将 eth0 替换为您的网络接口的名称。像 service network restart 一样调用流程。

【讨论】:

  • 我的问题是我正在更改 VM 的静态 IP 地址。并调用服务网络重启。有时它已经在使用中。带有成功代码。如何确保它完全重启成功?
  • 如果重启成功就可以使用网络了。因此您可以使用服务网络状态、ping 或 InetAddress.isReachable 来了解网络是否正常。有关更多信息,请参阅question。
猜你喜欢
  • 2010-09-24
  • 2012-04-10
  • 2016-11-16
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 2020-01-09
相关资源
最近更新 更多