2012-07-21 2 views
3

통해하지 빈 리눅스 캐시가 내 코드입니다 :수 여기에 확인 자바

String[] commands = {"sync && echo 3 > /proc/sys/vm/drop_caches"}; 

Process pr = Runtime.getRuntime().exec(commands); 
pr.waitFor(); 

내가 얻을 :

Exception in thread "main" java.io.IOException: Cannot run program "sync && echo 3 > /proc/sys/vm/drop_caches": error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 
    at java.lang.Runtime.exec(Runtime.java:615) 
    at java.lang.Runtime.exec(Runtime.java:483) 
    at MyTest.main(MyTest.java:896) 
Caused by: java.io.IOException: error=2, No such file or directory 
    at java.lang.UNIXProcess.forkAndExec(Native Method) 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:135) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:130) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021) 

내가 명령 줄에서 같은 문자열을 붙여 복사 내가 작품을 잘 생각합니다.

무엇이 문제입니까? 나는 우분투 11.10을 사용하고있다. 감사합니다

답변

4

글쎄, 당신의 명령은 셸의 기능 (& & 및> 리다이렉션)을 사용하고 있기 때문에 쉘에서 해당 명령을 실행해야합니다. 즉, 당신은 그것의 그 명령으로

String[] commands = {"/bin/sh", "-c" , "sync && echo 3 > /proc/sys/vm/drop_caches"}; 
+0

감사이를 이용하여 당신이 할 수있는

/bin/sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" 

를 실행해야합니다! – Alex