터미널을 통해 GUI 응용 프로그램을 소프트 킬하는 방법은 무엇입니까?


22

응용 프로그램 창에 그래픽으로 액세스하지 않고 " 지금 종료하십시오 "라는 방식으로 GUI 응용 프로그램을 닫는 방법이 있습니까?

예를 들어, Gnome / X 디스플레이가 검은 색으로 충돌하는 경우, tty2로 전환하고 firefox와 같은 응용 프로그램을 구성 등을 저장할 수있는 방식으로 닫고 싶습니다.

답변:


19

일반적으로 SIGHUP을 사용하여 (그래픽 인터페이스 유무에 관계없이) 응용 프로그램을 "친숙하게"닫을 수 있습니다.

kill -HUP <application_pid>

편집 : 다른 정보 추가

SIGHUP이 처리되는 방식은 응용 프로그램에 따라 다르므로 Dave가 지적한 것처럼이 신호가 마스킹되거나 처리 될 수 있습니다. 그러나 모든 대화식 응용 프로그램은 SIGHUP으로 정상적으로 종료됩니다.

다른 한편으로, 나는 보통이 스키마를 따른다는 것을 인정해야합니다.

kill -HUP <application_pid>
# check if application is still running
kill -INT <application_pid>
# check if application is still running
kill -KILL <application_pid>

분명히 마지막 명령은 "친절하지"않다.


3
응용 프로그램의 PID를 모르는 경우 pkill대신 실행 파일 이름을 지정하는 데 사용할 수 있습니다 . 예를 들면 :pkill -HUP firefox-bin
갈렙

@Dave 역시 : 흥미 롭습니다. TERM-> INT-> HUP (노년기)와 비슷하지만 되 돌린 순서를 나타내는 이 관련 항목 을 찾았습니다 . KILL은 친숙하지 않은 것 같아서 HUP-> INT-> TERM을 염두에 두어야 할 것입니다. 모두 감사합니다.
jfk

@Caleb, 같은 이름을 가진 여러 프로세스가있는 곳에 조심 pkill하십시오. 모두 죽일 것입니다. 예를 들어, 몇 가지 백그라운드 프로세스를 만들기 위해 이것을 몇 번 실행하십시오 sed "s/Woo/woo/" < /dev/urandom >> /dev/null &. 그런 다음 pkill -HUP sed. 당신은 죽일 모든 당신이 시작 나오지도의 경우 플러스 유용한 일을하는 다른 인스턴스를.
ahcox

@Caleb 게다가, pkill당신이 경우 예 : 또한 당신이 기대하지 않는 일부 응용 프로그램 죽일 것이다 chromium실행, 그리고라는 프로그램을 죽이고 싶어 rom, pkill즐겁게 촬영합니다 chromium아래로. killall정확한 이름과 만 일치하는 더 나은 사용법 . (Solaris에서는 문자 그대로 모든 프로세스를 종료합니다 ).
Ruslan

@Ruslan 또는 pkill -x부분 일치 대신 정확한 일치를 얻기 위해 사용하십시오 . 개인적으로 부분 일치를 사용하여 입력 내용을 저장하지만 도구의 기능을 알아야합니다. 예, 기본적으로 부분 문자열과 일치합니다. 또 다른 유용한 옵션은 -fjust 대신 전체 명령 줄과 일치시키는 것입니다 $0.
Caleb

5

시도해 볼 수 있습니다.

kill -TERM <pid>

또는

kill -TERM `pidof <application_name>`

적어도 일부 시스템에서는 시스템이 종료 될 때 모든 프로세스가 KILL (9) 신호를 보내기 전에 TERM (15) 신호를 보냅니다. HUP는 종종 응용 프로그램이 구성을 다시로드하게하지만 프로세스마다 다를 수 있습니다.


2

응용 프로그램에게 구성을 종료하고 저장하도록 지시하는 일반적인 방법은 없습니다. dcop kfoo MainApplication-Interface quitKDE 3 어플리케이션 과 같은 특정 프레임 워크를 사용하여 어플리케이션에 알리는 방법이있을 수 있습니다 . 응용 프로그램에서 확인을 요청하는 대화 상자가 표시 될 수 있습니다.

X 디스플레이를 사용할 수 없게되면 X 서버를 종료하십시오. Ctrl+ Alt+를 누릅니다 BackSpace. 그래도 작동하지 않으면로 X 서버 프로세스를 종료하십시오 sudo pkill -x Xorg. X 서버가 죽으면 모든 X 응용 프로그램에 통보되고 정상적으로 종료하려고 시도합니다 (모든 것을 저장할 것이라는 보장은 없지만 최선의 선택입니다).


앱이 알림을 받거나 죽일 지 몰랐습니다. Fedora에서 키 콤보가 기본적으로 활성화되어 있지 않습니다.
jfk

1

@andcoz의 대답과 유사하게 응용 프로그램의 PID를 모르는 경우 (나는 마음으로 알지 못한다고 가정합니다) 다음을 시도하십시오.

kill -HUP `pidof [application_name]`

2
한 걸음 더듬고 시도해보십시오 pkill -HUP [application_name]:)
Caleb

방금 pkill과 pgrep을 배웠다 : D
jfk

1

고려해야 할 다른 두 가지 명령은 wmctrl -cxdotool windowkill입니다. 패치에 windowkill관심이 있을지 모르겠지만 정확히 무엇을 했는지 잘 모르겠습니다 windowdelete.

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