Экранный сеанс завершается при сбое программы

Я запускаю программу в сеансе экрана, если программа сработает, она перезапустится сама, но когда программа выйдет из строя, сеанс сеанса завершается.

Я хочу, чтобы сеанс экрана оставался открытым, поэтому программа может перезагрузиться. Есть ли способ сделать это?

Я запускаю Linux Debian 7 Wheezy

One Solution collect form web for “Экранный сеанс завершается при сбое программы”

Вопрос в том, как странно сработает программа? Первые две вещи, которые мне приходят в голову:

  • программа отправляет своим последним умирающим дыханием некоторые странные контрольные последовательности, которые позволяют screen также выходить из строя / заканчиваться / думать, что лучше не позволять вам это видеть.
  • программа отправляет сигналы своим родительским процессам ( screen или, возможно, промежуточную оболочку ), которая их завершает.

Следующие шаги я бы постарался:

  1. Как точно заканчивается screen ? Убивает ли он весь screen процесс или только собственное окно (параллельные команды запуска экрана все еще живы, отключается ли сеанс экрана)?
  2. Если вы запускаете программу из оболочки, можете ли вы поймать сигналы, поступающие из программы, используя ловушку ?
  3. Он по-прежнему завершает работу screen если вы перенаправляете stdout и stderr в файл (что делает файл, если он больше не разбивается – мне любопытно). Возможно, вы все еще можете смотреть программу с помощью tail -f .
  4. ОК, обход не даст интересной информации, но существует ли такая же проблема при использовании tmux вместо screen ?

Редактировать 1 (объявление 1): программа сбоев может запускаться непосредственно с экрана, например

 screen /usr/local/bin/your/crashing/program 

или с процессом оболочки между ними (например, вы запускаете экранное окно с любимой оболочкой, затем запускаете программу, например

 screen /usr/local/bin/your/crashing/program 

или иметь сценарий оболочки, который выполняет респаунирование с чем-то вроде

 bash -c 'while true ; do /usr/local/bin/your/crashing/program ; done' 

На выходе pstree какие процессы задействованы:

 xterm(309)---bash(311)---screen(230)---screen(231)---bash(234)-+-less(323) `-pstree(322) 

В моем случае у меня есть начальный screen (230 и 231) из bash (311) в окне xterm (309) с другим bash (234), из которого я запускал pstree | less pstree | less (322 и 323).

Экран завершается, если выполняется дочерний процесс. Это нормальное поведение, а не крушение. Поэтому, если ваша программа запускается непосредственно на экране и сбой, экран также завершается. Если у вас есть программа, запущенная вручную в оболочке, эта оболочка должна снова представить свое приглашение после сбоя программы. Если окно экрана закрывается в этом случае, что-то на самом деле странно.

Было бы полезно узнать немного о кольцевой развязке, например, как вы начинаете и воспитываете свою программу.

  • Как прокручивать экран или буфер tmux без приостановки приложения?
  • поиск текста на выходе терминала
  • Экспортировать содержимое демон экрана в файл
  • Как получить guake для обновления фоновых символов?
  • проблема с U-boot при запуске Linux в sd-карте
  • Экран GNU и Emacs
  • console vim в сеансе экрана: переназначить Ctrl-Shift-Left, Ctrl-Shift-Right, чтобы не удалять строки
  • Как мне перемещаться по панелям внутри окна в tmux, как на экране?
  • Комбинированный su и экран при запуске
  • awk или sed для соответствия регулярному выражению в определенной строке, выход true, если успех, false, иначе
  • Linux. Отправка команды на экран через сценарий оболочки?
  • Экран: текущий каталог в заголовке (не как заголовок)
  • Interesting Posts

    Временная синхронизация компьютеров по локальной сети с GPS-сервером NTP в локальной сети

    Получить определенную строку ниже строки grepped

    Сколько буферов находится в системе?

    Может ли Aura работать на других дистрибутивах Linux?

    Разница между параметрами командной строки «-» и «-» с префиксом?

    Что может заставить ps сообщать uid вместо имени пользователя?

    Как начать графический сеанс в Backtrack Linux

    В Linux разрешение «Write» эквивалентно «Выполнению» для каталогов?

    После обновления MongoDB он не запускается и журнал пуст

    Как изменить информацию о терминале tmux (в правом нижнем углу), называемую статусом – право на имя пользователя или хост?

    Удалите повторяющиеся строки из нескольких файлов в папке: проверьте только файлы в пределах диапазона

    Как проверить, какой клиент обращается к Unix?

    Является ли эта пропавшая ошибка зависимостей Python3 в Kazam Debian 8.5?

    Хорошо ли иметь несколько версий ядра Linux?

    Изменение скорости ввода выборки по умолчанию для ALSA

    Linux и Unix - лучшая ОС в мире.