2012-10-31 8 views
5

Chcę poznać właściciela bieżącego procesu w systemie Unix przy użyciu języka Java. Chcę znaleźć aktualną nazwę właściciela serwera. Próbowałem z uruchomieniem polecenia "who am i" w Runtime.getRuntime(). Exec(), ale nie zwracało mi żadnych wyników.Używanie java do pobrania bieżącego właściciela procesu

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); 
} 

Czy coś jest nie tak z tym kodem lub pomysłem, jak znaleźć właściciela bieżącego procesu za pomocą Java?

+0

Potrzebujesz do tego sudo, prawda? – Shark

+1

@assylias Myślę, że powinieneś pst to jako odpowiedź ... – ppeterka

Odpowiedz

7

Pierwszą rzeczą, myślę System.getProperty("user.name") powinny pracować dla tej

Drugą rzeczą, powodem Twój kod nie jest nic powrocie dlatego, że polecenie jest whoami bez spacji więc linia Exec należy (zakładając, że są uruchomione na Windows przez cygwin lub na systemie opartym na ** nix)

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

"kto ja jestem" jest również w porządku. [man who] (http://unixhelp.ed.ac.uk/CGI/man-cgi?who+1) – ignis

+2

'who am i' zwraca pustkę w moim systemie –

+1

Jeśli nie masz" kto ", ty przeczytałbym coś w rodzaju 'bash: command not found'. Czy 'who who' zwraca również puste? (zakładając, że jesteś na Unix/BSD/Mac/Linux) – ignis

Powiązane problemy