Bash 스크립트는 특정 매개변수가 있는 프로세스를 어떻게 찾아서 종료합니까?

Bash 스크립트는 특정 매개변수가 있는 프로세스를 어떻게 찾아서 종료합니까?

ssh-D 매개변수 (로컬 프록시 설정) 를 사용하여 실행되는 인스턴스를 종료하는 스크립트를 원합니다 .

ps -A | grep -i ssh-D가 있는 인스턴스와 모든 인스턴스를 수동으로 찾습니다 kill -9 {id}.

하지만 bash 스크립트 형식은 어떤 모습일까요?

(저는 Mac OS X를 사용하고 있지만 필요한 명령어는 모두 설치하겠습니다 port)

답변1

실행하여 pgrep -f "ssh.*-D"올바른 프로세스 ID가 반환되는지 확인하세요. 그렇다면 동일한 옵션과 모드 pgrep로 변경하고 유지하십시오.pkill

kill -9또한 프로그램이 SIGKILL을 포착하여 종료하기 전에 자체적으로 정리할 수 없으므로 꼭 필요한 경우가 아니면 SIGKILL로도 사용해서는 안 됩니다 . 나는 kill -9첫 번째 시도 이후에만 그것을 사용합니다 -1 -2.-3

답변2

반품,

kill `pgrep -f "ssh.*-D"`

답변3

proc 파일 시스템을 사용하여 정보를 수집할 수 있습니다. 예를 들어:

for proc in $(grep -irl "ssh.*-D" /proc/*/cmdline | grep -v "self"); do if [ -f $proc ]; then cat $proc && echo ""; fi; done

완벽하지는 않습니다. 보다 고유한 정규식이 필요하지만(특히 프로세스를 종료하는 경우) echo $proc | awk -F'/' '{ print $3 }'프로세스의 PID가 표시됩니다.

관련 정보