디버깅할 때 종종 killall
kill 프로세스를 사용합니다. 시스템에서 동일한 이름을 가진 프로세스가 더 많이 실행될 수 있으므로 이는 실제로 나쁜 습관입니다.
일반적으로 내가 종료하려는 프로세스는 killall
시작되었을 때와 동일한 부모(또는 조부모)의 자손입니다. 동일한 터미널이나 다른 탭(Konsole)의 터미널에서 시작된 프로그램을 종료하고 싶은 경우가 많습니다.
killall
범위를 이 터미널에서 시작된 프로세스나 동일한(대) 부모의 하위 프로세스로 제한하도록 지시하는 방법(또는 다른 킬러)이 있습니까 ?
답변1
이 세션(현재 tty를 제어 터미널로 사용하는 프로세스)의 모든 프로세스를 종료하려면 다음을 수행하세요.
tty=`tty`; pkill -t "${tty#/dev/}"
아니면 더 간단합니다:
pkill -s 0
pkill(1)에 따르면:
-s, --session sid,... Only match processes whose process session ID is listed. Ses- sion ID 0 is translated into pgrep's or pkill's own session ID.
-t
및 옵션은 모두 -s
패턴 및 기타 옵션과 결합(AND)될 수 있습니다. pgrep -s0 -x foo
이 세션에서 명명된 프로세스의 foo
경우 불행하게도 그 pgrep
중 어느 것도 pkill
복잡한 - tcpdump
스타일 술어를 지원하지 않습니다.