В целом это должно быть хорошо, чтобы сделать это таким образом.
Когда вы нажимаете «X», чтобы закрыть окно терминала, это означает, что он посылает «сигнал» с вашего рабочего стола (GNOME, KDE и т. Д.) В приложение терминала, сообщая ему, что он должен выключиться. Поскольку вы запускаете MATLAB в этой оболочке, он считается дочерним процессом для терминального приложения.
Таким образом, часть обязанностей быть родительским процессом заключается в том, что вы, в свою очередь, посылаете тот же самый «сигнал» своим детям.
Теперь, если вы понимаете концептуально то, что я только что объяснил, давайте заменим немного больше реальной терминологией.
сигналы
Во-первых, с помощью «сигнала» существует целое семейство различных сигналов, которые вы можете отправлять процессам Unix. Для того, чтобы держать его просто есть 4 , что вы часто будете видеть, SIGHUP
, SIGTERM
, SIGINT
, и SIGKILL
.
SIGHUP
Сигнал SIGHUP отправляется процессу, когда его управляющий терминал закрыт. Первоначально он был разработан, чтобы уведомить процесс сброса последовательной линии. В современных системах этот сигнал обычно означает, что управление псевдо или виртуальным терминалом было закрыто.
SIGTERM
Сигнал SIGTERM - это общий сигнал, используемый для завершения программы. В отличие от SIGKILL, этот сигнал может быть заблокирован, обработан и проигнорирован. Это нормальный способ вежливо попросить программу прекратить работу.
SIGINT
Сигнал SIGINT («программное прерывание») отправляется, когда пользователь вводит символ INTR (обычно Cc).
SIGKILL
Сигнал SIGKILL используется для немедленного завершения программы. Это не может быть обработано или проигнорировано, и поэтому всегда смертельно. Также невозможно заблокировать этот сигнал.
ПРИМЕЧАНИЕ: SIGINT
это то, что отправляется, когда вы используете « Ctrl+», Cчтобы «вырвать» программу из командной строки, когда она находится в середине выполнения.
какой привык?
Скорее всего, он 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
, который может убить практически любой процесс.