java - 以编程方式检查java中的centos 'network'服务状态

标签 java linux process centos command

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

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

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

最佳答案

您可以使用服务网络状态来显示网络状态。使用 loop 和 sleep 你应该可以实现你想要的,但我真的很惊讶你的需求。

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

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

除了服务,您还可以使用 ifdown 和 ifup ifdown eth0 && ifup eth0 ,将 eth0 替换为您的网络接口(interface)名称。像调用 service network restart 一样调用进程。

关于java - 以编程方式检查java中的centos 'network'服务状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35596238/

相关文章:

c - 信号量权限被拒绝

java - 为什么我们可以在Java中更改只读文件的文件属性?

java - 如何对日志上的消息进行单元测试?

java - BigDecimal 舍入问题

php - 无法使用IP地址连接数据库服务器

linux - 如何在独立cgroup中从systemd服务运行外部程序

linux - 一个进程占用多少核?

java - 如何启动控制台并从 Windows 服务中读取输出或模拟它?

c# - PostMessage WM_KEYDOWN 发送多个键?

java - JSON + Java 入门遇到问题