![프로세스를 종료하는 비공격적인 방법은 무엇입니까? [복사]](https://linux55.com/image/87635/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A5%BC%20%EC%A2%85%EB%A3%8C%ED%95%98%EB%8A%94%20%EB%B9%84%EA%B3%B5%EA%B2%A9%EC%A0%81%EC%9D%B8%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
명령줄(예: Firefox 또는 Thunderbird)을 통해 프로그램을 닫고 싶습니다. 프로그램은 잘 작동하며 이론적으로는 파일 > 닫기를 선택하면 됩니다. 그러나 명령줄을 통해 이 작업을 수행하고 싶기 때문에 이는 옵션이 아닙니다. 프로세스를 종료할 수 있지만(예 pkill firefox
: ), 듣기로는 프로그램을 종료하는 매우 잔인한 방법입니다. 사실 저는 특히 프로그램이 중단될 때 최후의 수단으로 이 작업을 수행하는 데 익숙합니다. 솔직히 이것이 프로그램을 종료하는 올바른 방법인지 모르겠습니다. 응? 아니면 프로그램을 종료하는 더 좋은 방법이 있나요?
답변1
kill
프로세스에 신호를 보냅니다. TERM 신호는 기본적으로 전송됩니다. TERM 신호는 프로세스에 의해 "포착"될 수 있습니다. 즉, 신호를 모니터링하고 수신 시 조치를 취할 수 있습니다.
대부분의 경우 Linux 프로세스는 TERM 신호가 전송될 때 정상적으로 작동합니다. 즉, 자체적으로 정리되고 완전히 종료됩니다. 개발자가 이 상황을 올바르게 처리했다고 가정하면 이는 kill
많은 프로세스를 종료하는 완벽하게 유효한 방법입니다.
특정 프로세스에서 작동하는지 여부는 개발자에게 달려 있습니다.
포착할 수 없는 몇 가지 신호(예: KILL)가 있습니다. 를 kill
실행하여 KILL을 보냅니다 kill -9
. 이는 정리할 기회가 없기 때문에 프로세스에 더 파괴적입니다.
답변2
kill -15 [pid/name]
프로세스가 정리를 수행할 수 있도록 하는 "정상" 종료 로 사용됩니다.
"재정의" 종료 로 사용되어 kill -9 [pid/name]
프로세스를 즉시 종료합니다.
답변3
창 닫기를 시뮬레이션할 수 있습니다. 하지만 창을 안정적으로 식별하는 방법을 잘 모르겠습니다. (즉, 죽이지 않고 파이어폭스를 죽인다 gedit firefox-bug.txt
). 설명했듯이 기본적인 절충점은 사용자 상호 작용(확인 대화 상자 닫기)을 장려할지 여부입니다.