특정 X 창을 죽이는 방법


9

에서 생성 한 ID wmctrl -l가 있으면 창 ID에 연결된 프로세스를 종료 할 수 있기를 원합니다.

어떻게 하시겠습니까? '

답변:


10

Florian Diesch와 Serg의 다른 답변에서 설명한 PID를 나열하는 것 외에도 -ic옵션을 사용 하여 창을 직접 닫을 수 있습니다.

$ wmctrl -ic 0x02e00085

3
프로세스가 멈 추면 창을 닫은 것을 알 수 없습니다. 창이 사라지지만 프로세스는 여전히 존재하며 CPU 및 RAM을 사용할 수 있습니다.
kasperd

9

wmctrl -lpPID 를 사용 하는 경우 세 번째 열에 있습니다.

주어진 창 ID에 대해 사용할 수 있습니다

kill $(wmctrl -lp | awk '/^WID/ {print $3}')

(WID를 창 ID로 바꾸십시오)


어쩌면 awk 대신 청소기를 사용하면col3 됩니다.
Pablo Bianchi

8

wmctrl실제로 -pPID를 나열하는 다른 플래그 가 있습니다.

bash-4.3$ wmctrl -lp
0x0380000a  0 4410   eagle Desktop
0x04800006  0 4275   eagle XdndCollectionWindowImp
0x04800009  0 4275   eagle unity-launcher
0x0480000c  0 4275   eagle unity-panel
0x0480000f  0 4275   eagle unity-dash
0x04800010  0 4275   eagle Hud

이 사실을 알고 나면 해당 창의 PID를 추출하여 전달하는 간단한 연습입니다. kill

wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill

6

을 사용할 수도 있습니다 xkill -id [id]. xkill의 유틸리티는 다른 답변에서 다르게 작동합니다 - 대신 창을 닫거나 직접 프로세스를 죽이는 것보다,이 창을 만든 클라이언트의 연결을 해제하기 위해 X 서버에 지시합니다. 이는 일반적으로 원격 프로세스에서도 프로세스를 종료시키는 효과가 있습니다.

각 접근 방식의 장단점 :

  • wmctrl -c창 관리자의 닫기 단추를 직접 클릭 한 것처럼 창을 "정상적으로"닫습니다. 이로 인해 프로세스가 종료되지 않고 응용 프로그램에서 창을 닫지 않거나 고정 된 경우 창을 닫지 않을 수도 있습니다.

  • wmctrl -lpwith with pid를 사용하면 kill프로세스가 종료되지만 프로세스가 다른 시스템에서 실행중인 경우 추가 작업이 필요하거나 전혀 작동하지 않을 수 있습니다.

  • xkillX 서버 충돌 또는 네트워크 연결 손실로부터 복구 할 수 있도록 설계된 경우 프로세스를 종료하지 않을 수 있지만 이러한 상황에서는 대부분의 응용 프로그램이 충돌합니다. 어쨌든 창문은 사라질 것입니다. 그리고 원격 프로세스와 로컬 프로세스는 동일하게 처리됩니다.


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