【问题标题】:Using java to get the current process owner使用java获取当前进程所有者
【发布时间】:2012-10-31 14:02:16
【问题描述】:

我想知道使用 Java 的 Unix 中当前进程的所有者。我想找到当前服务器的所有者名称。我尝试在 Runtime.getRuntime().exec() 中运行“我是谁”命令,但它没有返回任何结果。

String line = ""; 
Process p = Runtime.getRuntime().exec("who am i");
InputStream iStream = p.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(iStream);
BufferedReader bufReader = new BufferedReader(inputStreamReader);
while ((line = bufReader.readLine()) != null) {
    System.out.println("Input "+line);
}

这段代码有什么问题吗?或者我知道如何使用 Java 找到当前进程的所有者?

【问题讨论】:

  • 你需要 sudo,对吧?
  • @assylias 我认为您应该将其作为答案...

标签: java unix


【解决方案1】:

首先,我认为System.getProperty("user.name") 应该可以解决这个问题

第二件事,你的代码没有返回任何东西的原因是因为命令是whoami,没有空格,所以你的 exec 行应该是(假设你通过 cygwin 在 Windows 上运行或在基于 **nix 的系统上运行)

Process p = Runtime.getRuntime().exec("whoami");

【讨论】:

  • who am i 也可以。 man who
  • who am i 在我的系统上返回空白
  • 如果你没有who,你会读到类似bash: command not found的东西。 which who 是否也返回空白? (假设您使用的是 Unix/BSD/Mac/Linux)
猜你喜欢
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多