올바르게 종료하는 것과 같은 방법으로 터미널에서 응용 프로그램을 종료하는 방법


9

일반적으로 그래픽 환경에서 응용 프로그램을 실행할 때 닫으려면 X창의 왼쪽 상단 모서리를 클릭 하거나으로 이동하십시오 File > Close.

때로는 명령 줄을 사용하여 터미널에서 ssh를 통해 원격 으로이 프로그램을 닫고 싶습니다. 이제 kill명령을 사용 하지만 응용 프로그램 자체에서 올바르게 종료하는 것과 똑같습니다.

man kill기본 신호 에서 15) SIGTERM으로 나타납니다.이 신호는 응용 프로그램에서 정리, 열린 파일 닫기, 저장하기 위해 닫으려고한다는 것을 알려줍니까?

터미널에서하고 싶다면 더 좋은 방법이 있습니까?


2
질문 주셔서 감사합니다! 나는 어느 시점에서 분명히 유용한 무언가를 배웠다.
Oliphaunt-모니카

답변:


9

응용 프로그램을 정상적으로 닫는 일반적인 방법은을 사용하는 것입니다 kill -TERM 1234. 여기서 1234창의 PID입니다. 그러나 문제는 그래픽 응용 프로그램이 신호를 수신하지 않고 X 서버 자체의 특정 신호를 수신하도록 설계되었다는 것 TERM입니다.

즉, 적절한 신호를 보내려면 통신하기 위해 사용자와 X 서버 사이에 에이전트가 필요합니다. 물론 C 프로그램을 작성할 수는 있지만 wmctrl정확히 그렇게하는 영역이 있습니다 (놀랍게도 C로 작성되지 않음).

사용법 wmctrl은 간단합니다.

wmctrl -c :SELECT: # close window that will be selected with pointer
wmctrl -c :ACTIVE: # close currently active window
wmctrl -ic <numeric id> # close window with specific id in hex

기본적으로 설치되어 있지 않으므로 sudo apt-get install wmctrl

wmctrl창을 닫는 것 이상으로 많은 용도 가 있으므로 제 답변과 Jacob Vlijm의 스크립트 사용 예를 참조하십시오.


2
여기에 추가하면 wmctrl -l모든 창이 나열되고 첫 번째 열에 숫자 ID가 16 진수로 표시됩니다. =)
Terrance 2016 년

감사합니다. 대부분의 응용 프로그램에서 잘 작동하지만 Deluge를 사용하면 옵션이 Minimize to tray on close있으며 wmctrl -c응용 프로그램 자체가 아닌 창을 닫을 것입니다. 트레이로 최소화 된 상태로 유지됩니다.
Mike

3

나는 wmctrl -xl다음과 같은 결과를 출력 할 가치가 있다고 생각합니다 .

0x03000001 -1 google-chrome.google-chrome  dcentore-pc Rybak - Google Play Music - Google Chrome
0x04600006  0 speedcrunch.Speedcrunch  dcentore-pc SpeedCrunch

(가) 어디 x창 요청 클래스를 출력 될 수 있습니다. 이것은 매번 같은 프로그램을 닫는 가장 쉬운 방법입니다. 그런 다음 창을 닫을 때 창 클래스를 제공 할 수 있습니다.

wmctrl -xc speedcrunch.Speedcrunch

이 예는 스피드 크런치를 닫습니다.

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