如何在 Java 中获取 Linux 的当前用户名
How to get current user name of Linux in Java
我有一个用 Java 编写的 Selenium 测试,它作为 Jenkins 作业运行。我需要将 chmod 设置为 777,否则它会抛出错误。但我想将 chmod 正确设置为 775 之类的东西。问题是我不知道谁是运行 Java 测试的用户。我在 Java
中有这段代码
System.out.println(Runtime.getRuntime().exec("whoami"));
which returns this: Process[pid=2116487, exitValue=0] 有人可以告诉我这是什么吗?显然它不是我可以设置为所有者或存储库组的用户。
谢谢。
您得到的不是进程“whoami”的输出,而是进程属性。尝试
System.out.println(new Printstream(Runtime.getRuntime().exec("whoami").getOutputStream()));
要获取进程的输出,您需要将 InputStream
附加到子进程的正常输出。然后,您可以通过创建 BufferedReader
来读取它。要获取进程输出的第一行(在 stdout 上),您可以使用此代码:
Process proc = Runtime.getRuntime().exec("whoami");
BufferedReader stdin = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String username = stdin.readLine();
System.out.println(username);
如果有必要,您还可以使用 proc.getErrorStream()
获取子进程 (stderr) 的错误输出的 InputStream
。
但是,如果您想获取执行 VM 的用户的用户名,还有更好的方法:
String username = System.getProperty("user.name");
System.out.println(username);
你想要这个吗?
System.getProperty("user.name")
我有一个用 Java 编写的 Selenium 测试,它作为 Jenkins 作业运行。我需要将 chmod 设置为 777,否则它会抛出错误。但我想将 chmod 正确设置为 775 之类的东西。问题是我不知道谁是运行 Java 测试的用户。我在 Java
中有这段代码System.out.println(Runtime.getRuntime().exec("whoami"));
which returns this: Process[pid=2116487, exitValue=0] 有人可以告诉我这是什么吗?显然它不是我可以设置为所有者或存储库组的用户。
谢谢。
您得到的不是进程“whoami”的输出,而是进程属性。尝试
System.out.println(new Printstream(Runtime.getRuntime().exec("whoami").getOutputStream()));
要获取进程的输出,您需要将 InputStream
附加到子进程的正常输出。然后,您可以通过创建 BufferedReader
来读取它。要获取进程输出的第一行(在 stdout 上),您可以使用此代码:
Process proc = Runtime.getRuntime().exec("whoami");
BufferedReader stdin = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String username = stdin.readLine();
System.out.println(username);
如果有必要,您还可以使用 proc.getErrorStream()
获取子进程 (stderr) 的错误输出的 InputStream
。
但是,如果您想获取执行 VM 的用户的用户名,还有更好的方法:
String username = System.getProperty("user.name");
System.out.println(username);
你想要这个吗?
System.getProperty("user.name")