Zasadniczo powinno być w porządku robić to w ten sposób.
Kiedy klikniesz „X”, aby zamknąć okno terminala, wysyła „sygnał” z twojego pulpitu (GNOME, KDE itp.) Do aplikacji terminala, informując go, aby się zamknął. Ponieważ uruchamiasz MATLAB w tej powłoce, jest to proces potomny dla aplikacji terminalowej.
Tak więc częścią obowiązków bycia rodzicem jest to, że z kolei wysyłasz ten sam bliski „sygnał” do swoich dzieci.
Teraz, jeśli rozumiesz koncepcyjnie to, co właśnie wyjaśniłem, zastąpmy trochę bardziej prawdziwą terminologią.
sygnały
Po pierwsze z „sygnałem”, w rzeczywistości istnieje cała rodzina różnych sygnałów , które można wysłać do procesów uniksowych. Keep it simple istnieją 4, że będziesz często zobaczyć, SIGHUP
, SIGTERM
, SIGINT
, i SIGKILL
.
SIGHUP
Sygnał SIGHUP jest wysyłany do procesu, gdy jego terminal sterujący jest zamknięty. Pierwotnie został zaprojektowany, aby powiadomić proces upuszczenia linii szeregowej. W nowoczesnych systemach sygnał ten zwykle oznacza, że sterowanie pseudo lub wirtualnym terminalem zostało zamknięte.
SIGTERM
Sygnał SIGTERM jest ogólnym sygnałem używanym do powodowania zakończenia programu. W przeciwieństwie do SIGKILL, sygnał ten może być blokowany, obsługiwany i ignorowany. Jest to normalny sposób grzecznego wezwania programu do zakończenia.
SIGINT
Sygnał SIGINT („przerwanie programu”) jest wysyłany, gdy użytkownik wpisze znak INTR (zwykle Cc).
SIGKILL
Sygnał SIGKILL służy do natychmiastowego zakończenia programu. Nie można go traktować ani ignorować, dlatego jest zawsze śmiertelny. Nie można również zablokować tego sygnału.
UWAGA: SIGINT
jest wysyłany, gdy używasz Ctrl+, Caby „przerwać” program z linii poleceń, gdy jest on w trakcie działania.
który się przyzwyczaja?
Najprawdopodobniej SIGTERM
jest wywoływane przez środowisko okienkowe i przekazywane do terminala. Twój terminal najprawdopodobniej wtedy wyśle SIGHUP
do MATLAB. Ten sygnał daje wszystkim procesom możliwość wykonania dowolnego lokalnego czyszczenia (zamykanie plików, kończenie procesów itp.).
polecenie zabicia
Można wysyłać sygnały samemu za pomocą słabo nazwie polecenia kill
. Aby wysłać SIGTERM
sygnał do terminala lub SIGHUP to MATLAB, you could determine their PID using
ps`, a następnie uruchom polecenie, aby wysłać sygnał:
$ kill -SIGTERM <PID>
albo to:
$ kill -SIGHUP <PID>
Możesz uzyskać pełną listę sygnałów za pomocą tego polecenia:
$ 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
...
...
Zauważ, że sygnały mają liczby? Często zobaczysz, że są używane w ten sposób zamiast ich nazw:
$ kill -15 <PID>
Lub niesławny -9
, który może zabić prawie każdy proces.
Najprawdopodobniej jest to w porządku, ale stracisz dane w zależności od otwartych aplikacji. Na przykład, jeśli masz otwarty edytor plików, możesz stracić niektóre ze swoich zmian, jeśli nie zapiszesz i nie zamkniesz poprawnie. Jeśli się martwisz, po prostu wyloguj się / wyjdź z terminala poprawnie. Jeśli nie lubisz pisać
exit
lublogout
po prostu spróbujCtrl-D
.źródło
Ctrl-D
naprawdę dotyczy to tylko wiersza polecenia.