리눅스 : 명령 줄로 프로그램을 닫으십시오.


21

일부 응용 프로그램은 하나의 실행중인 인스턴스 만 허용합니다 (같은 작업 공간을 사용하려는 경우 일식과 같은). 따라서 다른 위치에서 로그인하면 이전에 다른 위치에서 로그인했을 때 열려 있던 응용 프로그램을 종료 / 닫아야합니다.

나는 항상 kill 명령을 사용하여 실행중인 프로세스를 종료합니다. 그러나 프로세스를 종료하면 향후 사용에 유용한 일부 상태가 저장되지 않을 수 있습니다. 그러나 예를 들어 닫기 버튼을 클릭하여 올바르게 "닫기"하면 상태가 제대로 저장됩니다.

명령 줄에서 응용 프로그램을 올바르게 "닫는"방법이 있습니까? 이것이 애플리케이션마다 다를 수 있다는 것을 알고 있으므로 좀 더 일반적으로합시다. 다른 실행중인 애플리케이션에 신호를 보내는 방법과이 신호는 상단 막대에서 "닫기"버튼을 클릭하는 것처럼 작동합니까?


2
VNC를 사용하여 원격으로 데스크톱에 액세스 한 다음 그래픽으로 닫기를 클릭하면 너무 많은 오버 헤드가 발생한다고 가정해야합니다.
브라이언 스위프트

답변:


33

기본적으로 kill 명령은 SIGTERM실행중인 프로세스에 (종료 신호)를 보냅니다 . SIGKILL응답 할 기회없이 프로세스를 강제로 종료하는와 달리 , 프로세스가 SIGTERM신호를 가로 채어 정상적으로 종료 할 수 있습니다. 실제로 여부 않고 정상적으로 종료하면 프로세스 자체에 전적으로 의존한다; 그것은 쉽게 스스로를 죽이거나 신호를 완전히 무시할 수 있습니다.

SIGTERM명령 행에서 명시 적으로 작성하여 다른 신호 대신 전송 중인지 확인할 수 있습니다 .

kill -s TERM <pid>

1
예, OP의 전제는 거짓입니다. kill명령은 정상 종료를 시도합니다. 이 경우 응용 프로그램이 제대로 종료되지 않으면 손상된 것입니다. (대부분의 응용 프로그램은 손상되지 않았습니다.)
David Schwartz

2
Firefox가 (깨진) 것 같습니다. 내가 실행하면 kill -s TERM <firefox-pid>정상적으로 종료되지 않으며 다시 시작할 때 충돌 세션을 복구할지 묻습니다. : sigh :
윌슨 F

6

을 사용 pkill하지 않고 killTERM을 지정하는 구문은 다음과 같습니다.

pkill -TERM <process-name>

pkill kill과 비슷하지만 id 대신 프로세스 이름을 사용할 수 있습니다. man pkill

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