这是情况。我在共享帐户中有一个jython 2.1脚本,需要知道谁在调用它。在bash中,我可以简单地使用$(who -m),它会给我正确的用户名。
通过“共享帐户”,我的意思是我以自己的身份登录,然后使用$(sudo su - shared_account)来访问共享帐户。
我无法在java(或jython)中找到任何会给我类似结果的东西。即使试图调用Runtime.getRuntime()。exec(“who -m”)也不会做任何事情。当我尝试从exec返回的进程中读取InputStream时,该流为空。
答案 0 :(得分:3)
要让流程所有者执行此操作:
System.getProperty("user.name");
getRunTime()。exec()的语法很棘手。
Runtime.getRuntime().exec(new String[] {"/path/to/who", "-m"});
答案 1 :(得分:1)
我想出了一个选项,尽管我并不喜欢它:
将此标志添加到java调用:
-Duser.name="$(who -m | awk '{print $1}')"
然后使用以下命令访问用户名
System.getProperty('user.name')
答案 2 :(得分:0)
你可以使用它。
System.out.println( System.getProperties().getProperty("user.name"));