Java 앱의 PID를 명령으로 파이프하는 방법은 무엇입니까?

Java 앱의 PID를 명령으로 파이프하는 방법은 무엇입니까?

pid를 가져와서 작동하는 명령이 있습니다.

훌륭하게 작동합니다.

lsof -p 1112| wc -l

그러나 일반적으로 사용하는 pid를 파이프하는 접근 방식을 사용하면 이것이 Java 앱이기 때문에 실패합니다.

lsof -p (ps -e | grep logstash) | wc -l

Java 앱은 ps -e에 이름으로 표시되지 않고 java로 표시되기 때문에 작동하지 않습니다. (여러 개의 Java 앱이 있기 때문에 도움이 되지 않습니다)

ps aux의 이 출력 하단에서 로그스태시 7을 볼 수 있습니다.

498       1795 16.9 50.7 551391388 12422888 ?  Sl   Dec14 1425:36 /usr/bin/java
root      1896  0.0  0.0  80900  3344 ?        Ss   Dec14   0:01 /usr/libexec/po
postfix   1901  0.0  0.0  81152  3360 ?        S    Dec14   0:00 qmgr -l -t fifo
root      1926  0.0  0.0 183032  1792 ?        Ss   Dec14   0:00 /usr/sbin/abrtd
root      1938  0.0  0.0 116880  1260 ?        Ss   Dec14   0:00 crond
root      1957  0.0  0.0  21108   492 ?        Ss   Dec14   0:00 /usr/sbin/atd
root      1992  0.0  0.0   4064   512 tty1     Ss+  Dec14   0:00 /sbin/mingetty
root      1994  0.0  0.0   4064   516 tty2     Ss+  Dec14   0:00 /sbin/mingetty
root      1996  0.0  0.0   4064   512 tty3     Ss+  Dec14   0:00 /sbin/mingetty
root      1998  0.0  0.0   4064   516 tty4     Ss+  Dec14   0:00 /sbin/mingetty
root      2000  0.0  0.0   4064   516 tty5     Ss+  Dec14   0:00 /sbin/mingetty
root      2002  0.0  0.0   4064   512 tty6     Ss+  Dec14   0:00 /sbin/mingetty
logstash 37916 10.7  2.2 4767300 553372 ?      SNsl Dec19 167:39 /usr/bin/java -
root     37972  0.0  0.0      0     0 ?        S    Dec19   1:12 [flush-253:2]
postfix  47810  0.0  0.0  80980  3384 ?        S    13:30   0:00 pickup -l -t fi
root     48006  0.0  0.0      0     0 ?        S    14:00   0:00 [flush-253:3]
root     48064  0.1  0.0 104616  4592 ?        Ss   14:04   0:00 sshd: root@pts/
root     48066  0.0  0.0 108352  1828 pts/0    Ss   14:04   0:00 -bash
root     48083  0.0  0.0 110240  1136 pts/0    R+   14:05   0:00 ps aux

logstash의 pid를 grep하는 방법은 무엇입니까?

답변1

다음과 같이 프로세스를 시작할 때 프로세스에 임의의 옵션을 전달하여 문제를 해결할 수 있습니다.

$ ls
Hello.class
$ java -Dprocess_name=Logstash_or_whatever Hello
$ ps -e | grep process_name=Logstash_or_whatever

어떻게 생각하나요? 추악하지만 실행 가능합니까?

답변2

우리는 두 가지 솔루션을 구축했습니다.

var1=`pgrep -f logstash`; ls -al /proc/$var1/fd |wc -l

또는 더 많은 해킹,

ls -al /proc/`pgrep -f logstash`/fd |wc -l

백틱 사용에 유의하세요.

관련 정보