일반적으로이 방법으로 수행하는 것이 좋습니다.
"X"를 클릭하여 터미널 창을 닫으면 데스크탑 (GNOME, KDE 등)에서 터미널 응용 프로그램으로 "신호"를 보내 자체 종료하라는 메시지가 나타납니다. 이 셸에서 MATLAB을 실행하고 있기 때문에 터미널 응용 프로그램의 자식 프로세스로 간주됩니다.
따라서 부모 프로세스의 책임 중 하나는 자녀에게 이와 동일한 "신호"를 보내는 것입니다.
이제 방금 설명한 내용을 개념적으로 이해하면 실제 용어를 조금 더 대체 해 보겠습니다.
신호
먼저 "신호"를 사용하면 실제로 유닉스 프로세스로 보낼 수있는 서로 다른 신호 군 이 있습니다. 간단하게하기 위해 4 자주 볼거야, 거기에 SIGHUP
, SIGTERM
, SIGINT
,와 SIGKILL
.
SIGHUP
SIGHUP 신호는 제어 터미널이 닫힐 때 프로세스로 전송됩니다. 원래 직렬 회선 삭제 프로세스에 알리도록 설계되었습니다. 현대 시스템에서이 신호는 일반적으로 의사 또는 가상 터미널 제어가 닫 혔음을 의미합니다.
시그넘
SIGTERM 신호는 프로그램 종료를 일으키는 데 사용되는 일반 신호입니다. SIGKILL과 달리이 신호는 차단, 처리 및 무시 될 수 있습니다. 프로그램을 정중하게 종료하는 일반적인 방법입니다.
사인
사용자가 INTR 문자 (일반적으로 Cc)를 입력하면 SIGINT ( "프로그램 인터럽트") 신호가 전송됩니다.
시킬
SIGKILL 신호는 프로그램을 즉시 종료시키는 데 사용됩니다. 처리하거나 무시할 수 없으므로 항상 치명적입니다. 이 신호를 차단할 수도 없습니다.
참고 : 프로그램 실행 중에 + 를 SIGINT
사용 하여 명령 줄에서 프로그램을 "중단" 하면 전송됩니다 .CtrlC
어느 것이 사용되고 있습니까?
아마도 SIGTERM
창 환경에서 호출되어 터미널로 전달되는 것 같습니다. 그러면 터미널이 SIGHUP
MATLAB으로 전송 될 가능성이 높습니다 . 이 신호는 모든 프로세스에 로컬 정리 (파일 닫기, 프로세스 종료 등) 자체를 수행 할 수있는 기회를 제공합니다.
킬 명령
이름이 잘못된 명령을 사용하여 신호를 직접 보낼 수 있습니다 kill
. 따라서 SIGTERM
신호를 터미널이나 SIGHUP to MATLAB, you could determine their PID using
ps에 보내려면 다음 명령을 실행하여 신호를 보내십시오.
$ kill -SIGTERM <PID>
아니면 이거:
$ kill -SIGHUP <PID>
이 명령을 사용하여 전체 신호 목록을 얻을 수 있습니다.
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
...
...
신호에는 숫자가 있습니까? 종종 이름 대신 이름이 사용되는 것을 종종 볼 수 있습니다.
$ kill -15 <PID>
또는 -9
거의 모든 프로세스를 죽일 수 있는 악명 높은 .