Cygwin 터미널에서 Windows 프로세스를 종료하는 방법은 무엇입니까?


18

Windows의 Cygwin에서 프로세스를 종료하는 방법에 관한 문제가 있습니다. 저는 Cygwin을 처음 접했습니다. 그러나 나는 단순히 죽일 수없는 작업이 있습니다. 다음 명령을 시도했습니다.

kill 4568
kill -9 4568
/bin/kill -f 4568

프로세스가 실행되는 Cygwin 터미널에서는 Ctrl + C를 사용할 수 없으므로 별도의 Cygwin 터미널에서 명령을 실행했습니다. 인터넷을 통하지 않고 검색했습니다.


시작한 프로세스는 무엇이며 어떻게 시작 했습니까?
me_and

답변:


25
ps -W | awk '/calc.exe/,NF=1' | xargs kill -f

또는

ps -W | awk '$0~v,NF=1' v=calc.exe | xargs kill -f

또는

powershell kill -n calc

당신은 사용할 수 있습니다 ps -W | awk 'BEGIN{ IGNORECASE=1;} /calc.exe/,NF=1' | xargs kill -fWindows가 대소 문자를 구분하지 않기 때문에
tricasse

7

시도해 볼 수 있습니다 :

taskkill /pid 4568

taskkill /im:{name-of-executable}유용합니다.
LawrenceC

그리고 taskkill /im <name-of-exe> /f더욱 유용하다.
Erik Kaplun

1
안타깝게도 OP는 Cygwin 명령을 요청했습니다.
Hashim

1
그것은 taskkill //im <name-of-exe>(두 개의 슬래시가 필요함)
P.Brian.Mackey

5

BASH 전용 솔루션을 원하면 다음을 시도하십시오.

    KILLPS="<My Process Name>"
    WINPS=`ps -W | grep -i $KILLPS`         # Make case-insensitive.
    PID=`echo $WINPS | cut -d' ' -f1` 
    /bin/kill -f "$PID"

참고 : / bin / kill을 사용하면 내장 쉘 강제 종료가 일반 Windows 프로세스의 PID를 종료하지 않습니다.


/ bin / kill vs shell kill에 대한 메모는 매우 유용했습니다. 감사합니다
Phil

2

( 내 답변 에서 비슷한 질문에 이르기까지 ) :

다른 Windows 프로그램은 kill 전송 신호를 다르게 처리합니다. Linux / Cygwin 프로그램과 같은 방식으로 처리하도록 설계되지 않았습니다.

Windows 프로그램을 강제 종료하는 유일한 방법은 작업 관리자 또는 프로세스 탐색기와 같은 Windows 관련 도구를 사용하는 것입니다.

즉, 아직 관리자 모드에서 Cygwin 터미널을 실행하면 운이 좋을 수 있습니다 (바로 가기를 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택하십시오).


1

여기서 고려해야 할 두 가지 :

  1. 올바른 PID (WINPID)를 가져옵니다.
  2. 올바른 도구를 사용하십시오.

올바른 WINPID를 강제 종료하려면을 사용하십시오 cat /proc/<PID>/winpid. 즉, 이것을 실행하십시오 :

ZID=$$; WINPID=$(cat /proc/${ZID}/winpid); echo "Kill WINPID: ${WINPID}"; ps; sleep 10 &

즉시 다른 작업을 수행합니다 ps.

사용할 올바른 도구는 sysinternals PsKill64.exe -t <winpid> 이며 스크립트 프로세스의 모든 하위 항목도 제거합니다 kill.


1
에 대한 투표를 받았습니다 cat /proc/${ZID}/winpid. ps -aW | grep ...적어도 Win 7 x64의 cygwin에서는 솔루션보다 빠릅니다 . 그러나 PsKill64의 경우 -t하위 프로세스 를 종료해야 하며 하위 프로세스 taskkill도 종료 할 수 있다고 생각합니다 .
244an

예, 또한 -t자손을 죽여야합니다. 정답.
not2qubit

0

당신은 당신이 사용할 수있는 Cygwin에서 bash는 과정에서 하위 프로세스있는 Windows 프로그램이있는 경우 taskkill /F /PID [the cygwin process id] /T,에서 창 PID를 얻을 필요 프로세스 트리를 죽일하기 psawk
이 Win7에 64에서 테스트됩니다.

# Simple example in cygwin:
> notepad.exe &
> pid=$!
...
> taskkill /F /PID $pid /T

물론 Window PID도 사용할 수 있습니다.


0

Git Bash에서는 다음을 사용합니다.

targetProcess='chromedriver.exe';
ps -W | grep -i ${targetProcess} | awk '{print $1}' | while read pid; do taskkill //PID ${pid}; done;

Cygwin에서는 시도하지 않았지만 Cygwin에서도 작동한다고 가정합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.