java - 在linux中的另一个用户下运行ProcessBuilder

标签 java process debian su

我需要在 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();

谢谢。

最佳答案

已解决:

ProcessBuilder processBuilder = new ProcessBuilder(new String[] { "su", "-
s", "/bin/sh", "myuser", "-c", "java -jar myjar.jar" });,
Process p = processBuilder.start();

此代码将在用户“myuser”下启动“myjar.jar”应用程序。您可以使用unix命令“top”来确认并查看输入的用户进程列表。

关于java - 在linux中的另一个用户下运行ProcessBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574173/

相关文章:

Java:Spring Boot 类构造函数有太多 DI?

java - 使用 Firestore 集合中的图像填充 RecyclerView

java - 在 jboss 的部署目录之外部署 war

c# - 停止/启动服务或关闭远程计算机上的 sql server 进程/服务

java - Android Studio 1.1.0 您需要使用 Theme.AppCompat 主题(或后代)美眉

java - 打开一个 shell 并在 java 中与其 I/O 交互

c++ - 无法从 Qt 启动 Microsoft 管理控制台管理单元

php - 升级后的 PHP 现在 apache 不再执行 php 文件

linux - 从 Google Compute Engine 连接到 FTP 服务器时,获取 "I won' t open a connection to”

mysql - 使用模板缓存时出错 : Unable to write in the cache directory (/var/lib/phpmyadmin/tmp/twig/29)