에서 생성 한 ID wmctrl -l
가 있으면 창 ID에 연결된 프로세스를 종료 할 수 있기를 원합니다.
어떻게 하시겠습니까? '
에서 생성 한 ID wmctrl -l
가 있으면 창 ID에 연결된 프로세스를 종료 할 수 있기를 원합니다.
어떻게 하시겠습니까? '
답변:
wmctrl -lp
PID 를 사용 하는 경우 세 번째 열에 있습니다.
주어진 창 ID에 대해 사용할 수 있습니다
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(WID를 창 ID로 바꾸십시오)
col3
됩니다.
wmctrl
실제로 -p
PID를 나열하는 다른 플래그 가 있습니다.
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
을 사용할 수도 있습니다 xkill -id [id]
. xkill의 유틸리티는 다른 답변에서 다르게 작동합니다 - 대신 창을 닫거나 직접 프로세스를 죽이는 것보다,이 창을 만든 클라이언트의 연결을 해제하기 위해 X 서버에 지시합니다. 이는 일반적으로 원격 프로세스에서도 프로세스를 종료시키는 효과가 있습니다.
각 접근 방식의 장단점 :
wmctrl -c
창 관리자의 닫기 단추를 직접 클릭 한 것처럼 창을 "정상적으로"닫습니다. 이로 인해 프로세스가 종료되지 않고 응용 프로그램에서 창을 닫지 않거나 고정 된 경우 창을 닫지 않을 수도 있습니다.
wmctrl -lp
with with pid를 사용하면 kill
프로세스가 종료되지만 프로세스가 다른 시스템에서 실행중인 경우 추가 작업이 필요하거나 전혀 작동하지 않을 수 있습니다.
xkill
X 서버 충돌 또는 네트워크 연결 손실로부터 복구 할 수 있도록 설계된 경우 프로세스를 종료하지 않을 수 있지만 이러한 상황에서는 대부분의 응용 프로그램이 충돌합니다. 어쨌든 창문은 사라질 것입니다. 그리고 원격 프로세스와 로컬 프로세스는 동일하게 처리됩니다.
사용하십시오 xkill
. 그냥 입력 xkill
터미널과 필요한 창을 클릭합니다.
엑스 킬