Linux : 인수를 기반으로 프로세스 종료


54

명령 줄 인수를 기반으로 프로세스를 종료하려면 어떻게해야합니까? killall, pgreppkill프로세스 이름을 기준으로 만 작동하는 것.

Java 가상 머신 내에서 실행되는 여러 애플리케이션을 구별 할 수 있으려면 java이 프로세스가 필요합니다. 모든 애플리케이션의 프로세스 이름과 명령 행 인수를 보면 실제 애플리케이션 이름을 찾을 수 있습니다.

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

답변:


69

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

+1이지만 내 bash 4.1.5 는 앰퍼샌드 다음에 콜론에서 작동하지 않습니다 (예제 첫 번째 줄에서와 같이) ... bash: syntax error near unexpected token ';'... 앰퍼샌드 다음에 ... 가있을 때 case 문 에서 작동 합니다 ;;... 다른 쉘 (?)을 사용하고 있습니다
Peter.O

@ jw013 실제로 실제로 zsh사용했습니다.이 구문을 지원합니다. 그것을 밖으로
두어도

@MichaelMrozek ok nvm then :) unix.SE가 zsh다른 곳보다 사용자의 비율이 더 높은지 궁금합니다 zsh. 여기 에서만 사용자 를 찾는 것 같습니다 .
jw013

4

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


4

argument프로세스의 전체 명령 행을 훨씬 많이 사용해야하는 정규식으로 아래를 바꾸 십시오.

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

0

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

grep -a myapp.jar /proc/[1-9]*/cmdline|tr '\0' ' '|grep -v grep|awk -F/ '{print $3}'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.