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
백틱 사용에 유의하세요.