如何在 Linux Ubuntu 中通过 Java 或 Scala 程序启动 tomcat

如何在 Linux Ubuntu 中通过 Java 或 Scala 程序启动 tomcat

我有一个要求,需要从 scala 或 java 程序启动 tomcat、nginx、kafka 等,我可以通过 java 程序检查它们是否正在运行或未使用,ps-ef| grep name但如果它们未运行,我希望它们从 java 或 scala 程序自行启动,我在 tomcat 上试过这个

val pr = Runtime.getRuntime.exec(Array[String]("/home/administrator/Desktop/apache-tomcat-8.0.5/bin","-c","echo def123@| sudo -S startup.sh"))

但它不起作用,所以有什么可以帮我解决的吗!!!!

答案1

主要问题似乎在于 的使用sudo。您需要gksudo


一个简单的 Scala 示例

package com.askubuntu.users.aamir

import scala.sys.process._

object startProcess {
  def main(args: Array[String]) {
    Process("ls -la")!
  }
}

或者使用sudo-rights (你需要gksudo

package com.askubuntu.users.aamir

import scala.sys.process._

object startProcess {
  def main(args: Array[String]) {
    Process("gksudo nautilus")!
  }
}

并加入一些 Java 元素

package com.askubuntu.users.aamir

object startProcess {
  def main(args: Array[String]) {
    Runtime.getRuntime.exec(Array[String]("gksudo","nautilus"));
  }
}

下面是启动进程的 Java 方法

package com.askubuntu.users.aamir;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class startProcess {

    public static void main(String[] args) {
        BufferedReader in;
        PrintWriter out = new PrintWriter(System.out);
        try {
            Process p = Runtime.getRuntime().exec(new String[]{"/home/administrator/Desktop/apache-tomcat-8.0.5/bin","-c","echo def123@| sudo -S startup.sh"});
            in = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String text;
            while ((text = in.readLine()) != null) {
                out.println(text);
                out.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

或者

package com.askubuntu.users.aamir;

import java.io.IOException;

public class startProcess {

    public static void main(String[] args) {
        try {
            Runtime.getRuntime().exec(new String[] { "gksudo","nautilus", "/tmp" });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

相关内容