我需要在Debian系统下运行另一个java应用程序,但我需要在另一个用户下运行它。主java应用程序在root下运行。 现在我用它来启动另一个java应用程序,但我需要以另一个用户的身份运行所有这些,是否有可能?
ProcessBuilder processBuilder = new ProcessBuilder(new String[]{"java", "-Xms256M", "-Xmx" + DataManager.getMaxMemory(server) + "M", "-XX:MaxPermSize=256M", "-jar", "/home/apps/jar/" + DataManager.getJar(server), "nogui"});
File folder = new File("/home/apps/servers/" + server + "/");
processBuilder.directory(folder);
Process p = processBuilder.start();
感谢。
答案 0 :(得分:0)
解决:
ProcessBuilder processBuilder = new ProcessBuilder(new String[] { "su", "-
s", "/bin/sh", "myuser", "-c", "java -jar myjar.jar" });,
Process p = processBuilder.start();
此代码将启动" myjar.jar"在用户" myuser"下的应用程序。您可以使用unix命令" top"确认并查看输入的用户进程列表。