Linux: 매개변수를 기반으로 프로세스 종료

Linux: 매개변수를 기반으로 프로세스 종료

명령줄 인수를 기반으로 프로세스를 종료하는 방법은 무엇입니까? killall, pgrep및 는 pkill프로세스 이름을 기준으로만 작동하는 것으로 보입니다.

Java Virtual Machine 내에서 실행되는 여러 애플리케이션을 구별할 수 있어야 하며, java모든 애플리케이션의 프로세스 이름은 어디에 있고, 명령줄 인수를 보고 실제 애플리케이션 이름을 찾을 수 있어야 합니다.

이 작업은 수동으로 수행 ps aux | grep myapp.jar한 다음 출력에서 ​​pid를 수동으로 제거할 수 있지만 동일한 작업을 자동으로 수행하는 명령을 원합니다.

답변1

pgrep/ 깃발 pkill을 받으세요 -f. man페이지 에서 :

-f    The pattern is normally only matched against the process name.
      When -f is set, the full command line is used.

예를 들어:

$ sleep 30& sleep 60&
[1] 8007
[2] 8008

$ pkill -f 'sleep 30'
[1]  - terminated  sleep 30

$ pgrep sleep
8008

답변2

다음을 argument프로세스의 전체 명령줄을 포함해야 하는 정규식으로 바꿉니다.

kill `ps -eo pid,args --cols=10000 | awk '/argument/ && $1 != PROCINFO["pid"] { print $1 }'`

답변3

htop명령줄 인수를 사용하여 현재 실행 중인 모든 프로세스를 보고 선택한 프로세스를 종료할 수 있습니다.

답변4

pkill 등이 없으면 proc/[1-9]*/cmdline을 사용하십시오.

grep -a myapp.jar /proc/[1-9]*/cmdline|tr '\0' ' '|grep -v grep|awk -F/ '{print $3}'

관련 정보