Действительно ли вредно закрыть окно терминала, правильно не выходя из приложения?

Попытайтесь использовать ssh escape-последовательность завершения соединения.

В ssh сессия, войти ~. (точка тильды). Вы не будете видеть символов, когда Вы введете их, но сессия сразу завершится.

$ ~.
$ Connection to me.myhost.com closed.  

От man 1 ssh

The supported escapes (assuming the default ‘~’) are:
 ~.      Disconnect.
 ~^Z     Background ssh.
 ~#      List forwarded connections.
 ~&      Background ssh at logout when waiting for forwarded 
         connection / X11 sessions to terminate.
 ~?      Display a list of escape characters.
 ~B      Send a BREAK to the remote system (only useful for SSH protocol
         version 2 and if the peer supports it).
 ~C      Open command line.  Currently this allows the addition of port 
         forwardings using the -L, -R and -D options (see above). It also
         allows the cancellation of existing remote port-forwardings using 
         -KR[bind_address:]port.  !command allows the user to execute a 
         local command if the PermitLocalCommand option is enabled in
         ssh_config(5).  Basic help is available, using the -h option.
 ~R      Request rekeying of the connection (only useful for SSH protocol 
         version 2 and if the peer supports it).
18
10.07.2018, 11:01
2 ответа

В целом это должно быть прекрасным, чтобы сделать это этот путь.

Когда Вы нажимаете "X" для закрытия окна терминала, которое отправляет "сигнал" от рабочего стола (GNOME, KDE, и т.д.) к терминальному приложению, говоря ему завершить работу себя. Так как Вы выполняете MATLAB в этой оболочке, это рассмотрело дочерний процесс к терминальному приложению.

Так часть обязанностей того, чтобы быть родительским процессом, то, что Вы в свою очередь отправляете этот тот же близкий "сигнал" своим детям.

Теперь, если Вы понимаете концептуально, что я просто объяснил затем, давайте займем место в немного большем количестве реальной терминологии.

сигналы

Сначала с "сигналом", существует на самом деле вся семья различных сигналов, что можно отправить к процессам Unix. Для хранения этого простым существуют 4, что Вы будете часто видеть, SIGHUP, SIGTERM, SIGINT, и SIGKILL.

  • SIGHUP

    Сигнал SIGHUP отправляется в процесс, когда его терминал управления закрывается. Это было первоначально разработано для уведомления процесса относительно отбрасывания последовательной линии. В современных системах этот сигнал обычно означает, что управление псевдотерминалом или виртуальным терминалом было закрыто.

  • SIGTERM

    Сигнал SIGTERM является универсальным сигналом, используемым для порождения завершения программы. В отличие от SIGKILL, этот сигнал может быть заблокирован, обработан и проигнорирован. Это - нормальный способ вежливо попросить, чтобы программа завершилась.

  • SIGINT

    SIGINT (“прерывание программы”) сигнал отправляется, когда пользователь вводит символ INTR (обычно C-c).

  • SIGKILL

    Сигнал SIGKILL используется для порождения непосредственного завершения программы. Это не может быть обработано или проигнорировано и поэтому всегда фатальное. Также не возможно заблокировать этот сигнал.

Примечание: SIGINT то, что отправляется, когда Вы используете Ctrl+C для "повреждения" программы из командной строки, в то время как это посреди выполнения.

какой привыкает?

Скорее всего, SIGTERM называется Вашей оконной средой и переданной к Вашему терминалу. Ваш терминал затем, скорее всего, затем отправляет SIGHUP вниз к MATLAB. Этот сигнал дает всем процессам возможность сделать любую локальную очистку (заключительные файлы, заканчивая процессы, и т.д.) сами.

уничтожьте команду

Можно отправить сигналы сами с помощью плохо именованной команды, 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, который может уничтожить в значительной степени любой процесс.

22
27.01.2020, 19:46
  • 1
    я всегда думал те числа, был отрицателен, но они - на самом деле параметры командной строки. Я изучил что-то новый :D –  Thomas 14.07.2013, 05:22
  • 2
    ПОНУКНИТЕ - HangUP - является сигналом, который отправляется, если Вы "освобождаете строку" для терминала, например, Вы были подключены к серверу Unix модемом. Это - вероятно, самый "нежный" сигнал, которые завершают процесс. Большинство демонов не выйдет, но перечитает свои файлы конфигурации на, ПОНУКАЮТ. Команда nohup позволяет Вам позволять фоновому процессу продолжиться после того, как оболочка закроется. Команды как экран переживают зависание, и изолирует команды в нем от, ПОНУКАЮТ. –  Baard Kopperud 14.07.2013, 22:46
  • 3
    @BaardKopperud - спасибо, я намеренно, уехало, ПОНУКАЮТ, не хотел путать обсуждение. –  slm♦ 15.07.2013, 04:30
  • 4
    @BaardKopperud - Я думаю, на что Вы указываете, это: "Сигнал SIGHUP отправляется в процесс, когда его терминал управления закрывается. Это было первоначально разработано для уведомления процесса относительно отбрасывания последовательной линии. В современных системах этот сигнал обычно означает, что управление псевдотерминалом или виртуальным терминалом было закрыто", я признаю, что лгал немного в моем описании, но пытался сохранить его простым. –  slm♦ 15.07.2013, 04:59
  • 5
    @BaardKopperud - Я чувствовал себя виновным, таким образом, я изменил свой ответ для отражения более точно, что продолжается.Спасибо! –  slm♦ 15.07.2013, 05:03

Это, скорее всего, в порядке, но Вы потеряете данные в зависимости от того, какие приложения Вы имеете открытый. Например, если у Вас есть открытый редактор файлов, можно потерять некоторые изменения, если Вы не сохраняете и выходите правильно. Если Вы волнуетесь, просто выходите из системы/выходите терминал правильно. Если Вам не нравится вводить exit или logout просто попробуйте Ctrl-D.

2
27.01.2020, 19:46
  • 1
    Почему это было бы лучше? Приложение собирается получить SIGHUP вместо SIGTERM, но это все еще становится уничтоженным сигналом, таким образом, я точно не звонил бы, это "сохраняет и выходит правильно" из –  Michael Mrozek♦ 14.07.2013, 12:15
  • 2
    До Ctrl-D, то действительно единственное применяется в командной строке. –  Mark 14.07.2013, 15:24

Теги

Похожие вопросы