“ ps -ef | grep java” โดยใช้โปรแกรม java [ปิด]


0

ฉันพยายามรันps -ef | grep javaผ่านโปรแกรมจาวา นี่คือรหัสของฉัน -

//  String sudoScript = "sh -c \"ps -ef | grep java\"";
    String sudoScript = "ps -ef | grep java";
    try {
        System.out.println("command=" + sudoScript);
        Process p1 = Runtime.getRuntime().exec(sudoScript);
        System.out.println("exit code: "+p1.waitFor());
        FileInputStream fis1 = (FileInputStream) p1.getErrorStream();
        int content1;
        while ((content1 = fis1.read()) != -1) {
            // convert to char and display it
            System.out.print((char) content1);
        }
        BufferedReader stdInput1 = new BufferedReader(
                new InputStreamReader(p1.getInputStream()));
        while ((sudoScript = stdInput1.readLine()) != null) {
            System.out.println(sudoScript);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

นี่คือผลลัพธ์ที่ฉันได้รับเมื่อฉันรันคำสั่งเป็นps -ef | grep java-

command=ps -ef | grep java
exit code: 1
ERROR: Garbage option.
********* simple selection *********  ********* selection by list *********
-A all processes                      -C by command name
-N negate selection                   -G by real group ID (supports names)
-a all w/ tty except session leaders  -U by real user ID (supports names)
-d all except session leaders         -g by session OR by effective group name
-e all processes                      -p by process ID
T  all processes on this terminal     -s processes in the sessions given
a  all w/ tty, including other users  -t by tty
g  OBSOLETE -- DO NOT USE             -u by effective user ID (supports names)
r  only running processes             U  processes for specified users
x  processes w/o controlling ttys     t  by tty
*********** output format **********  *********** long options ***********
-o,o user-defined  -f full            --Group --User --pid --cols --ppid
-j,j job control   s  signal          --group --user --sid --rows --info
-O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
-l,l long          u  user-oriented   --sort --tty --forest --version
-F   extra full    X  registers       --heading --no-heading --context
                    ********* misc options *********
-V,V  show version      L  list format codes  f  ASCII art forest
-m,m,-L,-T,H  threads   S  children in sum    -y change -l format
-M,Z  security data     c  true command name  -c scheduling class
-w,w  wide output       n  numeric WCHAN,UID  -H process hierarchy

sh -c "ps -ef | grep java"ฉันพยายามใช้ แต่ไม่โชคดี มีผลลัพธ์ต่อไปนี้ -

command=sh -c "ps -ef | grep java"
exit code: 1
-ef: -c: line 0: unexpected EOF while looking for matching `"'
-ef: -c: line 1: syntax error: unexpected end of file

ฉันจะเอาชนะสิ่งนี้ได้อย่างไร


1
ในกรณีที่คุณยังไม่ได้อ่านในศูนย์ช่วยเหลือ - คำถามเกี่ยวกับการเขียนโปรแกรมถือว่าเป็นหัวข้อที่นี่
slhck

@slhck ตกลง จะไม่เกิดขึ้นอีก ครั้งล่าสุดที่ฉันถามคำถามที่คล้ายกันใน Stackoverflow ฉันได้รับคำสั่งให้ถามที่นี่แม้ว่า .. คำถามคือ - superuser.com/questions/633611/…
AlwaysALearner

อันนี้เกี่ยวกับการเขียนโปรแกรม - "วิธีทำให้งานนี้เป็นจาวา"; อันนั้นเกี่ยวกับ command-line - "วิธีการทำให้ sudo ทำงานโดยไม่มี tty" มันเป็นเส้นบาง ๆ เมื่อเราผสมการเขียนโปรแกรมและคำสั่งภายนอก :) แต่แต่ละไซต์ก็ยังคงให้ความสำคัญกับมันหวังว่าคุณจะได้เรียนรู้ถึงความแตกต่างในไม่ช้า ^ _ ^
msb

คำตอบ:


1

พบมัน! ทำงานให้ฉัน

try {
    Process p1 = Runtime.getRuntime().exec(new String[] { "ps", "-ef" });
    InputStream input = p1.getInputStream();
    Process p2 = Runtime.getRuntime().exec(new String[] { "grep", "java"});
    OutputStream output = p2.getOutputStream();
    IOUtils.copy(input, output);
    output.close(); // signals grep to finish
    List<String> result = IOUtils.readLines(p2.getInputStream());
    System.out.println(result);
} catch (Exception e) {
    e.printStackTrace();
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.