У меня есть одно требование, когда мне нужно запустить tomcat, nginx, kafka и т. Д. Из scala или java-программы, я могу проверить через 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"))
, но это не работает, так что, может, что-то мне поможет, пожалуйста, здесь !!!!
Основная проблема, кажется, использование sudo
. Вам нужно gksudo
.
А простой пример Scala
package com.askubuntu.users.aamir
import scala.sys.process._
object startProcess {
def main(args: Array[String]) {
Process("ls -la")!
}
}
или с sudo
- права (Вам нужно 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();
}
}
}