응용 프로그램을 올바르게 종료하지 않고 터미널 창을 닫는 것이 해로운가요? LTS를 사용하여 내

Ubuntu 12.04 LTS를 사용하여 내 질문은 터미널 창에서 응용 프로그램을 시작하면 응용 프로그램을 올바르게 종료하지 않고 터미널 창을 닫는 데 나쁜 점이 있다는 것입니다. 예를 들어 MATLAB을 사용합니다. 터미널을 열고 타이핑

matlab -nodisplay -nodesktop -nosplash

그런 다음 많은 스크립트를 실행하십시오. 그럼 나도 할 수있어

exit

MATLAB을 종료 한 다음 터미널 창을 닫거나 터미널 창을 닫습니다. 이 두 방법의 차이점은 무엇입니까? 두 번째 방법은 어떻게 든 “해를 끼치나요”? 첫 번째 방법이 선호됩니까? 왜?



답변

일반적으로이 방법으로 수행하는 것이 좋습니다.

“X”를 클릭하여 터미널 창을 닫으면 데스크탑 (GNOME, KDE 등)에서 터미널 응용 프로그램으로 “신호”를 보내 자체 종료하라는 메시지가 나타납니다. 이 셸에서 MATLAB을 실행하고 있기 때문에 터미널 응용 프로그램의 자식 프로세스로 간주됩니다.

따라서 부모 프로세스의 책임 중 하나는 자녀에게 이와 동일한 “신호”를 보내는 것입니다.

이제 방금 설명한 내용을 개념적으로 이해하면 실제 용어를 조금 더 대체 해 보겠습니다.

신호

먼저 “신호”를 사용하면 실제로 유닉스 프로세스로 보낼 수있는 서로 다른 신호 군 이 있습니다. 간단하게하기 위해 4 자주 볼거야, 거기에 SIGHUP, SIGTERM, SIGINT,와 SIGKILL.

  • SIGHUP

    SIGHUP 신호는 제어 터미널이 닫힐 때 프로세스로 전송됩니다. 원래 직렬 회선 삭제 프로세스에 알리도록 설계되었습니다. 현대 시스템에서이 신호는 일반적으로 의사 또는 가상 터미널 제어가 닫 혔음을 의미합니다.

  • 시그넘

    SIGTERM 신호는 프로그램 종료를 일으키는 데 사용되는 일반 신호입니다. SIGKILL과 달리이 신호는 차단, 처리 및 무시 될 수 있습니다. 프로그램을 정중하게 종료하는 일반적인 방법입니다.

  • 사인

    사용자가 INTR 문자 (일반적으로 Cc)를 입력하면 SIGINT ( “프로그램 인터럽트”) 신호가 전송됩니다.

  • 시킬

    SIGKILL 신호는 프로그램을 즉시 종료시키는 데 사용됩니다. 처리하거나 무시할 수 없으므로 항상 치명적입니다. 이 신호를 차단할 수도 없습니다.

참고 : 프로그램 실행 중에 + 를 SIGINT사용 하여 명령 줄에서 프로그램을 “중단” 하면 전송됩니다 .CtrlC

어느 것이 사용되고 있습니까?

아마도 SIGTERM창 환경에서 호출되어 터미널로 전달되는 것 같습니다. 그러면 터미널이 SIGHUPMATLAB으로 전송 될 가능성이 높습니다 . 이 신호는 모든 프로세스에 로컬 정리 (파일 닫기, 프로세스 종료 등) 자체를 수행 할 수있는 기회를 제공합니다.

킬 명령

이름이 잘못된 명령을 사용하여 신호를 직접 보낼 수 있습니다 kill. 따라서 SIGTERM신호를 터미널이나 SIGHUP to MATLAB, you could determine their PID usingps에 보내려면 다음 명령을 실행하여 신호를 보내십시오.

$ 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거의 모든 프로세스를 죽일 수 있는 악명 높은 .


답변

가능하지만 열려있는 응용 프로그램에 따라 데이터가 손실됩니다. 예를 들어 파일 편집기가 열려 있으면 제대로 저장하고 종료하지 않으면 일부 변경 내용이 손실 될 수 있습니다. 걱정되는 경우 터미널을 올바르게 로그 아웃 / 종료하십시오. 당신이 입력 마음에 들지 않으면 exit또는 logout단지 시도 Ctrl-D.


답변