2017-03-21 3 views
1

두 개의 Tomcat 프로세스가 있습니다. 하나는 event-ws이고 다른 하나는 app-event-ws입니다. 가끔 쉘 스크립트에서 event-ws를 죽일해야합니다우연히 관련없는 프로세스를 포함시키지 않고 특정 프로세스를 일치시키고 종료시키는 방법은 무엇입니까?

ps -ef | grep -w event-ws | grep -v grep 

위에서 발견하고 그들 모두를 죽일 것입니다; 그 중 하나를 정확히 찾을 수있는 방법은 무엇입니까?

답변

3

pgrep/pkill이 경우 사용할 수있는 최고의 도구, 대신ps의 위치 : 누구의 실행 파일 이름

pgrep -x event-ws # match by executable filename 'event-ws'; print PID 
pkill -x event-ws # match and kill 

각 명령의 일치 과정 (들)입니다 event-ws정확히 (-x) (실행 파일이 시작될 때 디렉토리 경로 접두어가 사용되었는지 여부에 관계없이).

단, 당신의 pgrep/pkill 구현 15 자에 이름을 제한 할 수 있음 - 모두 일치하고 출력에.

pgrep 단순히 지문 정합 PID (들) (프로세스 ID (들)), pkill는 처치 반면 매칭 처리 (ES). 당신이 -l을 추가하는 경우

pgrep -f '/event-ws/' # match by part of the full command line; print PID and name 
pkill -f '/event-ws/' # match and kill 

: 대조적으로, 당신은 전체 명령 줄일부가 일치 할 필요가있는 경우


정규 표현식으로 -f 옵션을 사용하여 pgrep 명령을 사용하면 프로세스 이름 대신 일치하는 프로세스 (들)의 전체 명령 줄이 인쇄됩니다.

+1

좋아요! 도와 주셔서 감사합니다. – yyzhang14922

관련 문제